Author

Topic: [Tutorial] Como gerar endereços Bitcoin personalizados (inclusive Segwit) (Read 508 times)

newbie
Activity: 6
Merit: 0
legal, incrivel saber que todas as plataforma podem usufruir dessa ferramenta =D
legendary
Activity: 3304
Merit: 1617
Legal o seu tutorial @Loganota. É bom deixar claro para os novatos não usarem serviços ONLINE de geração Vanity pois existem várias denuncias de roubos de chave privada. Parabéns pelo artigo. Wink Wink
hero member
Activity: 1778
Merit: 882
Como assim só achará uma parte?

Então, a parte técnica eu não sei explicar mas pelo que eu entendi você pega uma chave pública e gera o endereço vanity usando ela como referência, para você gastar os fundos do endereço vanity você precisará ter posse tanto da chave privada que você gerou quanto da chave privada associada a chave pública que você usou de referência.

Esse cara explicou tecnicamente:

If it's done right, the party generating the address for you has no access to the private key, only the public key.

It works like this:

1) You generate a random 256-bit integer less than the SECP256k1 generator. You keep this secret. (Effectively, an ECDSA private key.)

2) You compute the corresponding EC point on the SECP256k1 curve. You share this with whoever is finding the vanity address for you. (This is the ECDSA public key that corresponds to the private key you generated in step one.)

3) The person working out the vanity address for you tries various 256-bit integers also less than the SECP256k1 generator. They compute the corresponding EC point and add it to the EC point you sent them (from step two). They then hash this and see if it produces the desired vanity address. They repeat this over and over until they find a 256-bit integer that works. They give this integer to you. (And the world, it need not be kept secret.)

4) You add the 256-bit integer they found to the 256-bit integer you generated in step 1 and reduce it modulo the SECP256k1 generator.

5) You now have the private key, and they don't. (And you can prove that they cannot generate the private key from just the information you gave them unless ECDSA is fundamentally broken.)

In ECDSA, you convert a private key to a public key by multiplying by the generator. Division is impossible.

The vanity address generation scheme above works because: (A+B)*G = AG + BG

You generate A and AG, but give them only AG.

They try various different B's, calculating the AG+BG for each one to find the right one for the vanity address.

They give you B. You can now compute A+B (the secret key corresponding to the public key AG+BG) but nobody else can since they do not know A.

Computing A from AG would mean breaking ECDSA fundamentally. All you gave them is AG, an ECDSA public key. If they could figure out the private key to your new account (A+B), they could also figure out A. So if they could figure out the private key to your vanity account, they could also figure out the private key you created in step 1. But all you gave them was the corresponding public key. So any compromise of the vanity account would mean they could compromise a private key given only its corresponding public key.
legendary
Activity: 2688
Merit: 2297
Pessoal, atualizando o tópico, além de você poder gerar endereços para uso próprio, descobri que existe um modo de você gerar para outras pessoas e receber por isso. Existe uma pool (que fui descobri só hoje) onde alguém pode fazer um pedido por um determinado endereço com um determinado prefixo e tem um valor predefinido também a quem achar a solução. Neste caso você não fará somente uma busca por um determinado endereço, mas buscará por ele com uma chave pública já definida, assim, quem achar a solução, achará somente uma parte dela para que você não tenha a posse da chave privada da pessoa que pediu. Tem umas recompensas bem legais lá, não sei se financeiramente vale a pena.

Como assim só achará uma parte?
hero member
Activity: 1778
Merit: 882
Pessoal, atualizando o tópico, além de você poder gerar endereços para uso próprio, descobri que existe um modo de você gerar para outras pessoas e receber por isso. Existe uma pool (que fui descobri só hoje) onde alguém pode fazer um pedido por um determinado endereço com um determinado prefixo e tem um valor predefinido também a quem achar a solução. Neste caso você não fará somente uma busca por um determinado endereço, mas buscará por ele com uma chave pública já definida, assim, quem achar a solução, achará somente uma parte dela para que você não tenha a posse da chave privada da pessoa que pediu. Tem umas recompensas bem legais lá, não sei se financeiramente vale a pena.
hero member
Activity: 1778
Merit: 882
Valeu @Loganota! Era isso mesmo (e outro problema que diferente que apareceu)..

A 1060 pega umas 40 milhões de chaves por segundo, a 1070 pega 60 porém com mais de 3 ao mesmo tempo essa taxa não se mantem, consegui no máximo umas 150 milhões/segundo..



e pela GPU não da pra usar o comando "-r" que da pra botar [sS5][aA4][bB8][oO][tT7][aA4][gG6][eE3] pra demorar menos tempo com 3 caracteres ao invés de 2..

mais de 6 caracteres = uma eternidade..

Que bom que deu certo  Smiley

Realmente, pela GPU não tem como definir dessa maneira, não sei por que... se tem alguma incompatibilidade técnica quanto a isso ou só não foi implementado mesmo.
legendary
Activity: 2688
Merit: 2297
Valeu @Loganota! Era isso mesmo (e outro problema que diferente que apareceu)..

A 1060 pega umas 40 milhões de chaves por segundo, a 1070 pega 60 porém com mais de 3 ao mesmo tempo essa taxa não se mantem, consegui no máximo umas 150 milhões/segundo..



e pela GPU não da pra usar o comando "-r" que da pra botar [sS5][aA4][bB8][oO][tT7][aA4][gG6][eE3] pra demorar menos tempo com 3 caracteres ao invés de 2..

mais de 6 caracteres = uma eternidade..
hero member
Activity: 1778
Merit: 882
Eu nunca consegui minerar os legacy com GPU, apenas com CPU. Alguém sabe o motivo? Não lembro o erro que dava, se era nos CUDAs ou o que.. Tem como usar mais que uma GPU pra fazer o trabalho?

Agora com esse tutorial vou tentar criar um P2SH Cheesy valeu @Loganota! (voltarei quando tiver merits)

Tem como sim sabotag3x, é só setar todas as GPUs que você quer utilizar. Por exemplo, além do parâmetro -D 0:0 que eu coloquei, você coloca

Code:
oclvanitygen -D 0:0 -D 0:1 -D 0:2 1Teste

E assim por diante, até setar todas que você quer.

Dá esse erro:


Sim, esse arquivo está na mesma pasta do oclvanitygen.. não sei o que é, nunca consegui minerar pela GPU, queria testar a velocidade.

Estranho, muda o cmd pra pasta em que estão os arquivos. Só pegar o diretório da pastar e dar o comando

Code:
cd "Diretório da pasta"

No meu caso seria
Code:
cd C:\vanitygen-0.22-win

Porque seu cmd está apontando pro system32, talvez seja isso. Outro jeito é como eu falei, na pasta onde está o programa, você segura shift e clica com o botão auxiliar e clicar em abrir janela de comando aqui.

Tem esse tópico aqui também de um cara com o mesmo erro: https://bitcointalk.org/index.php?topic=529407.5
legendary
Activity: 2688
Merit: 2297
Eu nunca consegui minerar os legacy com GPU, apenas com CPU. Alguém sabe o motivo? Não lembro o erro que dava, se era nos CUDAs ou o que.. Tem como usar mais que uma GPU pra fazer o trabalho?

Agora com esse tutorial vou tentar criar um P2SH Cheesy valeu @Loganota! (voltarei quando tiver merits)

Tem como sim sabotag3x, é só setar todas as GPUs que você quer utilizar. Por exemplo, além do parâmetro -D 0:0 que eu coloquei, você coloca

Code:
oclvanitygen -D 0:0 -D 0:1 -D 0:2 1Teste

E assim por diante, até setar todas que você quer.

Dá esse erro:


Sim, esse arquivo está na mesma pasta do oclvanitygen.. não sei o que é, nunca consegui minerar pela GPU, queria testar a velocidade.
hero member
Activity: 1778
Merit: 882
Eu nunca consegui minerar os legacy com GPU, apenas com CPU. Alguém sabe o motivo? Não lembro o erro que dava, se era nos CUDAs ou o que.. Tem como usar mais que uma GPU pra fazer o trabalho?

Agora com esse tutorial vou tentar criar um P2SH Cheesy valeu @Loganota! (voltarei quando tiver merits)

Tem como sim sabotag3x, é só setar todas as GPUs que você quer utilizar. Por exemplo, além do parâmetro -D 0:0 que eu coloquei, você coloca

Code:
oclvanitygen -D 0:0 -D 0:1 -D 0:2 1Teste

E assim por diante, até setar todas que você quer.
legendary
Activity: 2688
Merit: 2297
Eu nunca consegui minerar os legacy com GPU, apenas com CPU. Alguém sabe o motivo? Não lembro o erro que dava, se era nos CUDAs ou o que.. Tem como usar mais que uma GPU pra fazer o trabalho?

Agora com esse tutorial vou tentar criar um P2SH Cheesy valeu @Loganota! (voltarei quando tiver merits)
full member
Activity: 532
Merit: 152
Excelente post!!
Já havia usado o vanitygen para gerar wallet convencional.
O de segwit me interessa mais. Ficando mais popular, (pois ainda está meio que em teste o esquema mencionado) irei fazer um endereço personalizado segwit.
hero member
Activity: 1498
Merit: 557
Obrigado pelos suados Merits galera  Grin

Mesmo não recebendo muitos, é bom a gente ir fazendo posts construtivos pra ver se alguém consegue virar uma fonte aqui na nossa aba e a gente possa rodar esses Merits.

Além do mais, esse tutorial serviu de muito aprendizado para mim também porque muitas das coisas que estão nele eu não sabia até ontem. Penei para poder fazer esse gerador de Segwit rodar, o software tá tão inicial que se você der um comando que ele não aceite, ele simplesmente não faz nada, não dá aviso nenhum, perdi algum tempo até fazer esse troço funcionar Tongue
Foi uma navalha que realmente acabou cortando para os dois lados, de um lado as infindáveis (e já saturadas) postagens de notícias em busca de merits e, do outro, posts que verdadeiramente agregam! Pega aí, o segundo merits que eu dou até hoje... merecido Smiley
full member
Activity: 476
Merit: 128
Bem bacana o tutorial. Agora vou poder criar meu endereço personalizado  Grin

Infelizmente meus merits já acabaram, mas esse belo post serve como argumento para pleitear nosso merits source junto ao theymos
hero member
Activity: 1778
Merit: 882
Obrigado pelos suados Merits galera  Grin

Mesmo não recebendo muitos, é bom a gente ir fazendo posts construtivos pra ver se alguém consegue virar uma fonte aqui na nossa aba e a gente possa rodar esses Merits.

Além do mais, esse tutorial serviu de muito aprendizado para mim também porque muitas das coisas que estão nele eu não sabia até ontem. Penei para poder fazer esse gerador de Segwit rodar, o software tá tão inicial que se você der um comando que ele não aceite, ele simplesmente não faz nada, não dá aviso nenhum, perdi algum tempo até fazer esse troço funcionar Tongue

legendary
Activity: 2352
Merit: 1121
☢️ alegotardo™️
Boa Loganota.
Eu já tinha pego esse comentário seu com o sabotag3x por aí, agora aqui ficou bem mais fácil, detalhado e mastigadinho pra quem quiser gerar seus endereços.

Fico te devendo devendo os Merits (minha lista já tá grande) pois acho que o Theimos desistiu mesmo das novas fontes de méritos.
hero member
Activity: 1120
Merit: 540
Duelbits - Play for Free | Win for Real
Muito bom, belo tutorial vou dar uma meritada  Grin
E todo mundo ficou babando com a Hot Wallet da fox  Roll Eyes
@Pumared um dia chegamos lá rrsrs com estratégias certas... que show de meritada tá esse tópico, hein? rsrs eu contribui com o pouco que eu tenho, espero que o forum br continue assim, mais merits pra distribuir pra gente rsrs..
hero member
Activity: 1316
Merit: 407
Top Crypto Casino
Muito bom, belo tutorial vou dar uma meritada  Grin
E todo mundo ficou babando com a Hot Wallet da fox  Roll Eyes
hero member
Activity: 1120
Merit: 540
Duelbits - Play for Free | Win for Real
Muito bom.

merit system funcionando rsrs

Precisamos de um merit source mesmo. Esse topico merecia muito mais merits.

Quando virar full member pretendo fazer uma aplicação lá também.
merecia mesmo, minha parte já fiz

Muito interessante, não sabia que dava para fazer vanity nesses novos endereços, a gente se acostumou muito com os endereços legacy.
legendary
Activity: 2352
Merit: 6089
bitcoindata.science
Muito bom.

merit system funcionando rsrs

Precisamos de um merit source mesmo. Esse topico merecia muito mais merits.

Quando virar full member pretendo fazer uma aplicação lá também.
full member
Activity: 518
Merit: 147
Belo tutorial, mandou MUITO, @Loganota!

Já havia utilizado o o Vanitygen pra gerar uns Legacys, vou esperar agora sair a versão de Windows pra gerar um SegWit.
sr. member
Activity: 476
Merit: 314
Muito bom. Lembrando que o @nullius deixou claro de que o programa dele ainda é experimental.

Muitas pessoas perguntam: Eu poderia usar isso para pesquisar um endereço completo? Sim, poderia, mas a quantidade de caracteres é tão grande que em teoria demoraria mais que a idade do universo para você encontrar a private key.

Só pra deixar "anexado" ao post, pra quem tiver curiosidade:
Ser acertado por um raio em dia de chuva: 1 em 1,500,000
Acertar na Mega da virada com um unico bilhete: 1 em 50.063.860
Acertar a private key desejada na primeira tentativa do computador: 1 em 1,461,501,600,000,000,000,000,000,000,000,000,000,000,000,000,000 (2^160). - Vale a pena dizer que vale mais a pena tentar encontrar um endereço com um saldo do que tentar encontrar o "1meunomecompletonoenderecomaisalgo"
hero member
Activity: 1778
Merit: 882
Pessoal, vocês já devem ter percebido que algumas pessoas utilizam endereços personalizados, como por exemplo a Hot Wallet da FoxBit: 1FoxBitjXcBeZUS4eDzPZ7b124q3N7QJK7

Muitos já sabem o processo de como gerar esses endereços personalizados, inclusive tinhamos um tópico antigo do @sabotag3x, mas que redirecionava para um site dele já extinto (Ele ainda não podia postar imagem  Tongue).

Naquela época, só tinhamos os endereços legacy, aqueles que começam com 1Talcoisa. Hoje já existem os endereços Segwit, e estes também podem ser personalizados e vou ensinar como fazer os dois neste tópico aqui. Infelizmente, o gerador para os endereços legacy antigos são muito mais eficientes, dá pra utilizar GPU, é muito mais rápido e personalizável, mas também é legal ter um endereço Segwit personalizado.

Infelizmente, o gerador de endereços Segwit por enquanto não tem versão para Windows, só pra Linux...

Estes passos eu fiz no Ubuntu naquele modo "Live USB" no qual ele roda somente na memória ram e não é preciso instalá-lo na máquina.

Bem, dito isso vamos ao tutorial:

Endereços Legacy

Primeiramente, podemos baixar os arquivos necessários por meio deste tópico (agradecimento ao @samr7): https://bitcointalksearch.org/topic/vanitygen-vanity-bitcoin-address-generatorminer-v022-25804

Link direto dos binários para windows: https://github.com/downloads/samr7/vanitygen/vanitygen-0.22-win.zip

Primeiro, é necessário extrair o arquivo. Após extraído, abra a janela de comando (ou PowerShell) apontando para a pasta para onde foram extraídos os arquivos (Segurar o shift e clicar com o botão auxiliar mostrará a opção)

Para gerar os endereços utilizando a CPU digite o seguinte comando:

Palavra Teste e no começo do endereço como exemplo.

Code:
vanitygen64 1Teste

O que aparecerá no prompt de comando é o seguinte:



A última parte dá uma informação da probabilidade do endereço ser encontrado e em quantas horas deve demorar para se atingir 50% de probabilidade.
Lembrando que a cada caractere o tempo aumenta exponencialmente, a questão da probabilidade e o tempo é somente um indicativo, se você tiver com sorte pode achar o endereço em 1 minuto ou em 10 horas. É tentativa e erro.

Sempre lembre de utilizar o 1 na frente porque endereços legacy sempre começam com 1.

Caso não queira que a palavra não esteja no início pode utilizar o seguinte comando:

Code:
vanitygen64 -r Teste

Caso não deseje que a palavra seja case sensitive (Ou seja, que ela esteja no endereço exatamente como digitou, por exempo teste e não tESte) você pode utilizar o seguinte comando utilizando o parâmetro -i

Code:
vanitygen64 -i 1Teste

Caso você tenha uma GPU e deseja utilizá-la para gerar endereços personalizados você deve utilizar o 'oclvanitygen' e selecionar o dispositivo no qual você quer gerar o endereço. Para que apareçam os dispositivos digitem o seguinte comando:

Code:
oclvanitygen -d 0:0 1Teste

Aparecerá os dispositivos como a seguir:



Para utilizar a GeForce 940MX eu preciso utilizar os parâmetros 0:0. Como exemplo, se eu quisesse utilizar a  Intel(R) HD Graphics 620 eu precisaria do parâmetro 1:0

Assim, para utilizar a sua GPU digite o seguinte comando:

Code:
oclvanitygen -D 0:0 1Teste



E você terá o endereço gerado em um tempo muito mais rápido (só olhar a previsão para a probabilidade de 50% e comparar com a CPU).

Endereços Segwit - Disponível somente para linux no momento. Tutorial feito no Ubuntu via Live USB

Quem fez este gerador foi o usuário @nullius neste tópico: https://bitcointalksearch.org/topic/segvan-segwit-vanity-address-bulk-address-generator-2934774

Antes de tudo, é preciso baixar uma biblioteca para que o programa possa ser compilado. Para isso abram o Terminal e digitem:

Code:
sudo apt-get install libssl-dev

Assim que estiver instalado essa biblioteca, o próximo passo é fazer o download do projeto no github: https://github.com/nym-zone/segvan

Com o arquivo baixado, extraia o arquivo e na pasta extraída abram uma janela do Terminal. (Só clicar com o botão auxiliar dentro da pasta e vai ter a opção).

Assim que abrir deem o comando:
Code:
make

Este processo fará o gerador ser compilado. Passado alguns segundos vocês estarão aptos a gerar o endereço Segwit, tanto bech32 quanto p2sh.

Por exemplo, se você deseja gerar um endereço que tenha "teste" em bech32, dê o seguinte comando:

Code:
./segvan -r teste

O resultado vocês podem ver na imagem a seguir:



Obtive o seguinte endereço: bc1qteste6zycuc4vqzlghde3ksq3j234q83stc9hk

Com a chave privada respectiva: LDYnfA8Kz7ApfSa9ZsLNedViZFvgfPZkZh42vqbsqJ4T1MoTksmg

Como endereços bech32 são somente com letras minúsculas, não faz muita diferença setar se você quer case sensitive ou não.

Para endereços p2sh você pode utilizar o seguinte comando para case insensitive:

Code:
./segvan -R teste

Ou se você quiser case sensitive

Code:
./segvan -R -I teste

Fiz o teste com o a palavra TESTE em letras maiúsculas e o resultado obtido foi o seguinte:



A lista completa de comandos é essa aqui:

Code:
Vanity generation mode:

-r [pattern] Search for bech32 address matching pattern
-R [pattern] Search for Segwit nested P2SH address matching pattern
-I Case-*sensitive* search; does not affect bech32
-i Case-insensitive search (default)

Rapid bulk address generation mode:

-b [naddr] Generate naddr bech32 addresses
-3 [naddr] Generate naddr Segwit nested P2SH ("3") addresses

Espero que tenha ajudado alguém que tenha interesse neste tipo de curiosidade e me desculpem caso não fique algo claro, principalmente para o gerador em Segwit já que é no Ubuntu e eu não domino muito. O gerador para Segwit ainda é muito novo e ainda há muito a ser melhorado.

Muitas pessoas perguntam: Eu poderia usar isso para pesquisar um endereço completo? Sim, poderia, mas a quantidade de caracteres é tão grande que em teoria demoraria mais que a idade do universo para você encontrar a private key.


Jump to: