Categorias
Como funcionam? Cryptoassets

Forks – Melhorias na Blockchain

Como falámos no último artigo, uma das primeiras aplicações descentralizadas foi a DAO. Esta DApp foi um fracasso, já que muitos dos fundos angariados foram desviados por um hacker que conseguiu aceder à rede devido a alguns defeitos de programação. Sendo um projecto numa tecnologia inovadora, também a solução para o problema criado teria que ser inovadora.

Sendo um projecto com bastante importância para a rede Ethereum naquela fase eram necessárias medidas especiais para corrigir esta situação – o interesse em redor do projecto era enorme, afinal, tinham sido angariados 15% do ether criado até então. Por isso, a equipa da DAO teve a ajuda de Buterin e a restante equipa do Ethereum.

No final, a solução encontrada foi lançar uma actualização ao software do Ethereum para corrigir o problema que permitiu ao hacker desviar os seus fundos. Seria também necessário remover forçosamente os fundos da conta do hacker, e devolvê-los aos proprietários originais. No entanto, esta solução levantou questões importantes que dividiram a comunidade Ethereum. Adoptar esta solução implicaria alterar ligeiramente a blockchain do Ethereum, o que muitos consideravam uma afronta aos valores que a tecnologia propunha. A alteração forçada das quantias de Ethereum na conta do hacker e dos seus anteriores proprietários era uma violação ao conceito de imutabilidade que a comunidade acreditava ser uma das características mais importantes da tecnologia. Um dos receios era criar-se um precedente para governos e outras entidades poderosas no futuro poderem exigir alterar blockchains para cumprir os seus interesses.

Buterin acreditava que, devido à rede estar numa fase tão inicial e experimental, não se estava a abrir um precedente e, sendo uma voz tão importante na comunidade, foi essa a opção escolhida: criar uma bifurcação na cadeia do Ethereum actualizando o software e corrigindo os problemas criados pela DAO – um “hard fork“.

hard fork
Depois de uma actualização forçada ao sistema dá-se um “hard fork” e surgem duas cadeias que existem e evoluem paralelamente.

Estas bifurcações podem ser usadas para melhorar arquitecturas de blockchain, mas neste caso a comunidade estava dividida e isso levantou problemas para a rede. Uma bifurcação significa que passam a existir duas cadeias e é entre elas que a comunidade se vai dividir, já que cada nó da rede terá que optar qual pretende suportar. Uma comunidade dividida significa que todos os recursos ficam divididos entre a cadeia antiga e a cadeia nova. Até mesmo os utilizadores da rede devem decidir qual das cadeias preferem seguir. Havendo divisão de utilizadores e recursos também o valor original da rede irá diminuir e enfraquecê-la já que estas arquitecturas vivem em grande parte das comunidades que as criam, adoptam e melhoram.

Neste caso foi criado o Ethereum Classic, que segundo o seu site é a versão original da cadeia do Ethereum “livre de manipulações subjectivas de transacções”, perpetuando a visão daqueles que acreditam que as blockchains não podem ser alteradas sob nenhuma circunstância.

Este foi um caso extremo e muito controverso pois punha em causa uma característica importante da blockchain – a imutabilidade.

No entanto, as regras anteriores foram mantidas e nesse bloco específico em que aconteceu o “fork” a cadeia actual do Ethereum ainda está ligada à cadeia anterior. Tal como está na imagem acima a diferença deste bloco para outros da cadeia é que a partir deste são criadas duas cadeias diferentes e separadas.

Assim sendo, apesar de as regras serem alteradas daí em diante, o passado continua inalterado. O que neste caso foi alterado, forçosamente, e daí a polémica, foram as quantidades de ether quer na carteira do hacker quer nas carteiras dos seus anteriores donos, de onde tinha sido retirado esse ether. Estas alterações verificam-se apenas na cadeia que aceitou a alteração e nos blocos que fazem parte dela exclusivamente.

Este método pode ser utilizado para fazer melhorias ao software. Apesar do caso mencionado ser um caso extremo em que a comunidade fica dividida, existem outros casos em que essas alterações são adoptadas por toda a comunidade e daí em diante todos os nós da rede passam a reger-se pelas novas regras. Existe igualmente uma bifurcação com dois blocos a serem criados, com a diferença de, por não haver mineradores que sigam uma das cadeias, essa acaba por morrer e ficar um bloco por resolver. Consequentemente, o valor dessa cadeia morre também já que não tem uma comunidade a suportá-la. A este evento chama-se um soft fork.

hardfork vs softfork

O que distingue estes dois tipo de forks é principalmente a relação entre as regras da cadeia antes e depois da bifurcação. Como ilustrado na imagem acima, as regras aplicadas na cadeia depois de um soft fork são mais restritas que as regras antes do fork. Ou seja, as regras antigas continuam a ser aceites na nova cadeia e os nós anteriores continuam a ser válidos na nova cadeia.

Por seu lado, para o hard fork acontece o contrário. As novas regras são uma expansão das regras antigas e tornam-nas inválidas na nova cadeia. Os nós que não façam o upgrade serão rejeitados e não conseguirão entrar na nova cadeia por não seguirem as regras que a regem.

Assim, existem argumentos para sustentar os dois tipos de bifurcações. Os hard forks oferecem aos programadores mais flexibilidade e liberdade, já que não têm que estar preocupados em encaixar as novas regras nas antigas. Por isso, permite alterações e melhorias significativas à rede.

Os soft forks também têm benefícios. São mais convenientes para os utilizadores, já que não têm que fazer nenhum actualização para utilizar a nova cadeia. Também por esta razão, é necessário apenas o consenso dos programadores e mineradores já que mesmo que algum utilizador tente fazer uma transacção baseada nas regras anteriores esta será rejeitada pelas regras novas. Por consequência, é menos provável que exista uma quebra na cadeia pois existem menos pessoas a ter que concordar com as alterações.

Ou seja, existem várias formas de conseguir implementar melhorias na infraestrutura dos criptoactivos que poderão fazer deles mais ágeis, com maior capacidade ou introduzir-lhes novas ferramentas, mas todas elas exigem que essas alterações sejam aceites pela comunidade que delas vai usufruir. Também nesta característica é a comunidade que mantém a blockchain viva e saudável.

3 replies on “Forks – Melhorias na Blockchain”

[…] Como vimos quando estudámos os forks, existem motivos válidos para escolher soft e hard forks. Para cada caso, existem também riscos e por isso cada proposta terá que ser analisada pelos membros da rede para tomarem a sua decisão. A única constante que temos assegurada no desenvolvimento de software de consenso é que as alterações são difíceis e obrigam a chegar a compromissos que deixem a comunidade satisfeita. A Bitcoin e a Cripto-Comunidade  como sistema descentralizado mantém a fasquia elevada neste tema e é a comunidade por excelência para inovar este tipo de software. […]

Gostar

Deixe uma resposta para Ataques de 51% – Controlar a Bitcoin – André Barros – O Aprendiz de Cripto Cancelar resposta