Uma excelente introdução de Dahlia Malkhi, Lead Researcher no projeto Calibra sobre Byzantine Fault Tolerance (BFT) no CES Summit’19.
Excelente pelas seguintes razões:
- deu a conhecer melhor o projeto do Facebook, que considero que não teve uma boa receção por parte da comunidade de criptoentusiasas;
- deu a conhecer os avanços da equipa por detrás do projeto Libra, pessoas muito experientes com currículos académicos muito interessantes;
- deu a conhecer o sistema de consenso BFT.
NOTA: Não deixa de ser interessante o facto desta apresentação ter sido efetuada poucas semanas depois da audiência de David Marcus (Head of Calibra) sobre a Libra perante o Senado dos EUA. Nesta audiência, que recomendo a visualização, foram colocadas inúmeras questões pelo Senado, sendo uma das mais importantes sobre o seu sistema de consenso, ao qual David respondeu que a Libra Association tomará decisões por um quórum de consenso de dois-terços, mais precisamente 2/3 + 1!
Primeiro o básico: O que é o Byzantine Fault Tolerance?
Este é o melhor video introdutório que encontrei:
Portanto em poucas palavras, o BFT é a propriedade que um sistema tem de resistir a vários tipos de falhas que podem ser causadas pelo “dilema dos generais bizantinos”. Isso significa que um sistema BFT é capaz de continuar operando mesmo que alguns nós da rede falhem ou se comportem de forma maliciosa.
A BFT foi criada inicialmente com um propósito muito diferente do que o que temos hoje em dia. Malkhi fala de um cenário de um sistema de quatro computadores em rede num ambiente de missão crítica (como por exemplo o sistema de comando central de uma sonda espacial), ao qual precisam criar um sistema de controle que tenha resiliência.
Existem várias formas de resolver o problema dos generais bizantinos e, portanto, vários métodos de se construir um sistema BFT. De forma parecida, muitas abordagens podem ser exploradas para que um sistema Blockchain possa fazer o BFT funcionar corretamente, levando-nos ao tão desejado algoritmo de consenso.
Como sabemos, o Bitcoin é um caso mais conhecido de uso do BFT, contudo sabemos que não resolve todos os problemas, como:
- desperdício de energia;
- escala; e
- não sendo a solução que dará adoção global (adoção séria pelas empresas).
Foi este contexto que nos últimos anos tem surgido imensa produção de conhecimento na área sobre a criação de novas ideias e projetos originais, a fim de apresentar uma alternativa à BFT.
Isto porque, se foram precisos 17 anos desde a criação do BFT à primeira solução prática (o Bitcoin), a atenção que este novo tema tem gerado seguramente trará novas disrupções em períodos mais curtos.
E assim chegamos ao projeto Libra.
Porque a libra é diferente?
- Construído em uma blockchain segura, escalável e confiável;
- Apoiado por uma reserva de ativos que garante valor intrínseco;
- Governado pela Associação Libra independente, encarregada de desenvolver o ecossistema;
- Projectado para colaborar e cumprir com os regulamentos estabelecidos pelos governos, ao contrário de outras redes que ignoram os regulamentos;
- Aproveita os recursos de distribuição de empresas globais que ajudarão na adoção de maneira compatível.
Libra mantém um banco de dados de recursos programáveis via Consenso de BFT
Atualmente o consenso permitido com base no consenso HotStuff BFT, mas futuramente transitará para um sistema mais descentralizado, com recurso ao PoS (Proof-of-Stake ou “prova de participação).
Sendo que Libra será o nome da criptomoeda e ‘Calibra’ a carteira (wallet), com lançamento planeado para 2020, ou melhor:
Libra – blockchain é a infraestrutura comum (a rodovia)
Calibra – é a carteira – apenas a 1ª aplicação (automóvel)
Ir além das abordagens clássicas dos protocolos de consenso
Na abordagem clássica aos protocolos de consenso (como BFT), temos:
- o administrador faz suposições (é a rede, sincronia ou parcial ou assincronismo)
- segue-se a revisão de literatura “de consenso” para encontrar os melhores protocolos de consenso (PBFT Tolerando 1/3 de falhas bizantinas em um ambiente parcialmente síncrono);
- depois de encontrar a solução pretendida segue-se a implementação.
Sendo assim então por que precisamos de algo novo? Tivemos uma evolução muito boa, mas a questão é: o modelo é o certo?
Temos portanto de procurar um novo modelo:
Limitação #1 | O modelo é o correto?
(Falhas de benignas) |
Limitação #2 | Estamos indo para um modelo estático?
(podemos suportar várias implementações dentro dessa estrutura?) Ou sejam, podemos acomodar Ao executar os sistemas, podemos aprender mais que podemos mudar |
Limitação #3 | Sem recuperação?
(E se suposições violadas => colapso total) O que acontece com uma violação? Perder tudo? |
Limitação #4 | Nenhuma resiliência a desastres?
(o que acontecerá se um desastre realmente acontecer?) |
Soluções
- assumir menos falhas bizantinas
– talvez a maioria seja benigna, talvez não seja necessária. “Bizantino” é o pior tipo de falhas - modelos flexíveis de BFT
– aqui não se assume que o bizantino é o pior tipo de falha.
E chegamos ao trabalho conjunto de Dahlia Malkhi, Kartik Nayak e Ling Ren de nome: “Flexible Byzantine Fault Tolerance”
É um Modelo híbridos de falhas, que mesmo assim assume que o “Bizantino” é o pior tipo de falha
Em poucas palavras:
A Flexible BFT (em tradução livre: Tolerância a Falhas Bizantina Flexível) fornece 2 contribuições:
(uma nova abordagem para projetar soluções BFT)
- maior resiliência – Tolerar um número maior de falhas do que o que é conhecido;
- diversidade – Coexistência de alunos com diferentes crenças e suposições sobre o mesmo mecanismo de consenso.
Contribuição #1 | uma nova linha de falha: alive-but-corrupt – ABC (tradução livre: falha viva-mas-corrompida).
um adversário que ataca a segurança, mas não a vivacidade. Isto porque um adversário tem interesse em manter o sistema ativo e receber compensações dele. Ele pode apenas querer quebrar a consistência: p.ex. double spend, gastar dinheiro, etc. sem quebrar o sistema. total de falhas: # falhas bizantinas + # falhas a-b-c isto significa que podemos tolerar um número maior de falhas totais. |
Contribuição #2 | apoiar a diversidade (a administração faz todas as suposições)
Ou seja, mesmo protocolo mas suposições diferentes os utilizadores iniciais fazem suas próprias suposições e interpretam o transcrito gerado pelas réplicas. (suposições de rede, tipo e número de falha, Delta) BFT flexível: uma família de protocolos que separam o modelo de falha da solução |
Contribuição #3 | podemos apoiar a recuperação
se um aluno faz uma suposição incorreta e falha, ele pode se recuperar escolhendo suposições mais seguras. |
Quais são as aplicabilidades do Flexible BFT?
- alternar (assíncrona) quando o nível de corrupção se aproxima de 1/3;
- (sincronização) alterna para o modo assíncrono contra ataque de assíncrona;
- recuperar de confirmações conflitantes (fork);
- executar pontos de verificação periódicos de segurança;
- proteger transações de alta participação.
Legenda:
BFT – área cinzenta
Flexible BFT – área verde (synchronous assumptions)
Flexible BFT – área laranja (asynchrounous assumptions)
Conclusão
Confesso que o projeto Libra tem sido uma agradável surpresa. A minha primeira impressão não foi positiva, fruto da contaminação por parte da comunidade cripto, sempre muito resistente às incursões corporativas no meio. Mas a verdade é que o projeto Libra não é de todo apenas mais um marcar de presença, existe aqui muito risco envolvido, desde corporativo, reputacional e até regulamentar (daí a audiência de David Marcus) e existe disrupção, se o Flexible BFT se tornar realidade irá tornar-se uma referência na história ainda recente das criptomoedas e fator critico de sucesso para a tão esperada adoção em massa.
De resto, o que mais posso dizer senão “what a time to be alive!“. Um artigo científico publicado em junho de 2019, uma equipa de investigadores de luxo e um projeto suportado logística e financeiramente pela 6ª empresa mais rica do mundo (Facebook, com um marketcap de 511,35 Bi USD). Se vai correr certo não será garantido, mas o seu impacto no ecosistema já se está a sentir.
Para aprenderem mais sobre Flexible BFT, aqui estão algumas fontes:
- O blog oficial de Dahlia Malkhi: https://dahliamalkhi.wordpress.com/2019/04/24/flexible-byzantine-fault-tolerance/
- Outro vídeo muito interessante: