MonadBFT

Consenso HotStuff bifásico em pipeline

MonadBFT é um mecanismo de consenso de alto desempenho para chegar a um acordo sobre a ordem da transação sob condições parcialmente síncronas na presença de atores bizantinos. É um derivado do HotStuffarrow-up-right com a melhoria proposta no Jolteonarrow-up-right / DiemBFTarrow-up-right / Fast-HotStuffarrow-up-right que é a redução de três rodadas para duas rodadas utilizando complexidade quadrática de comunicação em caso de timeout do líder.

MonadBFT é um algoritmo BFT de duas fases em pipeline com capacidade de resposta otimista e com sobrecarga de comunicação linear no caso comum e comunicação quadrática no caso de timeout. Como na maioria dos algoritmos BFT, a comunicação ocorre em fases; em cada fase, o líder envia uma mensagem assinada aos eleitores, que enviam respostas assinadas ao líder seguinte. O pipeline permite que o certificado de quorum (QC) ou o certificado de tempo limite (TC) do bloco kpegue carona na proposta de blocok+1.

Fatos rápidos

Mecanismo de resistência Sybil

Prova de aposta (PoS)

Tempo de bloqueio

1 segundo

Finalidade

Slot único

Delegação permitida

Sim

Mempool

Consulte Mempool compartilhado.

Protocolo de Consenso

MonadBFT é um mecanismo de consenso em pipeline que funciona em rodadas. A descrição abaixo fornece uma compreensão intuitiva de alto nível do protocolo.

Como é habitual, deixe haver n = 3f+1nós, onde fé o número máximo de nós bizantinos, ou seja, 2f+1(ou seja, 2/3) dos nós são não bizantinos. Na discussão abaixo, vamos também tratar todos os nós como tendo peso de participação igual; na prática, todos os limites podem ser expressos em termos de peso da participação, e não em contagem de nós.

  • Em cada rodada, o líder envia um novo bloco, bem como um QC ou um TC (mais sobre isso em breve) para a rodada anterior.

  • Cada validador analisa esse bloco para adesão ao protocolo e, se concordar, envia votos SIM assinados ao líder da próxima rodada. Esse líder obtém um QC (certificado de quórum) agregando (por meio de assinaturas de limite) votos SIM dos 2f+1validadores. Observe que a comunicação neste caso é linear : o líder envia o bloco para os validadores, os validadores enviam votos diretamente para o próximo líder.

    • Alternativamente, se o validador não receber um bloco válido dentro de um período de tempo pré-especificado, ele transmite uma mensagem de tempo limite assinada para todos os seus pares. Esta mensagem de tempo limite também inclui o CQ mais alto que o validador observou. Se algum validador acumular 2f+1mensagens de tempo limite, ele as reúne (novamente por meio de assinaturas de limite) em um TC (certificado de tempo limite) que envia diretamente ao próximo líder.

  • Cada validador finaliza o bloco proposto na rodada kao receber um CQ da rodada k+1(ou seja, na comunicação do líder da rodada k+2). Especificamente:

    • Alice, a líder de round k, envia um novo bloco para todos (junto com um QC ou TC para round k-1; vamos ignorar isso, pois não é importante).

    • Se 2f+1os validadores votarem SIM naquele bloco, enviando seus votos para Bob (líder da rodada k+1), então o bloco k+1incluirá um CQ para a rodada k. Porém, ver o QC da rodada k neste momento não é suficiente para que Valerie, a validadora, saiba que o bloco na rodada kfoi consagrado, já que (por exemplo) Bob poderia ter sido malicioso e apenas enviado o bloco para Valerie. Tudo o que Valerie pode fazer é votar no bloco k+1, enviando seus votos para Charlie (líder do turno k+2).

    • Se 2f+1os validadores votarem SIM no bloco k+1, então Charlie publica um CQ para a rodada k+1, bem como uma proposta de bloco para a rodada k+2. Assim que Valerie recebe este bloqueio, ela sabe que o bloqueio da rodada k(bloqueio de Alice) está finalizado.

    • Digamos que Bob tenha agido de forma maliciosa, enviando uma proposta de bloco inválida em round k+1ou enviando-a para menos de 2f+1validadores. Então, pelo menos f+1os validadores atingirão o tempo limite, acionando o tempo limite dos outros validadores não bizantinos, fazendo com que pelo menos um dos validadores produza um TC para round k+1. Então Charlie publicará o TC da rodada k+1em sua proposta (ele terá que fazê-lo para fazer uma proposta, porque nenhum CQ estará disponível para a rodada k+1).

    • Referimo-nos a este procedimento de compromisso como uma regra de compromisso de 2 cadeias, porque assim que um validador vê 2 blocos adjacentes certificados Be B', ele pode cometer Be todos os seus ancestrais.

Referências:

Multi-assinaturas BLS

Os certificados (QCs e TCs) podem ser implementados ingenuamente como um vetor de assinaturas ECDSA na curva secp256k1. Esses certificados são explícitos e fáceis de construir e verificar. No entanto, o tamanho do certificado é linear com o número de signatários. Isso representa um limite para o escalonamento porque o certificado está incluído em quase todas as mensagens de consenso, exceto nas mensagens de votação.

A assinatura BLS baseada em emparelhamento na curva BLS12-381 ajuda a resolver o problema de escala. As assinaturas podem ser agregadas de forma incremental em uma assinatura. A verificação da única assinatura agregada válida fornece prova de que todas as apostas associadas às chaves públicas foram assinadas na mensagem.

A assinatura BLS é muito mais lenta que a assinatura ECDSA. Portanto, por razões de desempenho, o MonadBFT adota um esquema de assinatura combinada onde a assinatura BLS é usada apenas em tipos de mensagens agregáveis ​​(votos e tempos limite). A integridade e autenticidade da mensagem ainda são fornecidas pelas assinaturas ECDSA.

Last updated