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 HotStuff com a melhoria proposta no Jolteon / DiemBFT / Fast-HotStuff 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 rodadak+1(ou seja, na comunicação do líder da rodadak+2). Especificamente:Alice, a líder de round
k, envia um novo bloco para todos (junto com um QC ou TC para roundk-1; vamos ignorar isso, pois não é importante).Se
2f+1os validadores votarem SIM naquele bloco, enviando seus votos para Bob (líder da rodadak+1), então o blocok+1incluirá um CQ para a rodadak. Porém, ver o QC da rodadakneste momento não é suficiente para que Valerie, a validadora, saiba que o bloco na rodadakfoi 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 blocok+1, enviando seus votos para Charlie (líder do turnok+2).Se
2f+1os validadores votarem SIM no blocok+1, então Charlie publica um CQ para a rodadak+1, bem como uma proposta de bloco para a rodadak+2. Assim que Valerie recebe este bloqueio, ela sabe que o bloqueio da rodadak(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 de2f+1validadores. Então, pelo menosf+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 roundk+1. Então Charlie publicará o TC da rodadak+1em sua proposta (ele terá que fazê-lo para fazer uma proposta, porque nenhum CQ estará disponível para a rodadak+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
BeB', ele pode cometerBe todos os seus ancestrais.
Referências:
Maofan Yin, Dahlia Malkhi, Michael K. Reiter, Guy Golan Gueta e Ittai Abraham. HotStuff: Consenso BFT nas lentes do Blockchain, 2018.
Mohammad M. Jalalzai, Jianyu Niu, Chen Feng, Fangyu Gai. Fast-HotStuff: um protocolo HotStuff rápido e resiliente, 2020.
Rati Gelashvili, Lefteris Kokoris-Kogias, Alberto Sonnino, Alexander Spiegelman e Zhuolun Xiang. Jolteon e idem: Consenso eficiente adaptativo de rede com fallback assíncrono. Pré-impressão do arXiv arXiv:2106.10362, 2021.
A equipe Diem. DiemBFT v4: Replicação de máquina de estado no blockchain diem. 2021.
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