O Consenso no Bitcoin
A imutabilidade enquanto feature da blockchain faz com que muitas pessoas acreditem que o código do Bitcoin também seja imutável. Mas a sobrevivência de uma criptomoeda exige a melhoria constante de seu protocolo: menores fees, transações mais rápidas e anônimas e outros ajustes precisam ser constantemente discutidos e implementados.
Como o protocolo Bitcoin é atualizado? Tudo pode ser modificado? Como é decidido qual proposta será escolhida? Todos os agentes da rede concordam sobre o futuro do protocolo? Pouco provável. Se a comunidade não concorda, o que é feito para atingir o consenso sem recorrer à autoridades centrais?
Os 02 tipos de Consenso no Bitcoin 🤝
Em 2017, as notícias sobre o hardfork do Bitcoin Cash, evidenciaram as controvérsias em torno da governança do Bitcoin e deixaram claro que existem pelo menos dois tipos de consenso em jogo. De um lado, há um conjunto rígido de regras que definem os critérios para validação de uma transação e de um bloco, e de outro, há uma série de processos que são seguidos para atualizar o protocolo Bitcoin.
O primeiro consenso diz respeito às regras de validação dos blocos e das transações. Todos os nós, ao rodarem um cliente (como o Bitcoin Core) devem concordar com essas regras estipuladas por ele para validar as transações. Os nós só aceitam os blocos e transações que estão no formato estipulado pelas regras de consenso. Se um minerador cria um bloco maior do que o permitido pela regra ou em um formato diferente, os nós irão recusá-lo.
Mas a palavra consenso também é usada para descrever a situação em que desenvolvedores, mineradores e usuários ponderam e votam sobre alguma atualização que não diga respeito às regras do consenso. Essas discussões servem para construção de decisões técnicas que visam melhorar o desempenho da rede. Esse processo, apesar de buscar o consenso, pode ser responsável por criar muitas controvérsias, desacordos e dissidências.
Soft fork & Hard fork ⚔️
A adição de novas regras ao protocolo de consenso devem ser feitas através de um soft fork, uma atualização voluntária e compatível com as outras versões do protocolo. Já a remoção de uma regra de consenso requer um hard fork, uma bifurcação da rede incompatível com versões anteriores.
Participantes Diretos e Indiretos do Consenso no Bitcoin
A ''comunidade Bitcoin'' é formada por diferentes agentes, com objetivos, desejos e incentivos diferentes. A interação entre eles é complexa e o "bem da rede" pode significar diferentes coisas, dependendo de qual perspectiva é acionada. Há pelo menos quatro '' agentes de poder'' no Bitcoin. Vale ressaltar que esse é o mecanismo do Bitcoin, que utiliza o Proof-of-Work. Moedas com mecanismos alternativos de governança, como Proof-of-Stake, apresentam outra dinâmica.
Os mineradores enquanto os agentes responsáveis pela validação das transações e inclusão de blocos na cadeia de blocos podem recusar rodar a a implementação de uma nova atuação. Assim como podem alocar dinamicamente seu poder computacional para outras pools ou em outras moedas, caso eles não concordem com o rumo da rede.
Os desenvolvedores são os responsáveis pelo gerenciamento técnico e atualização do protocolo Bitcoin. No início, Satoshi Nakamoto era o único responsável pela moeda. Em abril de 2011, sem muitas explicações, Nakamoto transfere o controle sobre o repositório ao maior contribuidor do código, Gavin Andresen. Atualmente, o protocolo do Bitcoin Core já recebeu contribuições de mais de 240 desenvolvedores.
As Empresas, tais como, exchanges, wallets e fornecedoras de hardware não participam formalmente da tomada de decisão do Bitcoin. Mas eles são responsáveis por definir o sucesso ou não de uma atualização.
Os usuários também não participam formalmente da tomada de decisão do Bitcoin. Mas como no caso acima, seu apoio é fundamental.
Quando um desenvolver quer sugerir uma mudança no protocolo que não diga respeito às regras rígidas, ele deve fazê-lo através de um processo conhecido como Bitcoin Improvement Proposal/Proposta de Melhoria do Bitcoin (BIP).
O protocolo do Bitcoin é constantemente atualizado por desenvolvedores que se dedicam a estudar, escrever e implementar melhorias no protocolo. Novas sugestões são feitas através de um processo conhecido como Bitcoin Improvement Proposal (BIP). O BIP pode descrever alterações no protocolo, alterações nas regras de consenso, adição de qualquer aplicações de interoperabilidade, orientações para a comunidade e etc.
Para submeter um BIP, o autor deve seguir um determinado fluxo de trabalho: perguntar à comunidade se a ideia é original ou se vale a pena ser desenvolvida, debater com a comunidade a ideia, apresentar um esboço do BIP à lista de discussão bitcoin-dev, esperar o feedback do editor (atualmente Luke Jr), buscar o acordo geral da comunidade e mediar as posições contrárias.
Se você quer saber mais detalhes sobre como submeter um BIP, acesse o BIP process. Esse BIP é a revisão da primeira proposição do sistema de proposições BIP, criado por Amir Taaki em 19 de agosto de 2011. O BIP9, publicado em 4 de outubro de 2010 define que o consenso entre nodes e mineradores deve ser feito modificando apenas um bit 0 para um bit 1. Ao final das modificações dos bits há uma votação para saber se a implementação deve ocorrer ou não.
Três tipos de BIPS
As propostas de melhoria do Bitcoin podem ser divididas em três categorias:
Standards Track BIP: propostas de alteração que afeta a interoperabilidade de aplicativos da maioria ou de todas as implementações de Bitcoin, como uma alteração no protocolo de rede, uma alteração nas regras de validade de bloco ou transação.
BIP informativo: descreve um problema de design do Bitcoin ou fornece diretrizes, informações e diretrizes gerais para a comunidade Bitcoin, sem propor novos recursos e implementações.
BIP de processo/meta-BIP: propõe uma alteração em um processo que se aplica a outras áreas que não o próprio protocolo Bitcoin. Os exemplos incluem procedimentos, diretrizes, alterações no processo de tomada de decisão e alterações nas ferramentas ou no ambiente usado no desenvolvimento do Bitcoin.
BIPs Interessantes 🧐
Entre os BIPS que ganharam bastante destaque nos últimos tempos, estão: Merkelized Abstract Syntax Tree (MAST), Partially Signed Bitcoin Transactions (PSBTs), Schnorr, Bulletproofs, Dandelion, Sidechains e Mimblewimble.
📃BIP 114: Merkelized Abstract Syntax Tree (MAST)
👨💻 Desenvolvedor(es): Johnson Lau <jl2012@xbt.hk>
🖊️Descrição: Esse BIP define um novo tipo de testemunha que usa uma árvore Merkle para codificar ramificações mutuamente exclusivas em um script. Assim, é possível diminuir o tamanho das transações (já que seu custo no tempo é menor), criar contratos inteligentes mais complexos, com mais liberdade para definição de seus critérios de transacionais e melhora a privacidade da transações, ocultando scripts não executados.
👨💻 Desenvolvedor(es): Andrew Chow <achow101@gmail.com>
🖊️Descrição: As transações mutlisig (que exigem mais de uma assinatura para ser efetuada) têm um ótimo caso de uso do Bitcoin. Mas não existe um formato unificado para o compartilhamento dessas transações entre vários assinantes, isso depende da implementação específica de cada carteira, dificultando a execução entre partes que usam diferentes carteiras de Bitcoin. O BIP (174) quer resolver isso, criando um formato padrão para essas transações.
📃 BIP 340: Schnorr Signatures
👨💻 Desenvolvedor(es): Pieter Wuille <pieter.wuille@gmail.com> Jonas Nick <jonasd.nick@gmail.com> Tim Ruffing <crypto@timruffing.de>
🖊️Descrição: O Bitcoin tradicionalmente usa o algoritmo de assinatura digital Elliptic Curve (ou ECDSA) na curva secp256k1 com o hash SHA256 para autenticar transações. O BIP 340 propõem a substituição para assinaturas Schnorr, devido a sua maior segurança ao ataque de mensagem escolhida (SUF-CMA), não-maleabilidade (para que um terceiro sem acesso à chave secreta não possa alterar uma assinatura válida existente), maior eficiência e a privacidade.
📃BIP 156: Dandelion
👨💻 Desenvolvedor(es): Brad Denby <bdenby@cmu.edu> Andrew Miller <soc1024@illinois.edu> Giulia Fanti <gfanti@andrew.cmu.edu> Surya Bakshi <sbakshi3@illinois.edu> Shaileshh Bojja Venkatakrishnan <shaileshh.bv@gmail.com> Pramod Viswanath <pramodv@illinois.edu>
🖊️Descrição: Aumento da privacidade das transações através da randomização da propagação das transações para os nós que compõem a rede. O Dandelion fornece um mecanismo de roteamento de transações que fornece garantias formais de anonimato contra ataques de desanonimização e vinculação de transações à endereços IP.
Comments