Visão geral
Para fazer qualquer tipo de transação no blockchain Bitcoin, você precisará de uma chave pública ou um endereço Bitcoin. Neste guia, abordaremos como gerar um novo endereço Bitcoin em JavaScript usando CyrptoCoinJS.
O que é um endereço Bitcoin?
Você pode pensar em um endereço Bitcoin como um número de conta para sua conta bancária. A principal diferença é que Ele é usado para direcionar o bitcoin durante uma transação em vez de armazená-lo. Um endereço Bitcoin é uma string que combina letras e dígitos que representam um destino na rede bitcoin. Sempre que alguém quiser receber Bitcoin, o ideal é gerar um novo endereço exclusivo de uso único para cada transação usando um aplicativo ou código de carteira. Existem três tipos de endereços Bitcoin:

1. Legado (P2PKH): Legado é o endereço bitcoin original; todos eles começam com um. É o mais compatível e suportado por carteiras. Exemplo:1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2

2. SegWit aninhado (P2PSH): SegWit aninhado é uma melhoria no Legacy; eles têm uma taxa de transação 40% menor do que os endereços legados e têm assinatura múltipla. Começa com 3.
Exemplo: 3EktnHQD7RiAE6uzMj2ZifT9YgRrkSgzQX

3. Native SegWit (Bech32): SegWit, abreviação de Segregated Witness, tem tamanhos de transação menores; eles podem economizar 80% das taxas de transação em comparação com o Legacy. Eles começam com bc1.
Exemplo: bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4
Como é gerado um endereço Bitcoin?
• Uma string aleatória de chave privada composta por 64 caracteres (hex) (256 bits / 32 bytes) é gerada primeiro, pode ser qualquer número entre 0 e ≤ n-1, onde n é uma constante (n = 1,1578*1077) .
Uma string de número de 256 bits que é menor que n é alimentada ao algoritmo de hash SHA256 que então gera um novo número de 256 bits. Esta é a nossa chave privada.
Por exemplo:



Name:  Capturar 1.PNG
Views: 23
Size:  6.5 KB

• Uma chave pública de 128 caracteres (hex) (64 bytes) é então derivada da chave privada gerada usando '04' como prefixo. A chave pública é gerada a partir da chave privada usando secp256k1, que é uma curva de ECDSA (Elliptic Curve Digital Signature Algorithm). Assim, uma chave pública é gerada usando a fórmula P = p*G, onde p é a chave privada e G é o ponto gerador. O ponto gerador G é um ponto definido na curva secp256k1.
Por exemplo:

Name:  Capturar 2.PNG
Views: 16
Size:  7.1 KB


Name:  Capturar 3.PNG
Views: 17
Size:  79.5 KB


• Um endereço de 34 caracteres é gerado pela aplicação do algoritmo de hash SHA256 na chave púbica e, em seguida, computando o hash RIPEMD160 do resultado. A = RIPEMD160(SHA256(P)), onde P é a chave pública e A é o endereço Bitcoin. Os endereços Bitcoin são sempre codificados como Base58Check, que usa 58 caracteres (sistema numérico Base58) e uma soma de verificação para evitar ambiguidade, erros na transcrição de endereços e ajudar na legibilidade humana.
Por exemplo:


Name:  Capturar 4.PNG
Views: 16
Size:  6.4 KB


Nota: Uma chave privada pode ser gerada para a chave pública, mas a pública não pode ser convertida de volta para a chave privada, pois o algoritmo é uma função unidirecional.
O que é CryptoCoinJS?
CryptoCoinJS é uma biblioteca JavaScript que ajuda você a interagir com diferentes criptomoedas como Bitcoin, Litecoin e Dogecoin.
Gerando um endereço Bitcoin em JavaScript
Primeiro, precisaremos instalar a biblioteca CryptoCoinJs. Usaremos o npm (Node Package Manager) que vem com o node.js, para instalar a biblioteca.

Vamos verificar se temos o node.js instalado em nosso sistema digitando o seguinte em nosso terminal/cmd:


Name:  Capturar 5.PNG
Views: 16
Size:  3.5 KB


Isso deve retornar a versão instalada do node.js em seu sistema. Se houver erros, baixe e instale a versão LTS do node.js em seu site oficial.

Agora, vamos criar um novo diretório de projeto e torná-lo nosso diretório de trabalho


1 mkdir Bitcoin
2 CD Bitcoin

Name:  Capturar 6.PNG
Views: 13
Size:  5.3 KB


Para instalar a biblioteca, digite o seguinte em seu terminal/cmd:


1 npm eu moeda

O problema mais comum nesta etapa é uma falha interna com `node-gyp`. Você pode seguir as instruções de instalação do node-gyp aqui.

Observação: você precisará que sua versão do python corresponda a uma das versões compatíveis listadas nas instruções acima se encontrar o problema do node-gyp.

Outro problema comum é um cache obsoleto; limpe seu cache npm simplesmente digitando o abaixo em seu terminal:


1
npm cache limpo

Se tudo der certo, o CryptoCoinJS será instalado em seu sistema.

Agora abra um editor de texto de sua escolha e crie um novo arquivo javascript address.js e copie e cole o seguinte nele:


Name:  Capturar 7.PNG
Views: 17
Size:  21.7 KB


Explicação do código acima

Linha 1: Importando a biblioteca CryptoCoinJS.

Linha 2: Criando um endereço aleatório com chaves usando o método Coinkey.createRandom e armazenando-o na variável wallet.

Line3: Imprimindo a chave privada no console junto com um aviso.

Line4: Imprimindo o endereço no console junto com uma string.

Salve o arquivo de script e execute-o usando o comando a seguir.


1
endereço do nó

Ele dará uma saída semelhante a esta.


Conclusão
Parabéns por criar seu próprio endereço Bitcoin que você pode usar para receber fundos! Existem muitos algoritmos e funções que são usados em conjunto para criar a funcionalidade no software da sua carteira favorita. Agora você conhece um pequeno pedaço dele e deu uma olhada atrás da cortina para ver o funcionamento interno!

Assine nossa newsletter para mais artigos e guias sobre Ethereum. Se você tiver algum feedback, sinta-se à vontade para entrar em contato conosco via Twitter. Você sempre pode conversar conosco em nosso servidor da comunidade Discord, apresentando alguns dos desenvolvedores mais legais que você já conheceu :)