Protocolo de consenso estelar

O Stellar Consensus Protocol (SCP) é o algoritmo de consenso subjacente da Stellar Network que funciona como uma construção comprovadamente segura do Acordo Federado Bizantino (FBA). A rede Stellar implementa muitos mecanismos semelhantes para tolerância a falhas distribuída em uma rede financeira como outras criptomoedas com algumas variações distintas.

Protocolo de consenso estelar

O SCP é derivado do conceito de Acordos Bizantinos (BA) e feito sob medida para uma rede descentralizada e sem permissão usando quóruns e fatias de quorum. Compreender o SCP requer um breve histórico dos BAs e como eles se comparam aos FBAs, seguido por uma descrição dos quóruns e fatias de quorum, o modelo de votação federada e, finalmente, o sistema de voto de confirmação / aborto do próprio protocolo SCP.

Acordos Bizantinos e Acordos Federados Bizantinos

Acordo Bizantino é Tolerância a falhas bizantinas de sistemas de computação distribuídos que permitem chegar a um consenso, apesar do comportamento arbitrário de uma fração dos nós da rede. O consenso BA não faz suposições sobre o comportamento dos nós no sistema. Tolerância prática a falhas bizantinas (pBFT) é o modelo prototípico para o acordo bizantino, e pode chegar a um consenso rápido e eficiente enquanto simultaneamente dissocia o consenso dos recursos (ou seja, participação financeira em PoS ou eletricidade em PoW).

Tolerância prática a falhas bizantinas

Leia: O que é tolerância prática a falhas bizantinas?

No entanto, BA (pBFT) não se adapta bem e requer uma grande sobrecarga de comunicação entre todos os nós participantes. Além disso, o sistema precisa de um acordo unânime sobre a adesão da rede para mitigar Ataques de Sybil.

O Acordo Federado Bizantino foi introduzido pelo Livro Branco SCP e aborda explicitamente as limitações da BA, promovendo um protocolo de consenso que garante o seguinte:

  • Controle Descentralizado
  • Confiança flexível
  • Baixa latência
  • Segurança Assintótica

Uma das principais consequências do FBA em comparação com o BA é que um sistema FBA está aberto para os nós que se juntam em uma configuração sem permissão, em vez de por meio de uma lista de membros fechada (com permissão).

A FBA chega a um acordo sobre atualizações de estado usando um exclusivo fenda onde as dependências de atualização entre os nós são inferidas. Os nós devem concordar com a atualização do slot em cada rodada de consenso. No entanto, como o sistema está aberto para os nós que entram e saem da rede à vontade, um mecanismo de consenso de quorum baseado na maioria não funcionará. Em vez disso, o FBA no SCP emprega fatias de quorum que são subconjuntos de quóruns que são capazes de convencer nós específicos de um acordo.

De acordo com o Stellar blog:

“A principal diferença entre um sistema de acordo bizantino e um sistema de acordo bizantino federado (FBAS) é que no FBA cada nó escolhe suas próprias fatias de quorum.”

Quorums e fatias de quorum serão discutidos em mais detalhes abaixo, mas a principal lição aqui é que nós individuais podem decidir independentemente em quais outros nós (participantes) eles confiam para obter informações. Portanto, SCP é o primeiro protocolo BA a dar a cada participante o máximo de liberdade para selecionar em quem confiar.

Quorums e fatias de quorum

UMA quorum é definido como um conjunto de nós necessários para chegar a um acordo em um sistema distribuído. Quando os nós tentam chegar a um acordo, eles se comunicam entre si (supondo que nenhuma mensagem seja forjada – a criptografia entra aqui) e concordam que uma atualização no estado é válida uma vez que um limite específico de nós em acordo seja atingido.

Fatias de quorum são os subconjuntos de um quorum que são capazes de convencer nós específicos de um acordo, o que significa que um nó pode contar com vários conjuntos de nós que afirmam declarações. Um nó pode depender de várias fatias para obter informações e essa confiança pode ser baseada em informações de fora do sistema. Notavelmente, a confiança é configurada dentro o nó config arquivo, permitindo a formação dinâmica de fatias de quorum e subsequente descentralização.

Como um exemplo:

O Nó A pode determinar que não confia em bancos, resultando na necessidade de outra fatia do quorum em que o Nó A confia para chegar a um acordo com os bancos. Uma vez que um acordo é alcançado, um quorum é formado. O gráfico a seguir é excelente para melhor compreensão deste exemplo. O nó 7 (e 8) representaria o nó A que não confia em bancos.

Crédito da imagem – David Mazieres Apresentação no Google

BA tradicional requer que todos os nós aceitem as mesmas fatias, em vez de discernir fontes de informações confiáveis ​​para eles próprios. Como tal, não há como distinguir fatias e quóruns, exigindo um acesso de membro fechado e com permissão à rede.

O modelo FBA depende de nós individuais para escolher seus próprios conjuntos de fatias de quorum, permitindo efetivamente a formação orgânica e mais descentralizada de quóruns que dependem de decisões individuais, daí o nome “federado”. Em discussão segurança e vivacidade no protocolo FBA, precisamos avaliar intersecção do quorum e quóruns disjuntos.

De acordo com o white paper do SCP:

“Um protocolo pode garantir acordo somente se as fatias de quorum representadas pela função Q satisfizerem uma propriedade de validade que chamamos de interseção de quorum.”

Os quóruns se cruzam se eles compartilham um nó. Bons quóruns compartilham nós e levam a quóruns sobrepostos. Os nós são responsáveis ​​por garantir que sua seleção de fatias de quorum não viole a interseção do quorum e, normalmente, exige que os nós selecionem fatias que são conservadoras e levam a grandes quóruns.

Quando os quóruns não se cruzam, eles são conhecidos como quóruns disjuntos. Quóruns desconexos são quóruns ruins que podem levar a declarações contraditórias que prejudicam o consenso. Para garantir um processo de seleção de fatias adequado, os nós precisam equilibrar segurança e vivacidade.

Os nós carecem de segurança quando externalizam valores que contradizem outros nós. Os nós perdem vitalidade quando são bloqueados no caminho para o acordo. O modelo de votação federada desempenha um papel crítico nos nós que chegam a um acordo sobre uma declaração.

Votação Federada

A votação federada é o método pelo qual o SCP concorda com as declarações feitas pelos participantes. No geral, existem dois conjuntos de mensagens trocadas entre os nós, e as duas rodadas de mensagens podem ser subdivididas em estados de concordância de desconhecido, aceitaram, e confirmado. Notavelmente, a votação em um ambiente federado deve acomodar a adesão aberta, o que torna o processo mais complicado do que um sistema fechado.

O processo de votação federada consiste em 4 fases:

  1. Votação Inicial
  2. Aceitação
  3. Ratificação
  4. Confirmação

Votação inicial é onde os nós votam em uma declaração específica que afirmam ser válida e que não votarão em declarações contraditórias. No entanto, isso ainda deixa em aberto a possibilidade de o nó mudar seu voto se um número suficiente de outros nós participantes – em que um nó confia – votarem em outra mensagem válida. Votos nesta fase são votos tecnicamente preliminares.

Aceitação é o estágio em que um nó aceita uma declaração com base em se esse nó específico aceitou ou não uma declaração contraditória ou uma bloqueio v conjunto de nós que estão em fatias de quorum com aquele nó (interseção de quorum) aceita uma instrução. Se o nó não aceitou uma declaração contraditória ou um conjunto de v-bloqueio de votos de nós para aceitar uma declaração, então a declaração é aceita pelo nó.

Ratificação é onde todos os membros de um quorum votam para aceitar uma declaração. Se o fizerem, a declaração é ratificada pelos nós. Voltando ao Nó A que não confia em bancos, se os nós com os quais o Nó A compartilha uma fatia do quorum, além de outros nós nos quais ele confia, votam para aceitar uma declaração, então ele é ratificado pelo Nó A.

Confirmação é um acordo de todo o sistema sobre uma declaração. O sistema concorda com uma declaração específica assim que um limite suficiente de mensagens é processado na rede. Os nós propagam mensagens de aceitação pela rede a partir dos nós em seu quorum. Essas mensagens podem influenciar outros nós a aceitar a mensagem, mesmo que eles tenham aceitado uma mensagem inicial diferente. Finalmente, uma rodada de mensagens de confirmação é transmitida para confirmar a mensagem, concluindo a rodada de votação.

O mecanismo de votação é complicado, mas Stellar oferece alguns recursos excelentes sobre como mapeá-lo de forma mais eficaz. Eles fornecem um “Consenso Galáctico”Gráfico para uma visão geral mais ampla, bem como uma postagem de blog útil usando o Exemplo de hora do almoço. Para um aprofundamento técnico, você pode ler a seção Votação Federada do Papel SCP.

O Protocolo de Consenso Estelar

O SCP é a implementação do Protocolo do Acordo Federado Bizantino projetado para minimizar as instâncias de acordo bloqueado e neutralizá-las por meio de um sistema de votação. O protocolo SCP é composto por 2 subprotocolos primários, o protocolo de nomeação e o protocolo de votação.

Para cada slot de consenso, o protocolo de nomeação produz valores candidatos. Eventualmente, cada nó pode gerar deterministicamente um valor de convergência para cada slot. No entanto, eles não podem conhecer quando a convergência ocorre, e nós maliciosos podem ser capazes de redefinir o processo de nomeação.

O protocolo de votação é executado quando os nós concordam que o protocolo de nomeação convergiu. No protocolo de votação, uma cédula está vinculada ao valor do candidato, e um nó deve comprometer ou abortar o valor vinculado a essa votação. Para evitar o bloqueio do acordo, os nós podem abortar certos votos e passar para outro. Por outro lado, os nós podem votar para submeter uma cédula, o que externaliza o valor associado a essa cédula para o espaço de consenso.

Em um alto nível, a maneira como o SCP trata cada slot de forma independente é semelhante ao consenso de slot único em Paxos, apenas com muitas instâncias separadas.

Não há estados bloqueados no SCP com interseção de quorum. Os nós contaminados – nós que dependem fortemente de nós defeituosos – podem até ser contornados por meio de um mecanismo de conjunto dispensável, onde os nós bons podem ratificar declarações sem a cooperação de nós contaminados. Nós com contaminação também não podem prejudicar o consenso.

Tanto o protocolo de nomeação quanto o protocolo de votação contêm alguns detalhes altamente complexos para cenários específicos, como votos divididos. Esses detalhes também estão disponíveis no documento SCP.

Uma das limitações do SCP é que ele só pode garantir a segurança se os nós escolherem fatias de quorum adequadas. Além disso, problemas de segurança em sistemas federados, como nós amplamente confiáveis, aproveitando suas posições para obter vantagens antiéticas, é uma possibilidade. Por exemplo, se os bancos dependem de uma vasta gama de nós, eles podem ter uma vantagem de informação não disponível para outros nós na rede.

Conclusão

No geral, o SCP é o primeiro protocolo de consenso comprovadamente seguro que pode fornecer controle descentralizado, baixa latência, confiança flexível e segurança assintótica. Diferentes formas de consenso vêm com suas compensações, mas o SCP mantém um alto nível de eficácia para chegar rapidamente a um consenso em uma rede distribuída e sem permissão, sem sacrificar a segurança.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me