Se está familiarizado com o desenvolvimento de software de código aberto, talvez já tenha ouvido falar de algo chamado garfo . Este conceito tem um significado mais especializado no espaço criptográfico, no entanto:
O forking in crypto é uma mudança no protocolo de consenso para uma cadeia de bloqueios. É uma mudança onde os nós começam a confirmar blocos numa cadeia separada da cadeia de origem.
Digamos que um programador lista uma peça de código numa plataforma como o GitHub, que está aberta ao público. A isto chama-se código aberto.
Isto significa que os utilizadores podem criar uma cópia do código fonte para o seu próprio uso. Podem fazê-lo com a intenção de compilarem eles próprios o software. Podem fazê-lo para acrescentar funcionalidades que podem não ter sido acrescentadas pelos autores originais de uma peça de software ou que podem ter sido rejeitadas pelos autores originais.
Tirar este código fonte e construí-lo independentemente chama-se Forking. É a chave para a vitalidade da fonte aberta.
A nuança do software criptográfico reside no consenso. É a principal propriedade de um protocolo de cadeia de bloqueio em funcionamento. Todos os nós que operam na rede devem utilizar o mesmo software que todos os outros nós ou correm o risco de penalizações e exclusão.
Por isso, digamos que queria bifurcar um software criptográfico existente. Devido a esta necessidade de consenso, seria necessário bifurcar toda a cadeia de bloqueio. Ou seja, a menos que conseguisse que a maioria dos nós existentes substituísse o software deles pelo seu, o que nem sempre é fácil!
Os garfos ocorrem por muitas razões:
Existem dois tipos de garfos no espaço criptográfico onde as regras de consenso são alteradas. Ambos devem aderir a resultados diferentes que incluam ou excluam a participação de nós mais antigos.
Um garfo duro ocorre quando as regras de consenso são afrouxadas para acomodar certas mudanças na rede. Estas alterações aumentam a funcionalidade do comportamento de confirmação de blocos. Estas alterações não são retrocompatíveis para os nós que executam o software mais antigo e iniciarão um novo ramo na cadeia de bloqueio de origem.
Quando a funcionalidade mais ampla dos activos de uma rede sofre uma mudança, o mesmo acontece com as propriedades económicas do activo. Estas alterações podem incluir:
A lista continua, mas uma coisa é certa: é necessário um novo bem para transaccionar na nova cadeia de bloqueios.
Por exemplo: Digamos que um nó a correr o antigo software deveria receber um bloco de 2 MB quando estivesse à espera de um bloco de 1 MB. Esse bloco de 2 MB seria inválido por ser maior do que as regras da rede mais antiga o permitem. O bloco de 2 MB teria de ser enviado numa rede separada.
Um garfo macio ocorre quando as regras de consenso são apertadas para acomodar uma certa mudança na rede. Esta alteração produz uma certa funcionalidade de confirmação de bloco ou comportamento consensual. Este tipo de garfo é retrocompatível para nós que executam software mais antigo e permite que os nós renunciem ao método de participação actualizado.
Para usar o nosso exemplo anterior: Digamos que um nó espera um bloco de 1 MB mas recebe um bloco de 0,8 MB. Neste caso, este bloco mais pequeno seria visto como menos do que um bloco completo, mas mesmo assim seria aceite.
Vejamos alguns exemplos de todos estes garfos na prática. Vamos olhar para as duas redes criptográficas mais populares, uma vez que elas passaram por algumas dores de crescimento para chegar onde estão hoje.
Em meados e finais de 2010, a Bitcoin(BTC / USDT) enfrentou problemas de escalabilidade com o seu caminho para a frente contestado entre duas facções de utilizadores de Bitcoin.
Foi feita uma proposta para implementar a funcionalidade Testemunha Segregada (SegWit) no software Bitcoin. O SegWit foi proposto como uma alteração à arquitectura de transacção do Bitcoin. Esta alteração armazenaria dados de assinatura como uma árvore de dados anexada às transacções e não seria contada na identificação da transacção. A SegWit foi proposta como uma opção de inclusão. Este seria um exemplo de um garfo macio.
Pode realmente ver as diferenças no seu endereço Bitcoin: Um endereço que começa com o número um utiliza a estrutura de transacção herdada enquanto os endereços que começam em ‘bc1’ ou o número três utilizam SegWit nativo e SegWit aninhado respectivamente.
Assim, os Bitcoiners foram rasgados entre a diminuição dos dados necessários numa transacção para permitir que mais transacções cabessem nos blocos de 1 MB ou um aumento dos blocos para 8 MB. A rejeição do SegWit para blocos maiores exigiria uma forquilha dura da rede. Em Agosto de 2017, a Bitcoin foi bifurcada e a Bitcoin Cash foi criada.
Em Junho de 2016, os hackers invadiram “The DAO”, um grande tesouro criado como meio de proporcionar investimento a projectos na rede Ethereum. Os hackers roubaram aproximadamente $55M USD.
Antes do tempo da pirataria, o DAO tinha aproximadamente 250 milhões de dólares no tesouro. Eis como funcionou:
Cada membro receberia 100 fichas DAO por cada 1 ETH depositada na tesouraria. Estas fichas foram utilizadas para votar sobre se uma determinada proposta de investimento era potencialmente rentável ou não. Se a proposta fosse aprovada, a tesouraria transferiria automaticamente o investimento ETH proposto para um contrato inteligente que representasse o projecto.
A ideia era semelhante a um fundo de cobertura. Se o projecto gerasse mais receitas do que o investimento, o lucro seria depositado de volta na tesouraria do DAO e aumentaria o valor da ficha do DAO.
Contudo, o contrato inteligente tinha uma vulnerabilidade que foi explorada para permitir que o atacante fizesse retiradas infinitas até que o tesouro fosse esvaziado.
É claro que esta história tem muitos detalhes, mas vamos cingir-nos aos acontecimentos chave. Os hackers atacantes lutaram para retirar tanto dinheiro quanto possível enquanto os hackers de chapéu branco da comunidade tentavam desesperadamente usar a mesma exploração para salvar os fundos do tesouro.
No final, ambas as facções tinham drenado tudo o que podiam, mas o dano estava feito. Para mitigar completamente o ataque, foi proposto um garfo duro da cadeia de bloqueio. A cadeia de bloqueio seria reiniciada de antes do hack e continuaria como se nada tivesse acontecido. Esta é a actual cadeia de bloqueio canónica do Ethereum(ETH / USDT) tal como a conhecemos.
Alguns utilizadores, contudo, pensaram que este era um mau precedente e que permaneceria na cadeia de bloqueio onde o hack tinha ocorrido; conhecido agora como Ethereum Classic.
O forking é geralmente feito para melhorar um protocolo. Se as mudanças são boas ou más, cabe à comunidade fazer as mudanças.
Uma vez que as redes bifurcadas têm propriedades técnicas e económicas diferentes, são bens fundamentalmente diferentes. Estes factores irão afectar se um bem irá aumentar de valor.
Não há melhor criptograma para bifurcar e qualquer projecto de fonte aberta pode ser bifurcado.
Ethereum 2.0 não é considerado um garfo duro se os utilizadores aderirem ao modelo de prova de compra nas actualizações de software. A versão de prova de trabalho da ETH resultará numa nova cadeia de bloqueios.
A bitcoin implementa garfos duros em geral para resolver problemas de escalabilidade. O problema é normalmente a transacção por segundo e o tamanho do bloco.
O Vasil é um garfo duro de Cardano(ADA/ USDT).
Um garfo duro não é retrocompatível exigindo uma nova cadeia de bloqueio enquanto que um garfo macio é retrocompatível com a antiga cadeia de bloqueio. Ver o artigo acima para uma explicação mais detalhada.