「Criar na Darwinia 2–5」Entendendo a Crab Chain e Crab Smart Chain

kanbeok
Darwinia Network Brasil
7 min readFeb 18, 2022

Introdução

Existem duas cadeias na rede Darwinia Crab Chain (CC): Crab Chain (CC) e Crab Smart Chain(CSC). Elas fornecem dois conjuntos de interfaces e estruturas de cadeia, mas compartilham a mesma rede de nós, armazenamento de estado e token nativo (CRAB). A Crab é a rede canária da Darwinia.

Crab Chain

A CC é a cadeia autônoma nativa da Crab da Darwinia baseada em Substrate com um conjunto de chamadas de despacho definidas por seu tempo de execução. O endereço é do formato Substrate SS58 com prefixo 42, e o decimal é 9. O nó da CC fornece o ponto final do substrate RPC para leitura dos estados da cadeia e envio de extrínsecos que podem ser incluídos nos blocos Substrate, e estes blocos são encadeados juntos como uma cadeia de blocos Substrate na rede. Os dados do CC estão disponíveis em Subscan.

Crab Smart Chain

A CSC serve para compatibilidade EVM, e oferece aos usuários a capacidade de criar e interagir com contratos inteligentes. Nas chamadas de despacho da CC, há um especial chamado Ethereum.transact, que é usado para a transação Ethereum.

/// Transact an Ethereum transaction.
#[pallet::weight(<T as darwinia_evm::Config>::GasWeightMapping::gas_to_weight(transaction.gas_limit.unique_saturated_into()))]
pub fn transact(
origin: OriginFor<T>,
transaction: TransactionV0,
) -> DispatchResultWithPostInfo

Para ser compatível com as cadeias e infraestruturas EVM, tais como MetaMask e The Graph, o nó Darwinia Crab fornece um ponto final compatível com o Ethereum JSON-RPC para a leitura e envio de transações Ethereum. Para cada bloco de Substrate, a CSC constrói um bloco Ethereum que tem todas as transações Ethereum a partir dele. Os blocos Ethereum formam uma nova cadeia, que chamamos CSC. E como resultado, a CSC atende às exigências das interfaces Ethereum, portanto podemos pensar nela como uma cadeia diferente que chamamos de Crab Smart Chain (CSC).

Como a CSC é compatível com Ethereum, seu formato de endereço é de Ethereum e os decimais são 18, e são diferentes da CC. A ID da cadeia da CSC deve ser determinada uma vez que ainda não foi lançada, enquanto a ID da cadeia da Crab Chain é 44, e pode ser verificado no Chainlist.

A técnica por trás da CSC para fornecer compatibilidade Ethereum é chamada Darwinia Virtual Machine (DVM), uma extensão da Parity’s Frontier.

Vá ao CSC explorer para uma visão geral da CSC, ou dê uma olhada nos blocos CSC na parte inferior do CC block on Subscan.

Interopebilidade entre CC e CSC

CC e CSC têm formatos de conta diferentes. A CC usa o formato de endereço SS58 com 32 bytes de ID de conta, enquanto a CSC usa o formato Ethereum (H160).

Na maioria dos casos, CC e CSC interagem com diferentes partes do armazenamento. A CSC interage com o armazenamento no palete EVM e com os dados de conta (nonce, saldos, etc.) enquanto a CC interage com o armazenamento em outros paletes e com os dados de conta, e os dados de conta são a parte compartilhada. Entretanto, como as chaves de armazenamento dos endereços destas duas cadeias são projetadas para serem localizadas em espaços-chave diferentes, elas não interferirão uma com a outra, exceto quando ocorrer a interoperação.

Aqui está uma visão geral dos espaços-chave no armazenamento de dados de conta para estes dois tipos de endereços.

Então como realizar a interoperação entre a CC e a CSC?

CC e CSC fornecem várias abordagens úteis para a interoperação, assim como uma ponte entre duas cadeias.

Para usuários

Se você quiser transferir o token CRAB entre CC e CSC, você pode usar o smart app desenvolvido pelo time do Wormhole. Está nos planos da Darwinia fundir este recurso no Wormhole posteriormente para que serva como uma exemplo de ponte de token, o que proporcionará uma interface mais amigável já que todas as transferências cross-chain poderão ser feitas em um único lugar.

Outros desenvolvedores também podem desenvolver dApps para fornecer serviços similares aos usuários. As interfaces e os métodos são os seguintes:

  • De CC para CSC

O uso da chamada de despacho Balance.transfer para interoperar e transferir slado para CSC.

pub fn transfer(
origin: OriginFor<T>,
dest: <T::Lookup as StaticLookup>::Source,
#[pallet::compact] value: T::Balance,
)

A origem é a conta que envia o CRAB na CC, e o dest é a conta da CC derivada da conta de destino Ethereum. Para derivar a conta CC da conta Ethereum, leia as referências da “Geração da chave de endereço no armazenamento de dados da conta” (A ser renomeada de “Darwinia Address Format Overview”), ou use nossa ferramenta dvmaddress tool.

Uma visualização rápida:

  • De CSC para CC

Se você quiser transferir o CRAB de um endereço CSC Ethereum ou contrato inteligente, você pode usar o contrato “Transfer” Precompile. Para mais detalhes, vá para o documento do contrato de pré-compilação [1] [2].

Note: A CC e a CSC usam formatos de endereço e decimais diferentes para o token CRAB. Na CSC, o token nativo é 18, enquanto na CC é 9. Assim, se você transferir 1e9:CRAB para o CSC, a conta receptora receberá 1e18 em seu saldo.

Para desenvolvedores

Se você é desenvolvedor, pode fazer mais interoperação entre CC e CSC além de transferência de saldo através de uma chamada de despacho, Ethereum.root_transact, e uma Pré-compilação, Dispatch.

Por exemplo, se você quiser chamar algum contrato de uma conta CC enviando um extrínseco, você pode usar a chamada de despacho Ethereum.root_transact. Como ainda é experimental, por enquanto só pode ser chamada a partir da origem de Root do CC, mas pode haver outras chamadas de despacho específicas para a origem de outros CC mais tarde. Se você é um desenvolvedor em tempo de execução da Crab Darwinia, você também pode interagir com o CSC usando a chamada interna Ethereum.internal_transact, que é parte do tempo de execução e do protocolo e só pode ser modificada através do mecanismo de governança do CC.

Por outro lado, se você quiser fazer algumas chamadas de despacho no tempo de execução da CC através de uma transação Ethereum ou de um contrato inteligente EVM, você pode usar o contrato de pré-compilação de despacho. Este contrato de pré-compilação ajudará o endereço do msg.sender Ethereum a usar o endereço da CC como origem da chamada, e fazer uma chamada de despacho de nível de palete através de uma transação especial Ethereum, cujo campo de entrada são os dados codificados da chamada de despacho. Para obter mais detalhes, vá para o documento do contrato pré-compilação [3].

Note: A CC e a CSC usam formatos de endereço e decimais diferentes para o token CRAB. Na CSC, o token nativo é 18, enquanto na CC é 9.

Resumo

Neste artigo, introduzimos os conceitos de Crab Chain (CC) e Crab Smart Chain (CSC) e explicamos os objetivos da arquitetura e design das duas cadeias. Em seguida, descrevemos mais diferenças entre elas, incluindo tipo de cadeia, ID da cadeia, formato de endereço, casas decimais e alocação da chave de armazenamento de dados da conta, o que pode dar ao leitor uma melhor compreensão da CC e da CSC. Além disso, introduzimos os métodos de interoperação entre a CC e a CSC, para usuários e desenvolvedores.

Referências

  1. Implementação de pré-compilações de transferência v2.8.1:

https://github.com/darwinia-network/darwinia-common/blob/v2.8.1/frame/evm/precompile/contracts/transfer/src/lib.rs

2. Documento de contrato do sistema DVM:

https://docs.crab.network/dvm/overview/dvm-system-contract

3. Implementação do pré-compilador de despacho v2.8.1:

https://github.com/darwinia-network/darwinia-common/blob/v2.8.1/frame/evm/precompile/contracts/dispatch/src/lib.rs

Recursos:

Documentação dos desenvolvedores: https://docs.crab.network/builders/get-started/darwinia-dev

Grupo de Telegram dos desenvolvedores: https://t.me/DarwiniaDev

Darwinia DApps Builders: https://t.me/+fJiD_IwvwjhjYmQ9

Discuta: https://github.com/darwinia-network/darwinia/discussions

Sobre a Rede Crab

🔥🔥🔥 A Rede Crab está realizando uma hackathon online na plataforma DoraHacks para financiar o desenvolvimento de projetos e aplicações que contribuem para o ecossistema da Crab e promovem o crescimento geral da rede. Os US$ 107.000 do pool de prêmios serão alocados com base nos votos do painel de jurados.

Crab é a rede canária da Darwinia. Ela apresenta valor econômico real, e se posiciona de modo análogo à Rede Kusama em relação a Polkadot. Você pode checar o status da Crab através Polkadot{.js}, Subscan, ou Subview.

A Crab provê soluções de contratos inteligentes baseadas em DVM (Darwinia Virtual Machine), compatível com o paradigma EVM (Ethereum Virtual Machine) a um nível básico. Portanto, ela permite que projetos migrem do ecossistema Ethereum para a Rede Crab e para o ecossistema Polkadot.( DVM é construído em Frontier com configurações totalmente compatíveis com EVM e uma interface externa similar a RPC).

Tudo o que você precisa saber sobre Darwinia

[Website] [Twitter] [Telegram Oficial em Português] [GitHub] [Discord]

Traduzido do inglês para o português por Mariana Kanbe.

Link para acesso ao artigo original:

https://darwinianetwork.medium.com/build-on-darwinia-2-5-understanding-crab-chain-and-crab-smart-chain-921e079ba7ec

--

--