Primeira fusão bem sucedida de Substrate Solo-Chain e Parachain Polkadot

kanbeok
Darwinia Network Brasil
6 min readJan 19, 2023

Recentemente, a Darwinia tentou fundir sua cadeia solo baseada em Substrate e sua parachain Polkadot preservando o paraID da parachain.

Antes da fusão, a Darwinia tinha duas cadeias separadas: a cadeia Darwinia Chain e aDarwinia Parachain, que funciona na Polkadot Relay Chain. A Darwinia Smart Chain é tida como um módulo evm e, portanto, não é considerada neste cenário.

Após a fusão, a Darwinia terá uma única cadeia chamada Darwinia 2.0.

Por que Darwinia decidiu fazer isto

Antes do lançamento da Polkadot Relay Chain, a Darwinia operava sua solo chain chamada Darwinia Chain. Depois de ganhar um slot no leilão de parachains da Polkadot, a Darwinia lançou aDarwinia Parachain na rede Polkadot. Para que as duas blockchains funcionassem juntas, a Darwinia criou um canal de mensagens entre as duas blockchains.

Na época, se Darwinia tivesse apenas uma cadeia, teria que ficar migrando entre o modo solo e parachain sempre que perdesse e recuperasse seu slot parachain. Para evitar este inconveniente, a Darwinia decidiu executar simultaneamente uma corrente solo e um parachain, usando sua capacidade de conectar duas blockchains baseadas em Substrate. Neste modelo, a parachain era governada por meio da governança remota, a partir da cadeia solo.

No entanto, a equipe da Darwinia se deparou com algumas dificuldades no dia a dia. A primeira delas é que a existência de duas cadeias pode ser confusa para os usuários e, portanto, dificulta a compreensão da Darwinia. Em segundo lugar, a existência destas duas cadeias um fardo para a equipe de desenvolvimento, pois requer mais tempo para o desenvolvimento e testes, o que retarda o processo de iteração do código. Além disso, o processo cross-chain se torna mais demorado e caro devido a existência de um passo adicional.

À medida que a equipe adquiriu mais experiência com Substrate e as ferramentas relacionadas melhoraram, tornou-se possível simplificar a Rede Darwinia através da fusão da Darwinia Chain e Darwinia Parachain. Esta proposta foi feita devido aos motivos descritos acima. Como resultado, tentamos a primeira fusão de uma cadeia solo e parachain no ecossistema Polkadot.

Como

O processo de merge (fusão) envolve a exportação dos dados tanto da Darwinia Chain como da Darwinia Parachain, fundindo os dados e depois migrando os dados fundidos e o novo código para a Darwinia Parachain. Em resumo, a Darwinia Chain e a Darwinia Parachain são fundidas na Darwinia Parachain.

Passos

O merge é dividido em dois passos principais: chainstate processing e parachain migration.

1. Chainstate Processing

O primeiro passo no processo de merge é exportar os dados da Darwinia Chain e Darwinia Parachain. Estes dados são então pré-processados e fundidos para gerar um arquivo de gênese, que pode ser usado para iniciar uma nova shell chain.

Durante o pré-processamento dos dados, vários passos são dados, inclusive:

  1. Remoção de dados de armazenamento que não são mais necessários, particularmente de pallets que não estão mais em uso, tais como os relacionados a consenso. Leia mais.
  2. Conversão de dados de armazenamento relacionados a contas em dados a serem migrados no pallet account_migration. A migração final dos ativos na conta precisará ser feita pelo usuário na nova cadeia. Veja o artigo sobre migração de contas.
  3. Ajuste dos dados vinculados à altura do bloco. Por exemplo, se você tranca seus RINGs por 3 meses, você acaba armazenando um valor relacionado à altura do bloco. Após o 2.0, a altura começará a partir de 0 e o intervalo de tempo do bloco será alterado de 6s para 12s. O comprimento final dos locks devem ser ajustados de acordo.
  4. Fazendo outras atualizações de dados para Darwinia 2.0, incluindo o ajuste da precisão do token e a unificação dos formatos de endereço. Os detalhes podem ser encontrados aqui.

A parte de chainstate processing é realizada utilizando a ferramenta state-processor, o processador-estado.

Informações adicionais sobre o chainstate processing podem ser encontradas aqui.

2. Migração Parachain

Os dados do arquivo gênesis e do código das novas parachains será migrado para a Darwinia Parachain usando a tecnologia solo-to-para pallet desenvolvida pela Parity. Após a migração, a Darwinia Parachain se tornará a nova Darwinia 2.0 e manterá seu paraID original.

Sem o solo-to-para pallet, seria difícil fazer este processo de migração com preservação do paraID.

Os passos para a Atualização das Cadeias

Para garantir a precisão e a integridade do merge, são necessários testes e verificações minuciosas. Também deve ser verificado nas redes de teste e canária antes de atualizar de fato a Darwinia.

O merge será testado em Pangolin 2.0, a testnet para a Crab 2.0, para verificar a precisão e integridade dos dados. Após isso, Crab 2.0, o resultado do merge da Crab Chaine Crab Parachain, será lançado. Crab 2.0 é uma rede canária com valor econômico real, portanto, não só a precisão e integridade dos dados será testada, mas também a viabilidade econômica. Se não houverem problemas nos testes em Pangolin 2.0 e Crab 2.0, o merge será feito em Pangoro 2.0, a rede de testes da Darwinia 2.0. Se tudo ocorrer bem em Pangoro 2.0, será realizado o merge da Darwinia 2.0.

Em resumo: Pangolin 2.0 → Crab 2.0 → Pangoro 2.0 → Darwinia 2.0.

Menos é mais

Após o merge, a Darwinia terá apenas uma cadeia, Darwinia 2.0, uma Polkadot parachain simplificada que começará a produzir blocos a partir do número de bloco 0.

A comunidade Darwinia chegou a um consenso sobre o merge por meio de discussões e irá votar por meio de referendo. Não há dúvidas de que o que tornou este merge possível foi a alta qualidade tecnológica do ecossistema Polkadot. Logo que for passado o referendo na Darwinia 1.0 a cadeia será aposentada. No entanto, todos os dados de estado on-chain da Darwinia 1.0 serão preservados na Darwinia 2.0, incluindo conta de usuários que usam Ledger.

A simplificação em Darwinia 2.0 irá prover uma base mais sólida para os desenvolvimentos futuros da Darwinia, levando a uma maior qualidade de código, ciclos de iteração de desenvolvimento mais rápidos, caminhos mais curtos de roteamento cross-chain e uma melhor experiência de usuário.

Devido ao design modular do Substrate e à existência de toolchains bem estabelecidas, o processo de merge é relativamente simples. Estamos confiantes de que ele pode ser concluído em um tempo relativamente curto. Se tivéssemos nos concentrado apenas no merge, acreditamos que ele teria sido concluído ainda mais rapidamente, pois uma quantidade significativa de tempo foi gasta em outros trabalhos de atualização de dados, além do merge.

Referências

https://polkadot.network/blog/first-parachain-successfully-migrates-from-kusama-to-polkadot/?utm_source=twitter&utm_medium=social&utm_campaign=kilt kusama to polkadot&utm_content=polkadot

https://www.youtube.com/watch?v=sIgvyRFs-N4

Leituras Relacionadas

Sobre a Rede Darwinia

GitHub | Website | Medium | Twitter | Telegram | Discord

A Darwinia é uma infraestrutura de mensagens cross-chain, que fornece uma rede de mensagens cross-chain baseada em light client, programável e universal para aplicações descentralizadas. Recentemente, nos implantamos o Darwinia’s light-client cross-chain messaging protocol(LCMP) com sucesso, de modo a estabelecer a ponte de mensagens cross-chain entre cadeias baseadas em substrate, e mesmo entre cadeias baseadas em substrate e cadeias EVM. A Darwinia fornece aos desenvolvedores um SDK, e os desenvolvedores podem facilmente integrar as capacidades cross-chain em seus DApps. Isto terá implicações profundas para a interoperabilidade cross-chain, e a Darwinia atuará como uma infraestrutura cross-chain de mensagens para estimular a construção de uma rede cross-chain híbrida para a Polkadot.

--

--