Técnico
Este é um guia técnico completo do bitcoin.
Cada página contém explicações em texto simples e diagramas de como as diferentes partes do bitcoin funcionam. Elas também incluem exemplos do mundo real e ferramentas para te ajudar a trabalhar com dados brutos do bitcoin.
Então, se você realmente quer saber como o bitcoin funciona por baixo dos panos, este guia é para você.
Como se tornar um programador de bitcoin
Incluí muitos exemplos de código ao longo deste guia técnico para te ajudar a escrever seus próprios scripts.
Isso porque a melhor forma de aprender a se tornar um desenvolvedor de bitcoin é, de fato, escrever código.
Os exemplos de código ficam nestas caixas
A maioria dos exemplos de código está em Ruby porque acho que é a linguagem mais fácil de ler.
Se você não usa Ruby, deve conseguir usar os trechos de código como referência para reescrever o código na linguagem de programação de sua escolha.
Você pode ler sobre como o bitcoin funciona o quanto quiser, mas, até começar a programar, cometer erros (e você vai cometer) e construir algumas ferramentas úteis, você nunca vai progredir. Então não tenha medo de tentar. Todos nós precisamos começar de algum lugar.
E se eu consegui aprender a fazer coisas com bitcoin, você também consegue.
De qualquer forma, não existe uma única "melhor" maneira de começar a trabalhar com bitcoin, mas se você é completamente novo e não faz ideia de por onde começar, é isto que eu recomendaria…
Instale o Linux (opcional)
Isto é completamente opcional, mas eu recomendaria instalar o Linux.
- Xubuntu – Esta é a minha distribuição Linux de escolha. É simplesmente o popular Ubuntu combinado com o leve e funcional ambiente de desktop XFCE. É fácil de usar e é um bom ponto de partida se você está vindo do Mac ou do Windows, porque tudo simplesmente funciona logo de cara.
Eu gosto muito do Linux para trabalho de programação. O Linux te dá controle completo sobre o seu sistema, e parece um ambiente natural para escrever seus próprios programas e ferramentas, porque nada fica escondido de você em nome da sua própria segurança ou conveniência.
Eu migrei para o Linux há mais de uma década, e nunca me arrependi desde então – senti que ganhei liberdade sobre o meu sistema operacional e nunca quis voltar atrás.
Obviamente, se você já é proficiente com o seu ambiente de desenvolvimento atual, fique com ele. Mas se você quer melhorar na programação e tem se sentido limitado de alguma forma até agora, experimente usar o Linux.
Instale o Bitcoin Core
Se você vai trabalhar com bitcoin, é uma boa ideia instalar o Bitcoin Core (o programa original do bitcoin).
Há alguns benefícios em rodar seu próprio nó local de bitcoin:
- Acesso a dados brutos do bitcoin. Ao rodar um nó completo no seu computador local, você pode acessar de forma rápida e fácil dados brutos de bloco e transação sem ter que depender de uma API de terceiros:
bitcoin-cli getrawtransaction <txid> bitcoin-cli getblock <hash> - Ferramentas úteis de linha de comando. O programa Bitcoin Core vem acompanhado de um conjunto de ferramentas de linha de comando que eu uso regularmente para depuração e decodificação. Aqui estão alguns exemplos úteis:
bitcoin-cli decoderawtransaction <dados brutos da transação> bitcoin-cli decodescript <script em hex> - Enviar transações brutas. Se você está no ramo de construir suas próprias transações brutas, pode enviá-las para a rede bitcoin através do seu próprio nó local:
bitcoin-cli sendrawtransaction <dados brutos da transação>
Dependendo do tipo de trabalho que você está fazendo com bitcoin, você pode ou não precisar rodar seu próprio nó completo do Bitcoin Core. Mas se você não tem certeza, é bom tê-lo ali de qualquer forma.
Você pode listar todos os comandos disponíveis rodando bitcoin-cli help.
Use sua linguagem de programação favorita
Você pode trabalhar com bitcoin em qualquer linguagem de programação que quiser, então é melhor usar a sua favorita.
Você tem mais chance de sucesso se trabalhar com uma linguagem de programação que te agrada, em vez de se forçar a tentar programar em uma linguagem que você acha que "deveria" estar usando por algum motivo.
E se você ainda não conhece nenhuma linguagem, escolha a que você achar mais legal.
Na pior das hipóteses, se acontecer de a linguagem que você escolheu ser muito lenta ou completamente inadequada por algum motivo, você sempre pode reescrever seu projeto em uma linguagem diferente mais tarde. Mas você não vai saber até tentar. E reescrever será muito mais fácil na segunda vez, porque você já terá uma biblioteca de código da qual partir.
Então não se estresse com qual linguagem de programação usar. Apenas escolha uma e vá em frente. Algumas opções populares incluem:
- Python – Bom para iniciantes.
- Ruby – Minha linguagem favorita pessoal. Também boa para iniciantes.
- Javascript – Bom para coisas baseadas na web.
- Go – Bom para programas rápidos do lado do servidor.
- C++ – É a linguagem em que o código do Bitcoin Core é escrito.
Se você quer se tornar um desenvolvedor do Bitcoin Core, vai precisar aprender C++.
Eu sou um grande fã de PHP e Ruby. PHP porque é a linguagem com a qual sou mais proficiente (é em que este site e a minha biblioteca pessoal de bitcoin estão codificados), e Ruby porque é agradável de usar e fácil de ler (é em que a maioria dos exemplos deste site está escrita).
Isso não quer dizer que você deva usar essas linguagens em particular. Na verdade, eu provavelmente seria zoado e expulso de alguns círculos de programação por usar PHP e Ruby (e com razão). Mas elas funcionam bem para mim, e eu criei algumas ferramentas realmente úteis com elas, e isso é tudo o que importa.
Então, quem está rindo agora.
Em resumo, não fique preso pensando em qual linguagem é a "melhor" para bitcoin. A melhor linguagem sempre vai ser aquela que você consegue usar para de fato construir coisas.
Vai haver mais ajuda disponível se você ficar com uma linguagem razoavelmente popular. Se você usar uma linguagem que ninguém mais está usando, vai descobrir que ficará por conta própria boa parte do tempo na hora de resolver problemas complicados.
Por onde começar na programação de bitcoin
Se eu tivesse que te fornecer uma rota específica a seguir, diria que estes são os três marcos mais práticos (e satisfatórios) ao aprender a programar com bitcoin:
- Gerar suas próprias chaves. Este é o lugar perfeito para começar. Tente gerar sua própria chave privada, chave pública e endereço. Depois importe a chave privada em uma carteira e veja se você obtém o mesmo endereço que gerou.
- Decodificar uma transação. Aprender a decodificar uma transação bruta vai te ensinar muito sobre a estrutura de uma transação de bitcoin, e elas formam 99% dos dados dentro da blockchain.
Separador de Transação
- Criar sua própria transação. Depois de decodificar uma transação, você está pronto para criar a sua. Este é um marco bem maior (então vá com calma), mas é o próximo passo natural. Assiná-la será a parte mais complicada, mas se você conseguir enviar com sucesso sua própria transação de bitcoin para a rede, então você pode dizer com segurança que é um programador de bitcoin bem competente.
Construtor de Transação
E se você consegue criar suas próprias transações de bitcoin, não há mais nada no bitcoin que esteja fora da sua capacidade.
Escreva ferramentas de linha de comando
Escrever ferramentas de linha de comando é uma boa forma de começar a programar para bitcoin.
Isso é especialmente verdade se você ainda não tem uma ideia de projeto. Além disso, se você vai passar algum tempo trabalhando com dados de bitcoin, sempre vai ser útil ter um conjunto de utilitários de linha de comando para te ajudar pelo caminho.
Algumas ferramentas básicas de linha de comando que vão se mostrar muito úteis a longo prazo são:
- Funções de Hash – É útil ter uma forma rápida e fácil de obter o HASH256 ou o HASH160 de alguns dados, porque eles são usados em todo lugar no Bitcoin.
- Inverter a Ordem dos Bytes – Esta é inestimável para mim. Você frequentemente precisa inverter a ordem dos bytes de TXIDs e hashes de bloco, porque a ordem dos bytes que você usa dentro dos dados brutos de transação e de bloco é o inverso da que você usa para buscá-los em um explorador de blockchain. Além disso, a maioria dos campos nos dados brutos do bitcoin está em "little-endian", então você frequentemente vai se ver precisando inverter a ordem dos bytes antes de converter números entre hexadecimal e decimal.
- Conversor de Números – Não dá para te dizer quantas vezes converti algo de hexadecimal para decimal (e vice-versa). Você pode usar uma ferramenta online se quiser, mas não há nada como abrir um terminal e converter um número usando um script que você mesmo escreveu.
Mas não fique atolado escrevendo ferramentas de linha de comando só por escrever. É uma boa forma de começar, mas o seu foco principal na jornada de se tornar um programador de bitcoin deve ser trabalhar nos seus próprios projetos…
Seu primeiro projeto de bitcoin (importante)
A melhor forma de aprender a se tornar um programador de bitcoin é tentar construir algo.
Se você tem uma ideia de algo que quer construir, simplesmente vá em frente e aprenda o que precisa aprender no caminho. Você não precisa saber sobre todos os aspectos do bitcoin para começar a fazer algo útil.
Pode parecer uma tarefa intimidante no início, especialmente se você é novo em bitcoin e/ou programação, mas, se você for um passo de cada vez, vai chegar lá eventualmente.
Porque, como em qualquer coisa na vida, é impossível fracassar se você se recusar a desistir.
De qualquer forma, estou supondo que você já tem uma ideia do que quer construir. Mas se você precisar de alguma inspiração, aqui estão algumas ferramentas populares que outras pessoas construíram:
Ferramentas Web
- Mnemonic Code Converter (por Ian Coleman)
- Bitfeed (por mononaut)
- Yogh Explorer (por Jorn C)
- mainnet-observer (por b10c)
- Bitcoin Mempool Size Statistics (por Jochen Hoenicke)
Ferramentas Desktop
- Electrum (por Thomas Voegtlin)
- Sparrow Wallet (por Craig Raw)
Ferramentas de Linha de Comando
- bitcoin-iterate (por Rusty Russel)
- vanitygen (por samr7)
- bitcoin-utxo-dump (por Greg Walker)
Este é apenas um punhado de ferramentas legais que eu sei que foram feitas por indivíduos. Eu acho que elas são uma boa inspiração para o que pode ser feito com bitcoin se você tiver uma boa ideia e a determinação de levá-la até o fim.
Então simplesmente vá em frente e crie algo útil que ainda não exista, depois disponibilize-o para outras pessoas usarem e veja o que acontece.
Seja responsável. Você precisa ter muito cuidado se está criando uma ferramenta que lida com chaves privadas ou cria transações para outras pessoas (ex.: uma carteira). Uma coisa é cometer seus próprios erros e perder suas próprias moedas; outra é cometer erros que façam outras pessoas perderem moedas, então não leve isso na brincadeira.
Compartilhe seu trabalho no GitHub. Esta é uma boa forma de compartilhar seu código com o mundo, e também é uma boa forma de exibir sua experiência se você está procurando conseguir um emprego (se essa for a direção que você quer seguir).
Resumo
Não deixe ninguém te fazer pensar que você não pode ser um programador de bitcoin.
O bitcoin é um software descentralizado e de código aberto. Você pode gerar suas próprias chaves e construir suas próprias transações se quiser, e ninguém pode te impedir. Isso faz parte do que faz o bitcoin ser o bitcoin.
Tenho certeza de que algumas pessoas vão querer te convencer de que você precisa de algum tipo de qualificação para trabalhar com bitcoin, mas deixa eu te dizer: você não precisa. Tudo o que você precisa pode ser aprendido de graça na Internet, ou até mesmo apenas olhando o código-fonte do bitcoin. A única qualificação real que você precisa para trabalhar com bitcoin é o desejo de contribuir, e todo o resto pode ser aprendido ao longo do caminho.
Todos nós precisamos começar de algum lugar, e se você tem uma ideia e a paixão para torná-la realidade, então você está tão qualificado para se tornar um programador de bitcoin quanto qualquer outra pessoa.
As melhores carteiras e ferramentas foram construídas por pessoas que, em algum momento, não tinham nenhuma experiência prévia com bitcoin.
Outros Recursos
Ninguém aprende sobre um assunto inteiro a partir de um único livro ou site hoje em dia, então aqui estão alguns outros excelentes recursos técnicos sobre bitcoin que eu achei úteis:
Sites
- Bitcoin Developer Guide – O guia oficial. Bastante técnico, mas cobre bastante coisa.
- Bitcoin Wiki – Muita informação técnica que você não vai encontrar em nenhum outro lugar.
- Bitcoin Stack Exchange – O melhor lugar para obter respostas a perguntas.
- BIPs – A maioria das propostas contém boas informações técnicas sobre uma atualização específica.
Livros
Outros
- lopp.net Resources – O famoso hub de recursos relacionados ao Bitcoin.
- Royal Fork Blog – Artigos magistralmente escritos explicando alguns aspectos do Bitcoin. Algumas dessas páginas inspiraram este site.
- Minimum Viable Block Chain – Artigo incrível de página única sobre a tecnologia blockchain, por um ótimo escritor técnico.
- RaspiBolt – Guia para configurar um nó Bitcoin em um Raspberry Pi. Vale a pena fazer pelo menos uma vez pela experiência.
Bibliotecas
Uma forma inteligente de aprender como o bitcoin funciona é aprender a partir de bibliotecas de bitcoin existentes, escritas na linguagem que você mesmo está usando.
Você pode encontrar uma biblioteca de bitcoin em praticamente qualquer linguagem de programação buscando por "biblioteca bitcoin [linguagem]". Por exemplo:
- Go: btcd (altamente recomendada; excelentes comentários no código)
- PHP: bitcoin-php
- Ruby: bitcoin-ruby
- Javascript: bcoin
Há uma riqueza de código de código aberto por aí, e às vezes é melhor ver como outra pessoa resolveu um problema para te ajudar a descobrir como fazê-lo você mesmo.
Boa sorte.