Baixe o app para aproveitar ainda mais
Prévia do material em texto
Tolerância a Falhas Bizantinas Bruno F. S. Beltrame, Cristian Abramchuk, Jackson. F. Magnabosco, Marco Cavalett, Teyson Lorenzon Introdução O pBFT foi projetado para funcionar eficientemente em sistemas assíncronos ( onde um grupo de computadores pode chegar a um acordo, embora existam muitos “traidores” como parte da rede). Seu objetivo era resolver muitos problemas associados às soluções de tolerância a falhas bizantinas já disponíveis e dar uma resposta coerente a falhas do sistema. As áreas de aplicação incluem computação distribuída e blockchain. História A tolerância prática a falhas bizantinas é um algoritmo de consenso introduzido no final dos anos 90 por Barbara Liskov e Miguel Castro. Como Funciona? Tolerância a Falhas Bizantinas A tolerância a falhas bizantinas (BFT) é o recurso de uma rede distribuída para alcançar consenso (acordo com o mesmo valor) mesmo quando alguns dos nós da rede falham em responder ou respondem com informações incorretas. Tipos de Falhas ● Falhas de consenso. ● Falhas de validação ● Falhas ao verificar dados. ● Falhas no protocolo de resposta em situações de rede. Problema dos Dois Generais Esse problema ( publicado pela primeira vez em 1975 e nomeado em 1978) descreve um cenário em que dois generais estão atacando um inimigo comum. Líder SeguidorInimigo Generais Bizantinos O problema foi explicado em um artigo por LESLIE LAMPORT, ROBERT SHOSTAK e MARSHALL PEASE na Microsoft Research em 1982 Descreve o mesmo cenário, porém, mais de dois generais precisam chegar a um momento de atacar seu inimigo comum. 1. Comandante envia v a todos os tenentes; 2. L1 envia v para L2 | L3 envia x para L2; 3. L2 ← maioria (v, v, x) == v. OM (1): O tenente 3 é um traidor - ponto de vista de L2 1. O comandante envia x, y, z para L1, L2, L3, respectivamente 2. L1 envia x para L2, L3 | L2 envia y para L1, L3 | L3 envia z para L1, L2 3. L1 ← maioria (x, y, z) | L2 ← maioria (x, y, z) | L3 ← maioria (x, y, z) Tolerância a Falhas Bizantinas Para que o modelo pBFT funcione, a suposição é que a quantidade de nós maliciosos na rede não pode simultaneamente igualar ou exceder ⅓ do total de nós no sistema em uma determinada janela de vulnerabilidade. Quanto mais nós no sistema, mais matematicamente improvável é que um número próximo de ⅓ dos nós gerais seja malicioso Tolerância a Falhas Bizantinas O algoritmo efetivamente fornece vivacidade e segurança, desde que no máximo (n-1) / 3, onde n representa o total de nós, seja malicioso ou defeituoso ao mesmo tempo. Tolerância a Falhas Bizantinas Cada rodada de consenso de pBFT (chamadas visualizações) se resume a quatro fases. Esse modelo segue mais o formato de “comandante e tenente” do que o problema dos generais bizantinos puros, onde todos os generais são iguais, devido à presença de um nó líder. Tolerância a Falhas Bizantinas ➔ Um cliente envia uma solicitação ao nó líder para chamar uma operação de serviço. ➔ O nó líder faz multicast da solicitação para os nós de backup. ➔ Os nós executam a solicitação e, em seguida, enviam uma resposta ao cliente. ➔ O cliente aguarda f + 1 (f representa o número máximo de nós que podem estar com defeito) respostas de nós diferentes com o mesmo resultado. Este resultado é o resultado da operação. Tolerância a Falhas Bizantinas O nó líder é alterado em um formato de round robin durante todas as visualizações e pode até ser substituído por um protocolo chamado alteração de visualização se uma quantidade específica de tempo tiver passado sem que o nó líder faça o multicast da solicitação. Uma grande maioria de nós honestos também pode decidir se um líder está com defeito e removê-lo com o próximo líder na fila como substituto Artigos practical Byzantine Fault Tolerance(pBFT), Parikshit Hooda. {https://www.geeksforgeeks.org/practical-byzantine-fault-tolerancepbft/} Understanding Blockchain Fundamentals, Georgios Konstantopoulos. {https://medium.com/loom-network/understanding-blockchain-fundamentals-part-1-byzantine-fault-tolerance-245f46fe841 9} https://auth.geeksforgeeks.org/user/Parikshit%20Hooda/articles https://www.geeksforgeeks.org/practical-byzantine-fault-tolerancepbft/ https://medium.com/@gakonst?source=post_page-----245f46fe8419---------------------- https://medium.com/loom-network/understanding-blockchain-fundamentals-part-1-byzantine-fault-tolerance-245f46fe8419 https://medium.com/loom-network/understanding-blockchain-fundamentals-part-1-byzantine-fault-tolerance-245f46fe8419
Compartilhar