Este artigo é uma revisão superficial das principais abordagens para alcançar consenso em um ambiente descentralizado. O material permitirá compreender as tarefas que resolvem os protocolos considerados, o escopo de sua aplicação, os recursos de design e uso e também avaliará as perspectivas de desenvolvimento e implementação em sistemas contábeis descentralizados.
Observe que em uma rede descentralizada, o princípio de redundância é aplicado, com base no fato de que os nós podem fazer o mesmo trabalho. Para uma rede centralizada, isso é naturalmente ineficiente e para uma rede descentralizada, esse é um pré-requisito. Vamos seguir para os requisitos básicos.
Requisitos de protocolo de consenso
Os protocolos devem garantir a operação confiável dos usuários em condições bastante adversas e, ao mesmo tempo, satisfazer os requisitos mínimos. Os principais estão listados abaixo.
Falta de uma parte central confiável . Uma rede consiste em pares. Se um invasor ou um terceiro tentar desativar um certo número de nós, a rede continuará funcionando normalmente até que participantes honestos controlem a grande maioria dos nós da rede.
Membros honestos não sabem quais sites são controlados por cibercriminosos . Supõe-se que outros nós possam falhar ou funcionar arbitrariamente em momentos arbitrários no tempo, inclusive sendo coordenados por atacantes para conduzir um ataque à rede. Novamente, participantes honestos não sabem quais dos nós são honestos e quais são ruins ou não confiáveis.
Supõe-se que a
rede não seja conscientemente confiável . Algumas mensagens podem ser entregues com atraso grave, enquanto outras podem ser perdidas na rede e podem não ser entregues. É nessas circunstâncias que o consenso descentralizado deve continuar funcionando normalmente: todos os nós honestos devem chegar ao mesmo estado do banco de dados de transações confirmadas.
Os protocolos devem ser completamente formais . Nenhum envolvimento humano adicional deve ser e nenhum dado adicional é necessário. Todos os nós honestos devem chegar à mesma solução, seguindo totalmente o algoritmo que o computador executa.
Além disso,
existem certas suposições sob as quais o protocolo garante a operação correta . Nós honestos devem constituir a maioria de todos os participantes: mais de ½ ou ⅔ do seu número total. No entanto, o tempo de tomada de decisão não é limitado. A restrição pode estar relacionada ao número de etapas para tomar uma decisão, mas não ao tempo.
Áreas de protocolos de consenso
Moedas digitais
Antes de tudo, isso se aplica às criptomoedas: o Bitcoin usa o algoritmo Nakamoto, o Ethereum usa uma versão simplificada do GHOST, o Bitshares implementa PoS delegado, etc.
Note-se que uma comunidade que suporta uma determinada moeda digital nem sempre é grande e descentralizada. Há várias outras moedas digitais centralizadas. No entanto, isso não significa que não seja necessário um mecanismo de consenso. Por exemplo, o Ripple usa o protocolo BFT em um ambiente centralizado.
Sistemas críticos e altamente confiáveis
Protocolos de consenso são usados em sistemas de computação altamente confiáveis. Eles podem ser usados para acessar bancos de dados distribuídos na construção de clusters e também são necessariamente usados em sistemas técnicos críticos: podem ser sistemas de controle de equipamentos de aeronaves, sistemas de controle de reatores nucleares e também em tecnologias espaciais.
Em 6 de fevereiro de 2018, ocorreu o lançamento do Falcon Heavy. Foi interessante vê-lo e ler críticas técnicas. Mas não foi menos interessante ler sobre quais algoritmos de consenso a equipe usa. Os engenheiros foram forçados a usar eletrônicos simples, que são vendidos em lojas comuns e não funcionam com muita confiabilidade em condições de espaço difíceis. Portanto, eles usam várias redundâncias em seu trabalho e é necessário obter consenso nesse caso.
Criptomoedas
As criptomoedas funcionam em redes ponto a ponto. Nesse caso, as mensagens ou transações são transmitidas entre os participantes da rede em momentos arbitrários no tempo. Suponha que haja membros localizados nos EUA e membros localizados na Austrália na rede. Os pagamentos enviados dos Estados Unidos serão vistos pelos participantes da América antes dos pagamentos enviados da Austrália. Isso se deve ao grave atraso, pelos padrões do computador, na entrega de uma mensagem de um continente para outro. A situação será semelhante para os australianos, porque eles verão pagamentos da Austrália antes dos pagamentos dos EUA.
A situação descrita acima significa que diferentes participantes da rede verão, em um momento, o estado final do banco de dados com transações. Como as transações vêm de usuários para validadores em momentos diferentes, é necessário um protocolo que permita que cada nó, independentemente de sua localização, receba todas as transações na mesma ordem.
Basicamente, duas abordagens são usadas para a operação dos sistemas de contabilidade de criptomoedas: PoW, que é o mais comum, e PoS, que tem se desenvolvido ativamente recentemente.
No PoW, uma quantidade adicional de trabalho está sendo feita, que agora consiste em encontrar o protótipo da função hash. De fato, há uma desaceleração artificial da rede para garantir a segurança. Para executar uma ação maliciosa, um invasor precisará executar a quantidade necessária de trabalho. Isso requer uma quantidade enorme de energia e torna a implementação de ataques pouco eficaz. Essa abordagem garante a confiabilidade da rede. No entanto, a necessidade de executar uma tarefa que exige recursos limita a largura de banda da rede que é executada neste protocolo. Mas os cientistas continuam trabalhando na abordagem PoW e propondo esquemas alternativos, bem como outras tarefas que consomem muitos recursos, além de procurar a imagem inversa da função hash. Recentemente, foi proposto um algoritmo baseado em
prova de espaço e tempo .
O PoS permite que você forneça maior largura de banda de rede e não requer custos excessivos de energia, como o PoW. No entanto, o PoS requer uma análise mais séria no desenvolvimento e implementação de criptomoedas.
Nos sistemas de contabilidade baseados em PoS, supõe-se que os usuários que possuem um grande número de moedas não sejam lucrativos para atacar. Se em sistemas contábeis baseados em um sistema PoW, um empresário investe dinheiro em equipamentos e paga eletricidade, e depois faz um ataque bem-sucedido ao sistema, ele perde seu investimento em mineração. No PoS, é adotada uma abordagem diferente: se for assumido que o atacante investiu em moedas específicas em cujos valores ele está interessado, no caso de um ataque bem-sucedido ao sistema, ele perderá seus investimentos, pois as moedas serão depreciadas. Portanto, a estratégia mais rentável é considerada uma adesão honesta ao protocolo.
Glossário curto
Segurança - a capacidade do sistema contábil de manter os princípios básicos de funcionamento e os interesses de participantes honestos em caso de influências maliciosas.
Finalidade - uma propriedade que indica a irrevogabilidade de uma decisão ou dados confirmados.
O Liveness é uma propriedade que garante que, se todos os membros honestos desejarem adicionar uma entrada a um banco de dados comum, ela será adicionada lá.
Persistência - a capacidade do sistema contábil de manter a invariabilidade do estado final de seu banco de dados, mesmo após a falha de todos os seus validadores.
Com permissão - indica uma restrição, ou seja, a necessidade de obter permissão para participar de um determinado processo.
Sem permissão - significa acesso livre para participar de um determinado processo.
Protocolo de Consenso de Ouroboros
Ouroboros é um protocolo baseado em PoS que fornece consenso entre os validadores de transações de moeda digital Cardano. Além disso, o próprio algoritmo é a primeira comprovadamente estável entre todas as alternativas de PoS.
Primeiro, considere uma opção mais simples com base na aposta estática, quando for assumido que a distribuição existente de moedas não muda.

Há algum bloco de gênese e os usuários formam novas transações, mas eles não afetam significativamente a distribuição.
O bloco Genesis contém dados com algum valor aleatório, com a ajuda da qual a seleção de validadores ocorre. Eles permitem que você libere o bloco em um determinado momento. O validador que recebeu esse direito coleta transações, recebendo-as de outro validador, verifica a correção e libera o bloco na rede. Se ele vê várias correntes, ele seleciona a mais longa delas e anexa o bloco a ela.
No contexto da situação relacionada à estaca estática, podemos usar essa abordagem por um certo período de tempo, mas a distribuição da estaca (distribuição da estaca) entre diferentes usuários pode mudar. Em outras palavras, parte do dinheiro vai de um usuário para outro, e você precisa ajustar a probabilidade de obter o direito de escolher um bloco.
Nota : a aposta estática implica que um determinado período de tempo a aposta do validador seja considerada inalterada. O validador pode, nesse momento, participar da decisão e efetuar pagamentos, mas o número de moedas em sua estaca e, portanto, o peso de seu voto, permanecerá inalterado até o próximo período de tempo.
No caso de aposta dinâmica, o tempo é dividido em slots, e os slots são divididos em épocas. A duração de uma era é aproximadamente igual à duração de um dia. Essa relação é determinada pelo fato de que durante esse período de tempo a distribuição de moedas não pode mudar significativamente.
No final da era, a distribuição atual de moedas para cada usuário é registrada. Além disso, um novo valor de aleatoriedade é gerado para garantir que, na próxima era, os usuários elegíveis para gerar blocos sejam realmente selecionados aleatoriamente de acordo com o número de moedas que possuem.
Da mesma forma, há proteção contra os chamados ataques de retificação, quando um usuário específico pode selecionar várias opções de blocos, várias opções de aleatoriedade para formar a cadeia na qual ele pode maximizar seu lucro. Criptomoedas baseadas em protocolos PoS de primeira geração, como Peercoin e NXT, são potencialmente vulneráveis a esses ataques.
Os criadores deste algoritmo resolveram os problemas acima. Os validadores iniciam um protocolo especial entre eles, chamado MPC (computação de várias partes) e possibilitam gerar aleatoriedade juntos. Esse protocolo também é comprovadamente robusto, com base em abordagens estabelecidas há muito tempo.
O protocolo Ouroboros fornece persistência, desde que a maioria dos validadores honestos esteja no sistema. Se participantes honestos que trabalham na questão de blocos controlam mais de 50% das moedas no sistema, o protocolo pode ser considerado protegido.
Um mecanismo de incentivos (motivação) para um comportamento honesto foi desenvolvido. Usando a teoria dos jogos, é comprovado que o validador obtém o máximo benefício quando segue as regras do protocolo. Qualquer participação na comissão de ataques não apenas não aumenta o lucro do participante, mas, em alguns casos, pode reduzi-lo. Portanto, a estratégia mais lucrativa para o validador é seguir honestamente as regras do protocolo.
A capacidade do sistema de contabilidade será limitada apenas por atrasos durante a sincronização da rede. Este protocolo fornece alta eficiência energética em comparação com a prova de trabalho, uma vez que as fazendas de mineração não são necessárias aqui. Agora, para a coleta de transações e a liberação de blocos, um computador pessoal normal é suficiente. No futuro, esses cálculos podem ser realizados mesmo em um smartphone comum.
As limitações do protocolo Ouroboros incluem o fato de que a primeira versão do protocolo é síncrona. Isso significa que as mensagens entre os participantes devem ser entregues em um período limitado de tempo. Se houver atrasos mais longos na rede do que o estabelecido nas regras, isso poderá reduzir a segurança. No entanto, já está planejado usar a próxima versão do protocolo - Ouroboros Praos. Nele, mesmo com um aumento nos atrasos da rede, a segurança completa é garantida.
Problemas com PoW no Bitcoin
Considere o consenso subjacente ao Bitcoin. Parte dos blocos gerados por usuários honestos ainda são descartados - esses são os chamados blocos órfãos. Esses blocos são gerados em paralelo com a cadeia principal, mas a maior parte da rede decidiu que essa cadeia não deve ser continuada e os blocos são descartados.
Quando existem poucos desses blocos, não há com o que se preocupar. No entanto, se houver muitos deles, a rede não terá tempo para sincronizar, e acontece que parte do poder computacional dos usuários honestos da rede é desperdiçada. Isso significa que agora o invasor precisa lutar não por 51% do poder de computação da rede, mas por uma porcentagem menor. Se esse valor for 20%, um invasor com 20% do poder de computação e um grande atraso na entrega de mensagens de rede podem implementar um ataque de gasto duplo.
Portanto, no Bitcoin, um intervalo de tempo é definido entre os blocos minados com duração de 10 minutos. Graças a isso, a rede consegue sincronizar claramente e a probabilidade de tais blocos aparecerem é reduzida. Se você precisar aumentar a taxa de transferência da rede aumentando a frequência de formação de blocos, precisará de uma solução diferente.
Ghost
A primeira solução desse tipo foi o protocolo GWOST PoW. Sua versão simplificada é usada na plataforma Ethereum.

Nesse caso, o atacante pode puxar sua corrente (marcada em vermelho na figura) e torná-la a mais longa, mas não estará ganhando. Usuários honestos seguirão a cadeia que construíram antes.
Usuários honestos, neste caso, podem ter duas cadeias. O mais longo (1B-2D-3F-4C-5B), mas será mais curto que a cadeia atacante. A peculiaridade do GHOST é que o algoritmo se concentra não na cadeia mais longa, mas no número de blocos na árvore formados pela cadeia atual. Ele leva em conta não apenas o comprimento da própria corrente, mas também bloqueia em diferentes alturas. Assim, o resultado não é uma cadeia linear, mas uma árvore. O número de blocos nele contidos é levado em consideração.
Se você observar a cadeia 1B-2C-3D-4B, os blocos anexos 3E e 3C estarão visíveis. Pelo número de blocos e pelo trabalho gasto, essa cadeia possui a maior complexidade e será considerada a principal. Usuários honestos continuarão a considerá-lo o principal, apesar das tentativas do atacante de atacar a rede. No consenso tradicional de Nakamoto, esse ataque teria sido bem-sucedido, mas não representa ameaça ao GHOST.
No entanto, a desvantagem do GHOST é o fato de que parte dos blocos ainda está perdida. Nesse caso, a cadeia 2D-3F-4C-5B ainda será descartada. Consequentemente, a questão de eliminar blocos de usuários honestos permanece em aberto.
SPECTRE e FANTASMA
Para aumentar a frequência de formação de blocos e resolver o problema de descartar blocos de usuários honestos, foram propostos mais dois protocolos de PoW: SPECTRE e PHANTOM.

Eles nem sequer usam uma estrutura em árvore, mas o chamado gráfico acíclico direcionado (DAG). Nesse caso, o validador inclui ponteiros para blocos que ainda não são referenciados por outros validadores no cabeçalho de seu bloco, pelo menos no estado da rede que ele vê no momento atual e envia o bloco ainda mais.
Portanto, é obtida uma estrutura na qual estão incluídos todos os blocos que os validadores veem no momento atual. Aqui, o poder de mineração de usuários honestos não está perdido. Além disso, fornece alta largura de banda de rede e um alto nível de segurança. A vantagem dessa abordagem é o fato de o sistema ser verdadeiramente descentralizado.
Vamos comparar os recursos da rede Bitcoin e da rede que funciona usando os protocolos SPECTER e PHANTOM. Se falamos sobre a situação atual na rede Bitcoin, vale a pena dar grande importância às piscinas de mineração. No Bitcoin moderno, 144 blocos são lançados por dia. É esse número que pode ser obtido se o número de minutos em um dia for dividido por 10. Pode ser bem verdade que o validador comprou o equipamento, pagou por eletricidade por um longo tempo, mas não trabalhou para gerar a unidade e, durante esse período, o equipamento estava desatualizado e usado mais sem sentido. Para evitar essa situação, validadores empresariais são combinados em pools de mineração. A maioria dos pools de mineração tem um líder (empresa / organização), que inclina o Bitcoin moderno a centralizar o processo de validação de novas transações.
No caso de SPECTRE e PHANTOM, os pools de mineração não são necessários. Se traçarmos um paralelo com a moderna rede Bitcoin, cada usuário da rede que usa os protocolos SPECTER e PHANTOM terá a chance de liberar um bloco por dia. Assim, a necessidade de piscinas de mineração geralmente desaparece e chegamos a uma rede verdadeiramente descentralizada.
Portanto, os protocolos SPECTER e PHANTOM fornecem um alto nível de descentralização e alta largura de banda de rede, mas você precisa armazenar uma grande quantidade de informações.Protocolos BFT
O próximo tipo de protocolo usado é o protocolo BFT (tolerância a falhas bizantina).
, 80- XX . , - . , . , . , , , , . - , . . , .
BFT- . , , . . , , . , . : .
, ⅔ . BFT- , . BFT- , .
BFT-. , , , , , , Genesis . , . BFT- .
BFT-
Practical BFT
, , Practical BFT. 1999 . . , . . , . , ⅔ .
⅔ , .

, , , , . , , , , . , , , . .
, , DoS- .
HoneyBadger BFT
HoneyBadger BFT . , , . . HoneyBadger : RBC (Reliable broadcast) BA (Byzantine Agreement).

RBC- . , , ⅔ . BA- , .
. , , . . : - , . , , .
Algorand Hashgraph.
Algorand
Algorand 2017 . BFT-, , , . , .

, , , ⅔ , ⅔ . , « » (DoS-). , , adaptive corruption.
, , . , ( , ⅔). .
BFT-, safety persistence. .
, liveness, , . , , ( ) . . , .
Hashgraph
Hashgraph . , , , , .

, : «», , , .
Hashgraph , , , . . , Algorand, . Hashgraph safety liveness, . , .
, , , , . ⅔ , .
BFT
BFT-. . . , ⅔ . , Algorand Hashgraph, .
: permissioned . , . , . , .
permissionless , . . .
Distributed Lab , .Perguntas frequentes
– ?, , . : Algorand Hashgraph BFT-, PoS- Ouroboros. 2018 PHANTOM. .
– Ouroboros , , , ?grinding-, . Ouroboros persistence liveness: , , . , , , .
persistence . , , MPC . , . , MPC , , , . . - , , . . «» ( ), .
– , ?, . . PHANTOM, SPECTRE Ouroboros.
, .
– PHANTOM SPECTRE, ? .PHANTOM SPECTRE . , . PHANTOM SPECTRE , . , . , . , , , .
– BFT -?. PBFT, -, . Algorand Hashgraph, .
– PBFT ?( ) . , , , .
– , Algorand – DPoS (Delegated Proof-of-stake), . Delegated Proof-of-stake , . . Algorand, , .
– , ?SPECTRE PHANTOM – . SPECTRE , .