3 — Blockchain simples: O que é algoritmo de consenso? (Abordagem para não programadores)

Cryptomiles DriveOn
5 min readJul 26, 2018

--

Olá queridos!

Até agora já sabemos o conceito básico sobre Blockchain e porque o algoritmo de hash é importante, e hoje vamos falar sobre a importância e grande valor que o algoritmo de consenso traz a uma implementação de Blockchain.

“Rules without rulers” — Andreas Antonopoulus

O termo consenso está ligado a resolução de disputas. Quando partes estão divergindo sobre determinado ponto e há um impasse, algo tem de ser feito para que o impasse se resolva: — Ambos cedem, normalmente perdendo um pouco de cada lado ou um Juiz decide quem está certo, neste caso, em geral é tudo ou nada.

No caso de implementações Blockchain, não há como as partes cederem já que em redes abertas, as partes nem se conhecem. Pode ser que uma pessoa esteja interagindo com uma outra pessoa em qualquer lugar do mundo, pode ser que esteja interagindo com um programa, ou mesmo um programa com outro. Assim, neste caso quem decide que um novo bloco está correto e terá o direito de atualizar a cadeia de blocos com o bloco de sua posse?

No primeiro artigo falamos sobre uma disputa entre João e Maria, onde o bloco de João parece estar intencionalmente adulterado. O que acontece se ele tentar validar esse bloco na rede? Entra em ação o algoritmo de consenso. Chamarei de “nó”, todos os participantes da rede, que tenham uma cópia do Blockchain, e que validem as transações e blocos novos.

Há algumas implementações de algoritmo de consenso, sendo os dois mais comuns: Prova de trabalho (PoW — Proof of Work) e prova de participação (PoS — Proof of Stake). E mesmo não sendo perfeitos, mas resolvem problemas de autenticação das informações na hora de adicionar os novos blocos no Blockchain.

Em uma implementação de prova de trabalho (PoW), quando um novo bloco precisa ser adicionado na rede, os nós são desafiados a resolver um problema matemático, eles têm que achar um hash válido!

De fato, achar um hash de um bloco leva milésimos de segundos para um computador, porém, o desafio não é encontrar o hash do bloco (como dito, isto é fácil). Os nós da rede precisam combinar o hash do bloco + um número de vários algarismos sem que ninguém saiba que número é esse (sabe-se no entanto a quantidade inicial de zeros que esse número tem) e gerar um hash desta combinação e validar na rede esse hash final. Isto significa que todos os nós concorrem para achar o número certo e devolver para a rede o hash correto da combinação deste número e o hash do novo bloco.

“…todos os nós concorrem para achar o número certo e devolver para a rede o hash correto da combinação deste número e o hash do novo bloco.”

Isso faz com que qualquer nó tenha o mesmo direito de validar um bloco, no caso quem resolver esse problema primeiro exibe o número e o Hash para a rede, e espera pela validação de outros nós, confirmando que ele resolveu o problema e tem o direito de adicionar esse bloco no Blockchain. Isto também é chamado de “minerar” no universo do Blockchain, pode-se dizer que este novo bloco foi minerado.

De sorte que se João quiser adulterar uma transação no seu próprio bloco, ele vai ter alguns problemas bem grandes antes de conseguir validar seu bloco na rede: primeiro ele vai ter que concorrer com a rede inteira para achar o número misterioso, depois que ele conseguir, ele vai ter que validar esse número e hash com outros participantes da rede. Quando os outros participantes da rede começarem a verificar que o bloco dele está diferente dos outros, o seu bloco é automaticamente rejeitado da rede e tão logo um novo bloco seja minerado uma cópia correta do Blockchain é enviada para João — Chora João! E se João for esperto suficiente para alterar não o bloco corrente, mas um bloco antigo, que já está validado na rede e que não precisa concorrer com os outros nós da rede? Lembre-se que cada bloco contém o Hash do bloco anterior, assim, ele precisaria alterar os hashes de todos os blocos anteriores e posteriores ao seu, isto não somente invalidaria um bloco, mas toda a cadeia de blockhain do João.

A prova de trabalho PoW requer muito poder computacional e há uma recompensa para quem acha a resposta, hoje a recompensa no Blockchain do Bitcoin é de 12,5 bitcoins sendo que no início de maio/2018 o preço do bitcoin estava próximo dos 9.000 dólares, isso daria a quantia aproximada de 112.500 dólares. Mas antes de sair procurando minerar bitcoins saiba que existem empresas com parques gigantescos de hardwares específicos para mineração já fazendo isso, pense na chance de sucesso ao concorrer com esses caras, é provável que você chegue a conclusão, assim como muitos já chegaram que se consome mais energia elétrica tentando minerar bitcoin no computador de casa do que você é recompensado pelo esforço. Hoje estima-se que o total de energia gasto em mineração de bitcoin (54 Twh), seria possível energizar eletricamente todo o país da Hungria ou Nova Zelândia. De fato, não é uma solução ecologicamente amigável.

Por isso em 2011 um usuário do fórum Bitcointalk, propôs uma nova técnica chamada prova de participação.

Na prova de participação (PoS), um sorteio entre os nós é feito proporcionalmente a quantidade de moedas que o nó depositou na rede, e essa quantidade de moedas fica valendo como um depósito de segurança, e essa quantidade de moedas depositada determina a chance de um nó ser escolhido para adicionar um novo bloco na rede, dando a chance de qualquer um nó ser eleito para tal. Aqui há também um ajuste de conceito: enquanto nas implementações PoW os nós também são chamados de mineradores, no PoS, esses nós são chamados de Validadores, já que não existe mais a necessidade de minerar um bloco novo.

“…essa quantidade de moedas depositada determina a chance de um nó ser escolhido para adicionar um novo bloco na rede”

Mas e se por “sorte” um nó com más intenções for escolhido para adicionar o seu bloco na rede? Já pensou se o João é sorteado? Bom, se este nó validar informações incorretas ou fraudulentas, parte do valor depositado como segurança vai ser descontado, sendo este valor maior do que ele ganhou ao colocar um bloco novo. Este é um incentivo financeiro, para que os nós façam corretamente seu trabalho. o valor depositado como segurança vai ser liberado de volta, mas somente depois de um bom tempo, já que a rede precisa punir um nó que validou informações fraudulentas na rede.

Falamos bastante sobre moedas, em especial na seção sobre o PoS, você pode estar se perguntando: moedas, tipo aquelas moedas do super-mario?!? Sim, bem, são moedas eletrônicas, mas não exatamente como no super-mário. No próximo artigo falarei sobre o que Blockchain tem a ver com cryptomoedas.

--

--

Cryptomiles DriveOn

Cryptomiles is the Driveon utility token that rewards you for your car health data and driving behavior sent to the platform. More -> cryptomiles.me