Categorias
Como funcionam? Mastering Bitcoin

Consenso numa Rede Descentralizada

Temos estado a aprender como funciona a mineração de Bitcoin e o algoritmo Proof-of -Work que a valida. Neste artigo, vamos tentar perceber mais a fundo como é possível criar uma verdade universal aceite por todos os que integram a rede e sem que qualquer interveniente tenha que confiar em ninguém. Pode, ao invés disso, verificar ele próprio que todas as transacções já feitas seguem as regras definidas pela rede.

Um dos mantras da comunidade Bitcoin é “Don’t trust, verify.” Em português: não confies, verifica.

Os sistemas de pagamento tradicionais dependem da confiança que os intervenientes têm numa entidade central. A esta entidade é atribuída a função de verificar e validar todas as transacções. Na rede Bitcoin, pelo contrário cada nó verifica e valida cada transacção formando a sua própria cópia da blockchain. Esta cópia será idêntica a todas as cópias para todos os nós. Isto é possível, apesar desta rede se basear em informação transmitida numa rede aberta e ligações inseguras.

Apesar de não haver segurança explícita nas transmissões de informação na rede, todo o processo é impossível de reverter devido ao grande número de nós que mantém a rede. A segurança da Bitcoin está nos números. No grande número de nós que mantém a sua cópia da blockchain.

O elemento revolucionário da tecnologia blockchain é o consenso emergente conseguido numa rede descentralizada. O consenso descentralizado emerge da ligação entre 4 processos que ocorrem independentemente nos nós distribuídos pela rede. Esses processos são numerados abaixo.

1 – Verificação independente de cada transacção, por cada nó completo.

Para evitar que sejam transmitidas transacções inválidas, cada nó completo verifica qualquer transacção que receba de modo a validá-la. Para atingir esse objectivo, segue uma lista bem definida de critérios que incluem, por exemplo, controlar o tamanho da transacção em bytes ou rejeitar a transacção se a soma do valor dos inputs for menor que a soma do valor dos outputs.

Só depois de verificar essa transacção, o nó irá propagar essa transacção pela rede para outros nós, que tornarão a verificá-la.

2 – Agregação independente dessas transacções em blocos, pelos nós mineiros onde incluem o algoritmo Proof-of-Work como prova da computação investida.

Como vimos no artigo sobre o Proof-of-Work, cada nó mineiro, depois de validar cada transacção irá adicioná-las à memory pool onde ficarão a aguardar serem integradas num bloco candidato. Quando isso acontece, serão agrupadas centenas de transacções num bloco e os nós passam a procurar a solução para o algoritmo Proof-of-Work.

Quando conseguir encontrar uma solução que seja inferior ao alvo, o nó irá imediatamente enviar esse bloco pela rede de forma a reclamar para si o direito de publicar esse bloco e a recompensa das novas moedas.

3 – Verificação independente de novos blocos por cada nó e montagem na blockchain.

Depois de “minado”, o nó envia o bloco para a rede. Cada nó que receber esse bloco vai verificá-lo de acordo com as regras bem definidas, onde serão verificados, por exemplo, que o carimbo da data não está mais de duas horas no futuro (permitindo assim erros de tempo) ou que a primeira (e apenas a primeira) transacção é uma transacção de coinbase válida. A transacção que entrega a si próprio as bitcoins geradas como recompensa pela publicação desse bloco.

Se, na transacção de coinbase os mineiros indicam que devem ser pagas a eles próprios bitcoins, porque não endereçar a eles próprios 100 ou 200 bitcoins? Porque o bloco tem que ser validado por todos os outros nós da rede de forma a ser adicionado à cadeia, de forma a que a rede lhe reconheça o direito de gastar aquelas bitcoins. Se o mineiro incluir uma transacção inválida, esse bloco não será incluído e os recursos investidos pelo mineiro para descobrir a solução para o problema terão sido gastos em vão.

Os blocos válidos são assumidos pelos outros nós que assim os incluem no topo da sua cópia da blockchain. Quando isto acontece significa que os outros nós validam e aceitam esse bloco e, a partir desse momento, o nó fica na posse das bitcoins que minerou, sendo-lhe reconhecido, pela rede, o direito de gastar essas bitcoins. 

4 – Selecção independente, por cada nó, da cadeia que prove ter a maior quantidade de computação cumulativa através do Proof-of-Work.

O último passo para o consenso da rede é adicionar o bloco à blockchain seleccionando a cadeia com maior quantidade de Proof-of-Work. Usualmente, essa cadeia será a cadeia com maior número de blocos. O nó vai tentar identificar o bloco-pai através de um campo incluído no bloco actual que o indica. Na maior parte dos casos será a ponta da cadeia actual. Seleccionando a cadeia válida com o maior trabalho cumulativo, todos os nós alcançarão consenso ao longo da rede. As discrepâncias temporárias desaparecem à medida que mais trabalho for acumulado numa das cadeias. Os nós mineiros “votam” na cadeia mais longa ao escolher a cadeia à qual vão adicionar os blocos que “minerarem”.

No final deste processo, a cadeia será estendida por mais um bloco e é iniciado uma nova competição para conseguir adicionar o próximo bloco.

Do consenso que é conseguido pelo crescimento e manutenção das cópias privadas da blockchain, surge a força da Bitcoin.

É esta descentralização que torna a Bitcoin inalterável e “inhackável“.

Alterar uma transacção para proveito próprio, implicaria alterar 51% das cópias de blockchain, para alterar o consenso da rede. Para conseguir isso teria que ter mais poder de computação que metade dos computadores que estão hoje dedicados a minerar bitcoin. Neste momento, existem mais de 10 mil nós que fornecem à rede um total de 100 milhões de Terahashes por segundo. Este número é um 1 com 18 zeros atrás – 100 000 000 000 000 000 000.  Ou seja, a cada segundo, no total da rede Bitcoin, são feitas este número de tentativas para descobrir a solução para o Proof-of-Work que permite publicar o bloco seguinte!

One reply on “Consenso numa Rede Descentralizada”

Deixe um comentário