segunda-feira, 14 de maio de 2018

Falha Bizantina

O Problema dos Generais Bizantinos consiste em cercar uma cidade localizada num relevo que os separa. Daí só conseguem comunicação por meio de mensageiros e sabem que só vencerão caso ataquem simultaneamente. Nesta premissa se instala o conceito de Falha Bizantina que modela qualquer tipo de falha arbitrária.
Cada divisão possui um comandante necessitando decidir sobre um plano comum, mas surge a suspeita de traição entre eles. Com um traidor num grupo de três os demais podem decidir sobre o plano mas não conseguem consenso, ficando fácil determinar impostor. Este conceito aplica-se nas redes distribuidoras de computação tornando-se essência da resiliência de um blockchain, ou, se o consenso não pode ser feito para determinada transação o blockchain não é bom.
Quando são enviadas informações conflitantes a diferentes partes do sistema, surge a Tolerância a falhas necessária nos sistemas computacionais. Se dois terços mais um dos generais ou 'processos computacionais' forem leais, quer dizer, 'não falharem' a solução ou 'algorítimo' resultará em ação comum independente de mensagens enviadas por traidores. Se um terço ou mais dos generais ou 'processos computacionais' forem traidores, quer dizer, 'falharem' não existirá solução ao problema.
Moral da nota: as falhas dos sistemas ocorrem no hardware, software, energia, conectividade de rede etc. A Falha Bizantina implementa serviços confiáveis num sistema distribuído, cujas máquinas que entram e saem tem responsabilidade na segurança via criptografia. O objetivo da Tolerância a Falhas Bizantinas é defender a plataforma distribuída, cujos componentes do sistema com falha não impedem os demais se ajustarem visando execução de uma operação dando continuidade ininterrupta ao serviço parecendo infalível.