「Criar na Darwinia 2–1」Formatos de Endereço na Darwinia

kanbeok
Darwinia Network Brasil
8 min readDec 2, 2021

Este artigo irá introduzir os formatos de endereço que utilizamos na Darwinia, Crab e outras testnets, e a relação entre eles.

Introdução

Você encontrará diferentes formatos de endereço (formatos de conta) no domínio da blockchain, o que às vezes pode ser confuso para quem não é expert. Para aqueles que querem uma resposta rápida sobre qual formato usar em diferentes cenários, pule para a seção — Quando Utilizar Cada

Na verdade, os endereços não são nada mais do que números binários longos. Como os caracteres não imprimíveis são difíceis de copiar, colar e compartilhar, portanto, os endereços sempre vêm em caracteres de impressão.

Por que existem tantos formatos de endereço?

No fundo, os endereços não são mais que sequências de bits binários. Mas como os caracteres não imprimíveis são difíceis de copiar, colar e compartilhar, os endereços sempre estão representados em caracteres de impressão. Diferentes formatos de endereços coexistem pelas seguintes razões:

Primeiro, na indústria blockchain, não existe uma instituição central para gerenciar e distribuir contas. Teoricamente, as contas de duas blockchains diferentes podem ter endereços idênticos, mesmo que não haja nenhuma conexão entre as duas. Portanto, pode ser bom que as diferentes blockchains adotem formatos diferentes. Suponha que um usuário tenha USDTs em duas blockchains diferentes. Se as duas blockchains adotarem formatos de endereços diferentes, a chance de confundi-los é menor. Sabemos que a transferência de ativos para o endereço errado pode causar perdas irrecuperáveis, e formatos diferentes para blockchain diferentes podem, pelo menos parcialmente, mitigar tais problemas.

Em segundo lugar, endereços com o mesmo formato podem usar prefixos para distinguir diferentes redes. Por exemplo, blockchains baseadas em Substrate como a Polkadot e a Darwinia adotam o formato de endereço SS58. Além de um endereço de Substrate genérico (começando com o número 5), uma conta pode ter endereços diferentes em redes diferentes. Explicaremos isso em detalhes na seção — Mais sobre Endereços em Substrate.

Além disso, a compatibilidade também pode ser uma preocupação. A Darwinia (com suas testnets) é uma blockchain baseada em Substrate e um participante do ecossistema Polkadot. Também apoiamos contratos inteligentes e dApps desenvolvidos para a Rede Ethereum, e os desenvolvedores podem portar seus contratos inteligentes ou dApps para nossas redes com a menor modificação possível. Portanto, cada conta tem um endereço no formato Ethereum, um endereço hexadecimal de 42 caracteres que começa com 0x, que chamamos de endereço DVM.

Iremos explicar a relação entre endereço DVM e endereço Substrate através de um exemplo.

Formatos de endereço — exemplo

Geração de endereços

Vamos criar/restaurar uma conta a partir de uma semente mnemônica de 12 palavras na MetaMask. Aqui nós usamos

dutch walnut battle make gorilla tomorrow oblige earth current muscle auto cry

NOTA: O endereço usado aqui é apenas para fins educacionais, e NÃO transfira ou deposite nenhum ativo para ele.

Depois de alguns ajuste, você receberá o endereço Ethereum.

0x5ED61E64AA17f2B7726FEfB267676DDc14E24B57

Agora, se você se conectar a outras redes compatíveis com o Ethereum, o endereço não mudará. Podemos tentar nos conectar a Crab, que é compatível com Ethereum, e você verá que o endereço é o mesmo. É isso é o que chamamos de endereço DVM.

Conversão de Endereços

Mas em nosso Portal Apps, quando um usuário tenta transferir ativos (CRAB/CKTON) para outro endereço na rede Crab, o endereço de recebimento deve estar no formato Substrate. Os usuários podem usar o conversor online para converter um endereço DVM para um endereço Substrate.

5ELRpquT7C3mWtjepyjZgHHxwJVzRHEGXiyXd5HXanHmTVSp

Este endereço remete para a mesma conta na Rede Crab que o endereço DVM. Os ativos transferidos para este endereço podem ser vistos no endereço DVM através da MetaMask.

Mais sobre Endereços em Substrate

Mais complicado ainda, o formato Substrate contém um prefixo de tipo de endereço que identifica um endereço como pertencente a uma rede específica. O endereço que geramos é um endereço Substrate genérico, que começa com o número 5.

Você pode utilizar a ferramenta Subscan para converter este endereço genérico em endereços que podem ser utilizados em outras blockchains baseadas em Substrate.

Vemos que o endereço de Darwinia começa com o número 2 e o endereço da Crab é igual ao endereço genérico.

É importante entender que diferentes formatos de rede são apenas outras representações da mesma chave pública em um par de chaves público-privado gerado por uma ferramenta de geração de endereços. Em outras palavras, desde que você tenha a chave privada ou a semente mnemônica de 12 palavras, você tem acesso a todos esses endereços.

Quando Utilizar Cada

Para usuários do Portal Dapps

  • Se você estiver conectado à rede Darwinia e quiser transferir RING/KTON de uma conta para outra, certifique-se de utilizar o endereço Substrate para Darwinia, que começa com o número 2, na caixa de entrada “enviar para endereço”.
  • Se você estiver conectado à rede Crab e quiser transferir RING/KTON de uma conta para outra, certifique-se de utilizar o endereço Substrate para Crab, que começa com o número 5, na caixa de entrada “enviar para endereço”.

Para usuários do Smart App

  • Se você quer transferir ativos (CRAB/CKTON) de um endereço Crab Smart para um endereço Substrate para Crab, você deve conectar ao Módulo Smart na Rede Crab com a MetaMask e preencher o endereço Substrate da conta destinatária para Crab, que começa com o número 5, na caixa de entrada “Endereço de destino”.
  • Se você quer transferir ativos (CRAB/CKTON) de um endereço Substrate para Crab para um endereço Crab Smart, você deve conectar-se a Crab Network com polkadot{.js} e preencher o endereço DVM da conta destinatária, que começa com 0xna caixa de entrada “Endereço de destino”.

Para usuários do Wormhole

  • Se você quer transferir ativos (CRAB/CKTON) de Ethereum para Darwinia, a parte Recipient (Destinatária) deverá ser um endereço Substrate para Darwinia, que começa com o número 2.
  • Se você quer transferir ativos (CRAB/CKTON) de Darwinia para Ethereum, a parteRecipient (Destinatária) deverá ser um endereço real da Rede Ethereum , que começa com 0x.

Outros

Alguns desenvolvedores terceirizados transferiram seus contratos inteligentes ou dApps da Rede Ethereum para a Crab Network. Os usuários interagem com estes contratos inteligentes de terceiros ou dApps com MetaMask ou outra carteira compatível com Ethereum, portanto, os endereços DVM são utilizados na maioria dos casos.

Apêndice

Para aqueles que estão interessados nos detalhes da conversão de endereços, utilizaremos o mesmo exemplo para explicar como um endereço EVM é convertido para um endereço Substrate utilizado na Rede Darwinia com o seguinte diagrama passo a passo.

(Representamos as matrizes de bytes em hexadecimal por conveniência).

  • Endereço DVM (20 bytes)

Vamos começar com o endereço compatível com Ethereum (Endereço DVM) utilizado no exemplo anterior.

0x5ED61E64AA17f2B7726FEfB267676DDc14E24B57

  • Prefixo AccountID (11 bytes)

Adicionamos um prefixo fixo antes do endereço DVM. O prefixo consiste em “dvm:” e 7 bytes de zero-padding. Logo, temos 31 bytes.

0x64766D3A000000000000005ED61E64AA17f2B7726FEfB267676DDc14E24B57

  • CheckSum-1 (1 byte)

Então um simples checksum, que é o resultado da operação de byte xor dos 31 bytes, é anexado no final. Aqui, o checksum-1 é 0x54. Logo, temos 32 bytes.

0x64766D3A000000000000005ED61E64AA17f2B7726FEfB267676DDc14E24B5754

Esta sequência de 32 bytes é uma chave pública SubKey normal que é utilizada para armazenamento e transferência entre blockchains baseadas em Substrate. Ela também pode ser chamada de AccountID.

  • Endereço Tipo Prefixo (1 bytes)

O endereço tipo prefixo identifica em qual rede o endereço é utilizado. Para Darwinia, ele é 18 ou 0x12. Adicione-o ao AccountID e temos 33 bytes.

0x1264766D3A000000000000005ED61E64AA17f2B7726FEfB267676DDc14E24B5754

  • Checksum-2 (2 bytes)

Então 2 bytes de checksum devem ser anexado no final. As etapas de cálculo do checksum são as seguintes:

  1. Concatene a string ‘SS58PRE’(0x53533538505245) e os 33 bytes anteriores para conseguir uma matriz temporário de tamanho 40. (A string ‘SS58PRE’ não será incluída no endereço final.)

0x535335385052451264766D3A000000000000005ED61E64AA17f2B7726FEfB267676DDc14E24B5754

2. Use a função hash Blake2–512 neste matriz byte para conseguir um digest de 64 bytes(512bits), e os primeiros dois bytes, 0xE2AA, são o checksum. Anexe o checksum aos 33 bytes, e nós teremos um matriz byte de tamanho 35.

0x1264766D3A000000000000005ED61E64AA17f2B7726FEfB267676DDc14E24B5754E2AA

  • Base58Check Encoding

A etapa final é codificar a matriz de bytes com a codificação Base58Check, e o endereço Substrate utilizado na rede de Darwinia é:

2qSbd2umtD4KmV2X6CczceumRf4w6t7n19gNrfrJUG24hsnZ

Sobre a Rede Darwinia

A Rede Darwinia é uma rede descentralizada de pontes cross-chain construída em Substrate. A Darwinia é conhecida como o “polo de pontes cross-chain” do Metaverso Web 3.0. Ela fornece uma solução de ponte segura e geral, conecta-se a Polkadot, Ethereum, TRON e outras cadeias heterogêneas através da transferência de ativos em cadeia e chamadas em cadeia remotas.

A Darwinia Network ganhou uma alta reputação e reconhecimento ao longo de sua jornada voltada a construção de protocolos descentralizados de pontes entre cadeias. Em 2020, Darwinia foi mencionada light-paper da Polkadot como um dos amigos da Polkadot e do Substrate. E a Darwinia foi selecionada para participar do Substrate Builder Program e do Web3.0 Bootcamp, e pelo excelente trabalho no Substrate Builder Program, Darwinia Network recebeu oficialmente o título de Nível 2 da Parity. Os produtos e ferramentas desenvolvidos pela Darwinia foram premiados com três financiamentos W3F.

Darwinia tem contribuído para a compatibilidade e interoperabilidade do Metaverso.

As áreas de aplicação da Rede Darwinia incluem DeFi, trading cross-chain de NFTs, jogos, etc. Darwinia também desenvolve o jogo do Metaverso Evolution Land.

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-1-address-formats-in-darwinia-e964cc91fccc

--

--