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, 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 destinadas à mainnet.

Esse branch pode fazer a transição para Proof-of-Stake, mas continuaria mantendo as transações da mainnet e outros dados de estado/histórico.

Depois de um merge bem-sucedido no shadow fork, ele passa a seguir a cadeia Proof-of-Stake e ignora quaisquer blocos 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 usando dados de estado existentes da chain original, um fork normal acontece quando a comunidade de desenvolvimento modifica o protocolo ou é afetada por hacks. Quando um fork ocorre, 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 desenvolvedores core em uma blockchain causam um fork é o London Hard Fork, que introduziu o 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 formados por blocos de dados que podem ser rastreados até a 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 novos recursos ou mitigar os efeitos de um hack, como ocorreu em 2016 após o hack do The DAO.

Em 2016, a blockchain do Ethereum se dividiu em Ethereum Classic, que manteve um ledger fiel que refletia os 3,6 milhões de ETH roubados, e Ethereum, que fez o fork para revertar 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. Enquanto todos o utilizarem, ele se torna o novo conjunto de regras da rede.

Soft forks têm sido usados para adicionar novos recursos ou funções ao Ethereum, geralmente por meio de alterações no codebase e no software cliente. As mudanças funcionam com blocos criados antes do fork, porque 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 novas regras

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

Por que shadow forks são importantes?

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

Shadow forks foram usados junto com testnets públicas para preparar The Merge, que mudou a Execution Layer do Ethereum de Proof-of-Work para Proof-of-Stake.

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

Testnets que passam por esses shadow forks servem como terreno de teste para garantir que a transição do merge ocorra sem problemas, e ajudam 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 Goerli mostra um node na blockchain canônica (ou seja, original) que não tem conhecimento do shadow fork.

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

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

O shadow forking é a melhor forma de fazer isso, pois permite que desenvolvedores testem quão bem o processo de fork e merge funciona sem afetar a testnet pública ou a mainnet.

Repetindo 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 em sync.

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 de borda para um pequeno número de clients, mas a rede continuou funcionando bem.

Como fazer o shadow fork do Ethereum

Se você tem interesse em fazer fork do Ethereum, pode seguir o guia passo a passo da Alchemy sobre como fazer 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 críticas para desenvolvedores Ethereum

Shadow forks têm um papel importante no desenvolvimento contínuo e nas melhorias de escalabilidade da blockchain do Ethereum. Com shadow forks, desenvolvedores core do Ethereum, node providers e stakers independentes conseguem se preparar para as próximas mudanças em toda a rede, para 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.