Para que participantes de uma rede cheguem a um acordo sobre decisões, eles precisam de um algoritmo de consenso. O mais famoso é o PoW (Proof of Work) que é utilizado no Bitcoin e na maioria das blockchains.
Tais algoritmos de consenso são necessários para que os participantes da rede possam controlar a rede sem depender de um ponto central. Com o passar do tempo, diversos algoritmos surgiram, tentando melhorar pontos como segurança, escalabilidade, custo, etc. todavia é um trilema: escalabilidade, segurança e descentralização, você cobre um lado e acaba deixando outro de fora.
Além disso, algoritmos podem trabalhar de forma competitiva ou colaborativa para chegar ao consenso.
[lwptoc]
PoW – Proof of Work
O PoW foi o primeiro algoritmo de consenso, apresentado em 2008 no whitepaper do Bitcoin e utilizado até hoje. No PoW, os participantes utilizam poder computacional para resolver problemas matemáticos e receber uma recompensa (BTC, neste exemplo).
Caso dois blocos sejam encontrados simultaneamente por dois mineradores diferentes, a cadeia mais longa será a utilizada. Sendo assim a rede que tiver mais mineradores, será a utilizada. Isto também gera o problema do 51% attack, onde um minerador/pool geraria a cadeia mais longa, todavia o atacante estaria dando um tiro no pé pois perderia seu investimento. Sendo assim, a rede estará segura caso mais da metade de seus participantes(poder computacional) for honesta.
Conforme a mineração tornava-se mais atrativa financeiramente, buscavam-se alternativas para melhorar o desempenho da mineração em relação ao custo. Inicialmente minerava-se BTC através de CPUs, então GPUs, FGPAs e agora ASICs. Já outras blockchains chamadas de “resistentes a ASICs” procuram bloquear o uso de ASICs, promovendo uma descentralização mais perceptível.
Usado por: Bitcoin, Ethereum, Litecoin, ZCash, Monero
Pontos positivos:
Usada, e testada, desde o lançamento do Bitcoin.
São 10 anos provando ser um algoritmo extremamente seguro.
Pontos negativos:
Lento
Utiliza muita energia
PoS – Proof of Stake
Provavelmente o segundo algoritmo de consenso mais conhecido, o PoS não utiliza poder computacional como o PoW e sim a própria moeda da blockchain em questão, reduzindo gastos com energia.
Os participantes precisam alocar capital (staking) para validar novos blocos, caso você tenha 7% das moedas alocadas, a chance de você validar um bloco é de 7%. Isto torna um 51% muito custoso e pouco provável já que o atacante desvalorizaria seu próprio capital.
Uma das maiores críticas é o problema do nothing-at-stake, nas primeiras blockchains que utilizam este algoritmo, era necessário apenas deixar as moedas na sua própria carteira, sem depender de um depósito de segurança. Ou seja, tais moedas não estariam servindo como uma garantia no caso de um ataque, seria como acreditar que um participante não atacaria a rede já que isto desvalorizaria seu capital.
Usado por: PIVX, Peercoin, Nxt
Pontos positivos
Pouca utilização de energia (também chamada de mineração verde)
Ataques mais custosos
Pontos negativos
Problema do nothing-at-stake
dPoW – Delayed Proof of Work
O DPoW utiliza o hashrate de outra blockchain para promover uma segunda camada de proteção a sua blockchain. Desta forma, nós notários adicionam dados de uma blockchain em outra, garantindo uma melhor segurança e imutabilidade das transações.
Além disto, a blockchain conta com nós normais, sendo assim a blockchain pode funcionar normalmente sem depender da segunda e mais blockchains podem ser ligadas. Um ponto negativo é que apenas blockchains que utilizam PoW ou PoS podem utilizar o dPoW.
A primeira blockchain a utilizar tal algoritmo foi a Komodo (KMD) que utiliza o Bitcoin como blockchain secundária, caso tenha maior interesse leia o artigo Delayed Proof of Work: o algoritmo de consenso multi-blockchain.
Usado por: Komodo
Pontos positivos
Melhor uso da energia
Segurança aumentada
Os custos de uma terceira blockchain seriam menores
Pontos negativos
Apenas PoW e PoS podem fazer parte deste consenso
O hashrate dos dois tipos diferentes de nós precisa estar bem calibrado, caso contrário pode explodir.
dPoS – Delegated Proof of Stake
Outro algoritmo que vem sendo bastante explorado é o delegated Proof of Stake, ele permite que os participantes elejam um representante para garantir a segurança da rede. Desta forma, menos nós são necessários para validar os blocos, aumentando a escalabilidade da rede e reduzindo o tempo necessário para confirmar transações. Caso um nó fique offline, outro pode ser posto no lugar rapidamente.
Ao contrário do PoW ou do PoS onde os participantes competem para validar blocos, no dPoS eles contribuem. Ou seja, todos os eleitos validarão o mesmo número de blocos caso não tenham problemas técnicos.
A principal crítica é que a redução do número de validadores faz a rede aparentar ser mais centralizada.
Usado por: EOS, Steemit, BitShares
Pontos positivos
Pouca utilização de energia
Muito rápido
Taxas de transação baixas
Pontos negativos
Um tanto centralizado
Participantes podem votar em si mesmos
PoA – Proof of Authority
No algorítimo Proof of Authority, as transações são validadas por contas aprovadas. Para isto, é necessário que os potenciais validadores sejam expostos, ou seja, eles estão colocando sua reputação em risco para validar os blocos, removendo o anonimato que é tão comentado quando se fala de criptomoedas.
Além do mais, é necessário uma verificação completa, bem como procedimentos para garantir que o validador tenha um servidor com as características desejadas pela rede.
Usado por: POA.Network, VeChain
Pontos positivos
Pouca utilização de energia
Muito rápido
Pontos negativos
Um tanto centralizado, mais utilizado em blockchains privadas
PoR – Proof of Reputation
Este algoritmo depende da reputação dos participantes para manter a rede segura. Similar ao Proof of Authority, a rede penaliza os participantes que tentam atacar a rede. Uma das grandes diferenças em relação ao PoA é que os participantes são empresas, logo estas precisam ter uma grande reputação para por em risco.
Usado por: GoChain
Pontos positivos
Boas para blockchains permissionadas e privadas
Pontos negativos
Usado apenas em blockchains permissionadas e privadas
PoET – Proof of Elapsed Time
Criado em 2016 pela Intel, este algoritmo funciona como uma loteria, onde todos os nós tem a mesma chance de encontrar um bloco. A cada descobrimento de bloco, cada nó precisa esperar por um período de tempo aleatoriamente escolhido, aquele com o menor tempo é o responsável pelo próximo bloco.
Usado por: HyperLedger Sawtooth
Pontos positivos
Baixo custo de participação
Mais pessoas podem participar, mais descentralizado
Simples verificação da legitimidade do nó selecionado
O custo do controle do processo de eleição do líder é proporcional ao valor ganho com ele
Pontos negativos
Mesmo sendo barato, requer um hardware específico.
Não pode ser adotado amplamente.
Não foi feito para blockchains publicas
PoC – Proof of Capacity ou Proof of Space
O PoC é um algoritmo similar ao PoW, porém ele utiliza um montante incomum de memória ou espaço em disco para resolver um desafio. É uma alternativa mais verde ao PoW por conta do consumo de energia necessitado para armazenamento ser menor.
Usado por: Burstcoin
Pontos positivos
Pouca utilização de energia, e semelhante ao PoW
Pode ser usado para detecção de malware
Pode ser usado para medidas anti-spam e prevenção de ataques DoS
Pontos negativos
Incentivo pode ser um problema
PoH – Proof of History
Ao invés de confiar no timestamp da transação, os participantes podem provar que a transação ocorreu antes ou depois de um evento. Ou seja, caso você tire a foto de um jornal, esta é uma prova de que você tirou a foto após o jornal ser publicado.
Este algoritmo utiliza um hash sequencial que é executado continuamente sobre si mesmo, onde o output anterior é usado como o próximo input.
Usado por: Solana
Proof of Stake Velocity
Utilizado pela Reddcoin, o algoritmo funciona como o PoS todavia a recompensa por alocar capital diminui exponencialmente, fazendo com que seja necessário movimentar as suas moedas para obter o máximo de recompensas.
Proof of Importance
Utilizado pela NEM, além de levar em conta o fator monetário, o algoritmo também considera outros fatores como notoriedade, saldo e número de transações enviada e recebidas. Sendo assim é melhor que o PoS em relação a avaliação do que esta alocado.
Proof of Burn
Ao queimar as moedas, os participantes tem o direito de minerar na rede através de um processo de seleção randômico. Quanto mais moedas queimadas, maior a chance de ser selecionado para minerar o próximo bloco, funcionando como uma loteria.
Proof of Identity
O PoI é uma evidencia criptográfica de que um usuário sabe sobre uma chave privada que é confrontada a uma identidade autorizada e anexada a uma transação específica.
Proof of Activity
Usado pela deCRED, é um algoritmo híbrido que utiliza PoW e PoS. Os blocos são minerados primeiro pelo PoW e depois são validados pelo PoS, as taxas são divididas entre os dois. Uma faca de dois gumes pois herda tanto os pontos positivos quanto negativos dos dois modelos.
Proof of Existence
Utilizado pela Poex e Dragonchain, é um serviço online que verifica a existência de arquivos em uma data especifica através de transações na blockchain do Bitcoin. Pode ser usado para assinar contratos digitais, provar a propriedade dos dados sem revelar os dados em ambos os casos.
Ouroboros
Usado pela Cardano (ADA), é mais uma variação do Proof-of-Stake com uma rigorosa garantia de segurança.
PoSV – Proof of Stake Voting
Usado pela Tomochain, é bem similar ao dPoS, os participantes votam para eleger os validadores de blocos da rede. O algoritmo conta com um sistema de dupla validação, um masternode gera um bloco, outro valida-o e um terceiro masternode faz a chamada dupla validação.
Proof of Retrievability
Usado pela Microsoft, é uma prova compacta de que um arquivo está intacto, sendo assim o cliente pode recuperá-lo totalmente. Por este motivo é atrativo para sistemas de armazenamento remoto de alta segurança. Pode ser útil como algoritmo de consenso para sistemas de computação em nuvem.
Byzantine Fault Tolerance
O Practical Byzantine Fault Tolerance (PBFT) foi escrito em 1999 e hoje é usado pela Hyperledger Fabric é um algoritmo usado por redes permissionadas e privadas para resolver o problema dos generais bizantinos. Tais redes são mais conhecidas por DLT (Distributed Ledger Technology ou Livro-Razão Distribuído em português) do que por blockchain.
Neste mesmo caminho está o Federated Byzantine Agreement (FBA) que são usados pela Ripple com o RPCA (Ripple Protocol Consensus Algorithm) e a Stellar com o SCP (Stellar Consensus Protocol), onde cada nó é responsável pela sua própria chain. Na XRP eles são pré-selecionados pela fundação da Ripple, na XLM qualquer um pode ser um validador, cabe a você decidir em quem confiar.
O Delegated Byzantine Fault Tolerance (dBFT) é utilizado pela NEO, através de votos, os holders podem selecionar quem serão os escriturários. Tais participantes são encarregados pela geração de novos blocos. Sendo uma boa alternativa para descentralização e escalabilidade.
Stellar Consensus
Baseado no fBFT como mostrado acima, caso os nós comportem-se de forma indevida ou dividam-se, o algoritmo interrompe o progresso da rede até que o consenso seja alcançado.
RAFT
Usado pela Quorum e pela IPFS, é uma alternativa ao Paxos de 1989. Um cliente envia um valor para o nó eleito líder, este registro é então replicado aos nós seguidores que confirmam o registro e enviam-o de volta ao líder que então notifica os seguidores de que o registro foi alocado.
Proof of Believability
Utilizado pela IOST, o protocolo de consenso funciona como um PoS porém é dividido em duas partes, a primeira processa as transações rapidamente na primeira fase, e a segunda fornece o caráter definitivo e garante a verificabilidade das mesmas. Desta forma há uma baixa latência e blocos menores, sendo mais rápido que o PoS.
DAG – Directed Acyclic Graphs
Utilizado pela IOTA, HashGraph, Byteball e Nano, sua principal característica é não trabalhar da mesma forma que as outras blockchains cujos blocos são adicionados um por um na rede. Os blocos/transações neste algorítimo são adicionados paralelamente, cada bloco/transação confirma X bloco(s) anterior(es), sendo uma boa alternativa para escalabilidade.
Tangle (IOTA)
Tangle é o algoritmo de consenso DAG utilizado pela IOTA, para realizar uma transação, você precisa verificar duas transações anteriores.
Hashgraph
Protocolo de consenso criado por Leemon Baird onde os nós compartilham as transações com os outros nós aleatoriamente, então eventualmente todas as transações estarão disponíveis a todos os nós em algum momento. Ótimo para redes privadas.
Holochain
Fornece estrutura de dados que pode ser usada para criar dApps. Você tem sua própria chain, na qual você pode adicionar dados, como transações financeiras. As chains podem se mesclar, dividir e interagir de maneiras complexas. Os dados são armazenados de forma descentralizada, como o Bittorrent. Os dados tem um hash, que é a impressão digital matemática que corresponde aos dados. Caso alguém adultere os dados, os mesmos serão rejeitados.
Block-Lattice
Utilizada pela Nano, cada transação é dividida em um bloco de envio na chain do remetente e um bloco de recebimento na chain do destinatário.
SPECTRE
SPECTRE é o acrônimo de Serialization of Proof-of-work Events: Confirming Transactions via Recursive Elections, é uma proposta para escalabilidade do Bitcoin que utiliza PoW e DAG para atingir o consenso. No SPECTRE, os blocos não são minerados de forma linear, então a rede pode lidar com múltiplos blocos por segundo.
ByteBall
O Byteball também utiliza DAG, todavia utiliza uma chain principal dentro da DAG. Quando há uma tentativa de gasto-duplo, a versão da transação que surgir antes é considerada válida, e todas as outras são anuladas. A chain principal gira em torno de usuários bem conhecidos, chamados de witnesses(testemunhas).
Qual o seu algoritmo de consenso preferido? Você prefere mais segurança? Escalabilidade? Descentralização? Há uma imensidão de alternativas no mercado! O setor de blockchain não para de crescer.