Pular para o conteúdo
0%

O que é um shadow fork?

Alchemy team headshot

Escrito por Alchemy

Publicado em 24 de junho de 20224 min de leitura

O que é um shadow fork?

Shadow forks são parecidos com devnets, mas em vez de terem seu próprio estado, eles copiam o estado de outra rede (devnet ou mainnet).

Por exemplo, um shadow fork da rede principal do Ethereum ainda aceita todas as transações que vão para a mainnet.

Esse branch poderia mudar para Proof-of-Stake, mas ainda manteria as transações da mainnet e outros dados de estado/histórico.

Depois de um merge bem-sucedido no shadow fork, ele passa para a chain de Proof-of-Stake e ignora quaisquer blocos de Proof-of-Work que tenham sido adicionados à mainnet.

Qual a diferença entre um shadow fork e um fork normal?

Diferente de um shadow fork, que é criado intencionalmente para testar upgrades de rede com dados de estado existentes da chain original, um fork normal acontece quando a comunidade de desenvolvimento modifica o protocolo ou é afetada por hacks. Quando ocorre um fork, a blockchain se divide, criando uma segunda (nova) blockchain com o mesmo histórico da primeira, mas com um caminho diferente.

Um exemplo de como upgrades feitos por core developers em uma blockchain causam um fork é o London Hard Fork, que introduziu a EIP-1559 para otimizar a estrutura de taxas de transação do Ethereum.

Bitcoin e Ethereum são baseados em tecnologia blockchain e rodam em software open-source. São chamados de "blockchains" porque são compostos por blocos de dados que podem ser ligados de volta à primeira transação da rede.

Por serem open source, suas comunidades são responsáveis por manter e aprimorar o código-fonte. Como resultado, um fork pode acontecer para tornar uma blockchain mais segura, adicionar novas funcionalidades ou mitigar os efeitos de um hack, como ocorreu em 2016 depois do hack da The DAO.

Em 2016, a blockchain do Ethereum sofreu um fork, dando origem ao Ethereum Classic, que manteve um ledger fiel refletindo os 3,6 milhões de ETH roubados, e ao Ethereum, que fez o fork para reverter o hack.

Qual a diferença entre soft forks e hard forks?

A diferença entre soft forks e hard forks é que soft forks alteram o código de uma blockchain existente, enquanto hard forks dividem a blockchain em duas blockchains distintas.

Soft fork

Um soft fork pode ser entendido como uma atualização do software que roda a blockchain. Contanto que todos o utilizem, ele se torna o novo conjunto de regras da rede.

Soft forks têm sido usados para adicionar novas funcionalidades ou funções ao Ethereum, geralmente alterando o codebase e o software cliente. As mudanças funcionam com blocos criados antes do fork, pois o resultado final é uma única blockchain.

Hard fork

Quando o código muda tanto que a nova versão não pode ser usada com blocos mais antigos, isso é chamado de "hard fork". Nesse caso, a blockchain se divide em duas partes:

  1. a blockchain antiga, que segue as regras antigas
  2. a blockchain nova, que segue as regras novas

Isso cria uma criptomoeda totalmente nova, e é assim que muitas moedas conhecidas surgiram. Um hard fork criou o Bitcoin Cash a partir da blockchain original do Bitcoin, e o Ethereum Classic (ETC) foi criado a partir do Ethereum (ETH).

Por que os shadow forks são importantes?

Shadow forks são ferramentas importantes para desenvolvedores web3 porque permitem testar suas suposições sobre os próximos upgrades da rede em relação às condições mais atuais do ambiente de produção da mainnet.

A rede de teste Kiln é a última testnet para os desenvolvedores testarem em preparação para The Merge, que muda a Execution Layer do Ethereum de Proof-of-Work para Proof-of-Stake.

Shadow forks são importantes para mostrar que o Merge vai se concretizar sem uma transição prejudicial para os apps existentes que rodam na rede.

As testnets que possuem esses shadow forks serão o terreno de teste para garantir que a transição do merge ocorra sem problemas, e ajudarão a gerar confiança entre node operators e builders.

Como funcionam os shadow forks?

Uma imagem mostrando como um shadow fork é criado a partir de uma chain Goerli existente
An image showing how a shadow fork is created out of an existing Goerli chain. Source: AllCoreDevs Update #011 https://tim.mirror.xyz/PWFVaHY3Mrx7srarMmuBWya0J5kioR1l2xaH3p5APDk

Na imagem acima, a primeira linha de blocos do Goerli mostra um node na blockchain canônica (ou seja, original), que não sabe da existência do shadow fork.

A linha do meio de blocos do Goerli representa um node na chain com shadow fork, com uma configuração diferente que o instrui a se dividir ao atingir a terminal total difficulty (TTD), ou dificuldade total de mineração usada como gatilho para os clients pararem de minerar e migrarem para PoS. Na última linha, há uma imagem de uma Beacon Chain criada especificamente para o shadow fork. Quando o TTD é atingido, os nodes na chain canônica continuam produzindo blocos como se nada tivesse acontecido, e os nodes cujas configurações foram alteradas se separam e passam pelo Merge.

Em seguida, o próximo validator cria o primeiro bloco para a Beacon Chain após o Merge.

Fazer um shadow fork é a melhor forma de testar isso, pois permite que os desenvolvedores avaliem quão bem o processo de fork e merge funciona sem afetar a testnet pública ou a mainnet.

Ao repetir essa operação de shadow fork várias vezes, os desenvolvedores conseguem testar a transição do merge em diferentes situações.

Quais são os shadow forks mais conhecidos?

Duas testnets se destacam por terem alguns dos shadow forks mais conhecidos: a Goerli passou por três shadow forks, enquanto a mainnet passou por seis. A principal diferença entre os dois shadow forks da mainnet foi que todas as combinações de clients passaram pela transferência do shadow fork e permaneceram sincronizadas.

Esse shadow fork também usa o branch develop/unstable de cada client. Isso significa que os desenvolvedores não precisam mais fazer merge de branches. Na mainnet, o deposit contract foi reutilizado, mas com um fork ID diferente.

Isso implica que, no shadow fork, todo depósito da mainnet precisa ser processado e marcado como inválido. Esse cálculo, que exige muitos recursos, causou algumas condições extremas em um pequeno número de clients, mas a rede continuou funcionando normalmente.

Como fazer o shadow fork do Ethereum

Se você tem interesse em fazer o fork do Ethereum, pode seguir o guia passo a passo da Alchemy sobre como fazer o fork da mainnet do Ethereum usando uma conta gratuita da Alchemy, o HardHat e uma interface de linha de comando (CLI).

Shadow forks são ferramentas essenciais para desenvolvedores Ethereum

Shadow forks têm um papel importante no desenvolvimento contínuo e nas melhorias de escalabilidade da blockchain do Ethereum. Com os shadow forks, core developers do Ethereum, node providers e stakers independentes podem se preparar para as próximas mudanças em toda a rede, de modo que o ecossistema de aplicações do Ethereum não seja interrompido.

Background gradient

Construa magia blockchain

A Alchemy combina os produtos e ferramentas de desenvolvimento Web3 mais poderosos com recursos, comunidade e suporte lendário.