Funcionamento e segurança de uma blockchain. Hum, como é que funciona o mining, já agora?
O que é uma blockchain, como é que é assegurada e qual é o papel exato da mineração? Neste vídeo educativo de 2022, gravado pouco depois do fim da mineração de Ethereum, voltamos às bases: princípios de uma blockchain, hashing, nonce, encadeamento de blocos, dificuldade, pools de mineração e o ataque de 51%. Destina-se tanto a principiantes como a mineiros que pretendam consolidar os seus conhecimentos, com algumas simplificações para manter a acessibilidade.
O que é uma blockchain?
Uma blockchain, ou cadeia de blocos, é antes de mais uma ferramenta que permite armazenar informação e transmiti-la: uma espécie de base de dados, comparável a um livro-razão onde se anotam informações que já não podem ser falsificadas. Existem vários tipos:
- Pública ou privada: numa blockchain pública, qualquer pessoa pode participar e enviar transações. É o caso da Bitcoin, Ethereum ou Ripple, e da maioria das criptomoedas. As blockchains privadas destinam-se mais a utilizações B2B, como a Hyperledger Fabric ou as desenvolvidas pela JP Morgan;
- Permissionless ou permissioned: uma blockchain permissionless permite agir de forma anónima, sem conhecer a identidade dos participantes. É a que utilizamos na mineração. Numa blockchain permissioned, os participantes têm de ser identificados;
- Centralizada ou descentralizada: uma blockchain descentralizada não possui um nó central. Baseia-se numa rede peer-to-peer em que cada nó completo (full node) possui uma cópia integral da blockchain e participa na rede.
O percurso de uma transação
Consideremos uma carteira A que envia bitcoins para uma carteira B. A transação é difundida na rede e, em seguida, agrupada com outras num bloco. Este bloco é transmitido aos nós da rede, que o validam através de técnicas criptográficas, principalmente a prova de trabalho (proof of work). Uma vez validado, o bloco é adicionado à cadeia e a carteira B recebe os fundos. Três princípios tornam isto possível: uma base de dados distribuída, um protocolo de consenso para validar as transações e a imutabilidade das transações passadas.
O hashing e o nonce
O hashing está no centro da segurança. Na Bitcoin, o algoritmo utilizado é o SHA-256: independentemente dos dados de entrada, a função de hash produz um resultado, o hash, uma longa cadeia de caracteres. Os mesmos dados dão sempre o mesmo hash, mas a mínima modificação, por exemplo no montante de uma transação, origina um hash completamente diferente: qualquer falsificação é detetada imediatamente.
O nonce é um número que só pode ser utilizado uma única vez em criptografia. É o núcleo da prova de trabalho: funciona em combinação com o hashing e permite evitar a manipulação das informações do bloco. Minerando, tenta-se um número muito elevado de valores de nonce até obter um hash válido, isto é, que respeite a dificuldade definida pela rede.
Blocos encadeados: porque é que não se pode reescrever o passado
Um bloco contém o seu número, os dados das transações, o nonce, o seu hash e o hash do bloco anterior. É este último elemento que cria a cadeia: se alguém modificar o conteúdo do bloco 1, o seu hash altera-se, o bloco 2, que continha o hash antigo, torna-se inválido, e assim sucessivamente para todos os blocos seguintes. Para modificar uma transação passada, seria necessário minerar novamente todos os blocos que se seguem, um trabalho de cálculo enorme.
Para saber mais: a Bitcoin, o Ethereum e muitas criptomoedas organizam internamente as suas transações numa árvore de Merkle.
A dificuldade e as pools de mineração
A dificuldade ajusta-se automaticamente para que o tempo entre dois blocos permaneça estável: se chegarem mais mineiros e os blocos forem encontrados demasiado depressa, a dificuldade aumenta. Simplificando, a dificuldade corresponde à potência de cálculo da rede multiplicada pelo tempo de bloco pretendido. Exemplo no Ethereum Classic no momento da gravação: um hashrate de rede de cerca de 143 TH/s, ou seja, 0,143 PH/s, e um bloco a cada 13 segundos aproximadamente resultam numa dificuldade próxima da apresentada, cerca de 1,88 PH. Este mecanismo é essencial: após o Merge do Ethereum, a Ergo teve grandes problemas porque a sua dificuldade de mineração não conseguia atualizar-se corretamente.
Numa pool de mineração, uma parte chamada stratum orquestra a partilha do trabalho: envia a cada mineiro uma parte da prova de trabalho, com a sua própria dificuldade. Os mineiros enviam as suas soluções (as shares) e a pool, ligada à blockchain, difunde o bloco na rede quando este é encontrado.
O ataque de 51% e os forks
Para impor uma versão modificada da blockchain, um atacante precisa de controlar mais de 50% da potência de cálculo da rede. É por isso que as novas criptomoedas em prova de trabalho são vulneráveis no início, especialmente no momento da gravação: com o fim da mineração do Ethereum, estava disponível tal massa de potência de cálculo que grandes mineiros podiam inundar uma determinada criptomoeda, ultrapassar 50% do hashrate e realizar um ataque de 51%.
Acontece também que uma blockchain se divide temporariamente: é o que chamamos um fork. Dois caminhos separados coexistem durante algum tempo, e a rede acaba por convergir para uma única cadeia.
Os smart contracts, os seus princípios e a sua implementação poderão ser objeto de um próximo vídeo: diga-nos nos comentários se o tema lhe interessa.
Para escolher onde enviar a sua potência de cálculo, leia o nosso artigo Como escolher a sua pool de mineração e encontre todos os nossos vídeos na página de tutoriais. Quer participar na segurança da rede Bitcoin? Descubra os nossos mineiros Bitcoin.

