Por: Caique Nobre
Publicado pelo pseudônimo Satoshi Nakamoto em 31 de outubro de 2008 (há exatos 16 anos), o whitepaper do Bitcoin é o documento contém todas as informações necessárias sobre o sistema, como suas motivações e funcionamento da estrutura. Possui 12 seções, incluindo introdução e conclusão.
Em homenagem ao seu aniversário, proporei neste artigo uma análise sobre os principais pontos dos capítulos do whitepaper, abordando o tema de uma forma um pouco mais mais técnica.
Para uma abordagem um pouco mais simplificada sobre o Bitcoin e seus conceitos básicos, recomendo este artigo.
Introdução
O comércio na internet depende quase que exclusivamente da intermediação de agentes financeiros operando como “intermediários de confiança”. No entanto, a possibilidade de reversão de transações, como congelamento de contas e confiscos, cria insegurança jurídica . Além disso, são solicitados muito mais dados pessoais e informações particulares do que realmente seria necessário, com o intuito de reduzir as externalidades e assimetria de informação para os envolvidos.
A solução proposta no whitepaper do Bitcoin é um sistema de pagamentos eletrônico, descentralizado e ponto-a-ponto, estruturado em um servidor de carimbo de tempo (blockchain) e sob um mecanismo de incentivos a partir da prova de trabalho (Proof of Work – PoW) dos usuários, de modo que não hajam gastos duplos e que hajam recompensas para aqueles que alocarem recursos (energia computacional) em prol do sistema.
Transações
Nesta seção Satoshi trata sobre como é possível verificar quem tem a posse das moedas a partir das chaves públicas e assinaturas, estas a partir da chave privada.
Ele também menciona como é possível verificar se em alguma transação ocorreu gasto duplo. Normalmente isso seria responsabilidade de algum agente central, como um banco, mas essa não seria uma opção para o sistema Bitcoin.
A única forma de saber se alguma transação não foi registrada anteriormente é manter um registro completo de todas as transações, transmitindo-as publicamente. Isso tornaria desnecessária a presença de uma autoridade central.
Timestamp server
Em nenhuma parte do whitepaper Satoshi menciona o termo “blockchain”, mas sim o “timestamp server”, que representa uma estrutura que registra um bloco de transações em forma de hash, de modo que esse registro seja permanente e atrelado ao bloco subsequente, funcionando como uma corrente cujos blocos sempre contenham o hash do bloco anterior.
Proof-of-Work (PoW)
Aqui Satoshi explica o mecanismo de consenso que alicerça a estrutura do Bitcoin, o PoW. Para inserir transações em um bloco é necessário gasto de energia computacional (CPU). Caso houvesse uma suposta “igualdade de competição”, de modo que cada usuário pudesse empregar apenas um IP, nada impediria que um usuário adquirisse vários IPs e os utilizasse em conjunto.
Para alterar as informações contidas em um bloco, seria necessário refazer todo o trabalho de mineração nos blocos anteriores, o que se torna exponencialmente mais difícil conforme novos blocos vão surgindo.
Nos blocos é inserido o nonce – number used once – de modo a identificá-lo facilmente.
A dificuldade do PoW é ajustada conforme a velocidade em que os mineradores conseguem inserir os blocos na rede.
Atualmente são utilizadas ASICs (Application-Specific Integrated Circuits) para a mineração de bitcoin, tornando as CPUs obsoletas nesse processo.
Network
Algumas definições básicas:
Node (Nó) → Unidade presente na estrutura de dados (na prática, qualquer computador conectado à rede)
Bloco → onde todas as transações são registradas permanentemente
Consenso → Decisão da rede perante impasses diversos
Nesse tópico são abordados os passos a serem seguidos para inserir transações em um bloco. São eles:
- Novas transações são transmitidas para todos os nós;
- Cada nó coleta novas transações para serem inseridas no bloco;
- Cada nó trabalha com o intuito de realizar a difícil prova de trabalho necessária para inserir as transações no bloco;
- Quando um nó conseguir realizar a prova de trabalho, ele transmite o bloco de transações para todos os nós da rede;
- Os demais nós só aceitarão o bloco se todas as transações forem válidas e se já não tiverem sido realizadas anteriormente (gasto duplo);
- Os nós evidenciam a aceitação do bloco ao trabalhar na criação do próximo bloco na rede, referenciando o hash do bloco anterior e recém criado..
Incentivos
As primeiras transações contidas no bloco são “especiais” porque correspondem ao recebimento de BTCs por parte dos mineradores que inserirem o bloco de transações na rede → Subsídio da rede
Além disso, os mineradores também recebem uma taxa de transações, isto é, uma parte do valor transferido (input). A diferença entre o valor de input e o valor recebido pela outra parte (output) é o valor pago em taxas, que será revertido aos mineradores.
Os mecanismos de incentivos funcionam de tal modo que os usuários sejam desencorajados a agir de maneira fraudulenta. Caso um nó consiga captar 51% da energia computacional gasta na rede, ainda assim será muito mais vantajoso utilizar essa energia em prol do processo de mineração do que tentar roubar fundos.
Satoshi denominou esse processo como mineração, por este ser análogo à mineração de metais preciosos, que exige dispêndio de recursos por parte dos mineradores. No caso do Bitcoin, esses recursos seriam a energia computacional (CPU – GPU).
Reclaiming Disk-Space
Um possível problema para a rede seria em relação ao armazenamento de dados no longo prazo.
A tecnologia “Merkle Tree Data Structure” é utilizada para armazenar os blocos passados sem requerer a quantidade total de armazenamento. Em suma, funciona como uma espécie de “WinZip”, de modo que seja possível verificar quais transações foram realizadas com o mínimo possível de dados armazenados.
Como analogia, essas transações seriam “podadas” do bloco (como galhos), de modo que restasse apenas a estrutura principal (root) dessa árvore.
Simplified Payment Verification (SPV)
A Merkle Root também simplifica o processo de verificação e validação de transações (SPV). A SPV permite que usuários verifiquem as transações ocorridas na blockchain sem a necessidade de operar um full-node, o que demandaria armazenar todo o histórico das transações desde o início.
Todavia, talvez seja interessante para negócios que realizem transações frequentes operar seus próprios nós da rede, de modo a verificar essas transações de maneira mais rápida e simplificada.
Combining and Spliting Value
Uma transação pode conter diversos inputs e outputs. Pense isso de maneira análoga a juntar as notas guardadas de outras transações (uma na carteira, outra na gaveta e outro no bolso da calça). Elas seriam “aglutinadas” e, caso houver troco, será gerado um novo output (para quem enviou).
Por trabalhar com inputs e outputs, muitos outputs são como “pedaços de bitcoin”, considerados “Transações não-gastas” – em inglês, UTXOs. Utilizando analogia de nosso cotidiano, os UTXOs funcionam como trocos das transações. A carteira (wallet) de bitcoin irá somar todos esses UTXOs e fornecer o balanço do valor total (da mesma forma que uma carteira de couro possui diversos bolsos com notas e moedas separados).
Para Satoshi, o fato de uma transação estar atrelada a diversas outras transações em nada interferiria no funcionamento da rede.
Privacy
Em um sistema de pagamentos tradicional, é necessário confiar nossos dados de identidade a terceiros de confiança, que provavelmente os repassarão a uma nova contraparte para, ao final, torná-la pública. O novo modelo de privacidade proposto na rede Bitcoin elimina a necessidade dos terceiros de confiança e demais partes além do estritamente necessário.
Satoshi tamém ressalta a importância de manter o anonimato, evitando divulgar suas chaves públicas e, sempre que possível, utilizar mais de um endereço.
Calculations
Aqui Satoshi expõe os cálculos probabilísticos para o caso de um possível ataque fraudulento de 51%, restando evidente que as chances de sucesso diminuem a cada vez que um novo bloco é registrado na rede.
É importante frisar que a única coisa que o suposto atacante conseguiria “conquistar”, seria realizar um gasto duplo. Todavia, os demais nós logo perceberiam esse gasto duplo e não aceitariam efetuar o download do bloco fraudado, podendo resultar em um possível fork na rede.
Conclusão
A proposta do Bitcoin é servir como um sistema de pagamentos eletrônico e ponto-a-ponto, sem a necessidade de uma terceira parte de confiança. De modo a tornar impraticável o “gasto duplo”, o equivalente financeiro ao “Problema dos Generais Bizantinos”, a rede está alicerçada em um algoritmo de consenso denominado Proof-of-Work. Os nós participam livremente dessa rede, a partir de um mecanismo de incentivos que favorece as ações em prol do sistema, uma vez que requer dispêndio de recursos na forma de energia computacional.