Funcionamento e segurança de blockchains

Forks, consenso e tentativas de ataque à rede

No artigo “O que é blockchain afinal?”, discutimos um pouco sobre como uma blockchain é mantida, falando de verificação por participantes e a corrente formada pelas “identidades” dos blocos. Neste artigo, aprofundaremos um pouco mais no tópico do funcionamento de uma blockchain e como manter segurança na rede, discutindo aspectos um pouco mais técnicos.

Existem várias maneiras de estabelecer consenso entre participantes em uma blockchain, que é um aspecto extremamente importante, já que não existe uma autoridade na rede. Por isso, é necessário então que exista um protocolo rígido que permita que participantes beneficiem a rede e não tenham incentivo para atacá-la. Hoje em dia, existem vários protocolos diferentes que buscam manter a rede eficiente e segura, e o mais conhecido destes é o protocolo do bitcoin, chamado Proof of Work.

No protocolo Proof of Work do bitcoin, mineradores usam seu poder de computação para resolver problemas complexos de matemática para provar que o bloco que eles estão verificando é legítimo. Para isso, eles usam tempo, energia, e recursos, e então, o primeiro minerador a resolver um bloco é recompensado com bitcoins. Por causa desta recompensa, existe um incentivo para que mineradores façam o trabalho direito e compitam para resolver o bloco. E como há uma competição, é possível que dois ou mais mineradores diferentes resolvam o mesmo bloco ao mesmo tempo, criando versões diferentes da mesma corrente.

Ilustração mostrando a criação de várias correntes a partir de versões diferentes do mesmo “Bloco 11”

Como podemos ver na ilustração acima, quando mineradores verificam um bloco ao mesmo tempo, a corrente é dividida (o que chamamos de fork), e os próximos mineradores precisam escolher em qual corrente colocar seu próximo bloco. Entra então a ideia de consenso. A medida que os mineradores dos blocos 12, 13, 14 e por aí em diante escolhem em qual corrente colocar seu bloco, uma corrente eventualmente será mais longa do que as outras, e isto significa que ela deve ser considerada como válida. Na ilustração acima, a corrente do bloco 11A está claramente maior do que as outras, então novos mineradores resolvem colocar seus blocos nela, fazendo que a corrente cresça e que as outras correntes morram e sejam invalidadas.

Na maioria das vezes, isto é uma questão de sorte. Todos os blocos são válidos, mas por causa da velocidade de propagação pela internet, a maioria dos mineradores seguintes recebe uma versão do bloco e então sua corrente acaba sendo mais longa e considerada válida. Porém, este protocolo possuí uma grande vantagem. Se por alguma razão, um minerador resolver validar um bloco malicioso — por exemplo um bloco contendo uma transação inválida do próprio minerador; a rede tem o poder de parar isto. Como todas as correntes mais curtas eventualmente acabam, todas as recompensas ganhas e transações feitas nestas correntes passam a não ser válidas. Por isso, mineradores querem sempre colocar seu bloco na corrente válida, já que eles querem ter certeza de que serão recompensados. Então, se há alguma disputa sobre qual bloco é válido, ou alguma atividade suspeita, os mineradores seguintes checam o bloco anterior para ver se ele é realmente válido, já que eles não querem que seu bloco seja também invalidado. Com isso, se um bloco malicioso for criado, ele será checado pelos mineradores seguintes, que irão então seguir uma outra corrente que é realmente válida, invalidando qualquer tentativa maliciosa. E como o bloco possui a assinatura do minerador, outros participantes podem optar por não confiar em seus novos blocos daqui para a frente, causando grande perda de recompensas para o minerador malicioso.

Pelas razões explicadas acima, a rede consegue se manter segura sem uma autoridade, porque todos os seus participantes servem como zeladores de sua segurança, e existe um ganho maior para aqueles que contribuem para rede de maneira correta do que para aqueles que tentam burlar as regras. Este protocolo tem até hoje funcionado muito bem, não permitindo nenhum ataque de sucesso à blockchain do bitcoin. Porém, ele possui uma possível vulnerabilidade, chamada “ataque de 51%”, sobre a qual você pode ler clicando aqui.

Estas divisões na corrente, ou forks, acontecem várias vezes em um dia, simplesmente por causa da velocidade de propagação dos blocos pela internet. Quase sempre elas são resolvidas rapidamente e de maneira automática, por computadores pré-programados para lidar com a situação. A maior parte dos participantes da rede do bitcoin beneficia a rede, não necessariamente porque querem ajudar, mas porque ao ajudar a rede, participantes estão beneficiando a si mesmos. Porém, caso haja realmente um problema, o protocolo permite que este seja facilmente eliminado, fazendo uso do poder de seus participantes, que servem como reguladores de uns aos outros. Criar um bloco malicioso leva trabalho, porém checar sua validade em retrospectiva é simples, e é assim que a blockchain do bitcoin e várias outras se mantém funcionando seguramente sem uma autoridade exercer controle.


Se quiser ler mais sobre blockchain em português, clique abaixo:

Mais artigos sobre blockchain

Se gostaria de fazer perguntas, pode conversar com nosso robô ou um membro do nosso time no Facebook:

Chatbot de blockchain

Se morar ou estiver em Belo Horizonte, talvez se interesse por nossas palestras, eventos, e cursos sobre blockchain:

BlockchainBH website

BlockchainBH no Facebook

Buscamos brevemente também começar a oferecer eventos em outras cidades, registre-se conosco para saber mais:

Registro