🌌
Wormhole Docs Brasil
  • Bem-vindo!
  • Materiais
    • Build
      • Começer a Buildar
        • Redes Suportadas
        • Testnet Faucets
        • Demos
      • Construindo Aplicações Frontend
        • Wormhole SDK
          • Wormhole TypeScript SDK
          • Data Layouts
          • Construção de Protocolos e Payloads
        • Queries
          • Overview
          • Usando Queries
          • F.A.Q.
        • Conexão
          • Overview
          • Routes
          • Features
          • Configuração
          • v1 Migration
          • F.A.Q.
      • Construindo Integrações de contratos
        • Wormhole Relayer
        • Core Contracts
        • CCTP
        • Transferências de Tokens Nativos
          • Processos de Deployment
        • Comandos NTT CLI
        • Configuração de NTT
          • Limitação de Taxas
          • Controle de Acesso
        • Managers e Transceivers
        • F.A.Q. Wormhole NTT
      • MultiGov
        • Deployment
        • Upgrades Contracts
        • F.A.Q. Tecnicas
      • Ambiente de Desenvolvimento
      • F.A.Q sobre Integrações de Contratos
      • Toolkit
        • Wormholescan
        • Wormhole CLI
        • Wormhole SDK
          • TypeScript SDK
          • Data Layouts
          • Construindo Protocolos e Payloads
        • Solidity SDK
        • Tilt
        • Toolkit F.A.Q.
      • Referências
    • Infraestrutura
      • Run a Relayer
      • Run a Spy
    • Tutoriais
      • Tutorial de Conexão
      • Tutorial de Contratos Cross-Chain
        • Criação de Contratos de Mensagens Cross-Chain
        • Criação de contratos de transferência de tokens Cross-Chain
      • Tutoriais de Transferências de Tokens Nativos (NTT - Native Token Transfers)
        • Crie Tokens Multichain
      • Tutorial MultiGov
        • Proposta Cross-Chain treasury management
      • Tutoriais do Wormhole SDK
        • Transferir USDC via CCTP
        • Transferir Tokens via a Token Bridge
    • Learn
      • Fundamentos
        • Introdução
        • Segurança
        • Overview de Arquitetura
        • Glossário
      • Componentes de Infraestrutura
        • Core Contracts
        • VAAs (Verified Action Approvals)
        • Guardians
        • Spy
        • Relayers
      • Messaging
        • Token Bridge
        • Circle's CCTP Bridge
        • Transferencias de Token Nativos
          • Overview
          • Arquitetura
          • Modelos de Deploy
          • Security
      • Multigov
        • MultiGov: Governança Cross-Chain com Wormhole
        • MultiGov Architecture
        • FAQs
    • Links úteis
Powered by GitBook
On this page
  • Desenvolvimento de Native Token Transfers (NTT) para EVM
  • Transferências de Tokens Nativos (NTT) Solana - Implantação
  • Após a Implantação do NTT
  1. Materiais
  2. Build
  3. Construindo Integrações de contratos
  4. Transferências de Tokens Nativos

Processos de Deployment

Esta seção fornece informações sobre a instalação do framework de Transferência de Tokens Nativos (NTT) do Wormhole, implantação para EVM e Solana, e manutenção pós-implantação do NTT.

Instalar o CLI do Native Token Transfers Instalação A maneira mais rápida de implantar o Native Token Transfers (NTT) é utilizando o NTT CLI. Como pré-requisitos, certifique-se de ter os seguintes itens instalados:

  • Instalar Foundry

  • Instalar Bun

  • Instalar o NTT CLI:

curl -fsSL https://raw.githubusercontent.com/wormhole-foundation/native-token-transfers/main/cli/install.sh | bash

Verifique se o NTT CLI foi instalado:

ntt --version

Atualização Para atualizar uma instalação existente do NTT CLI, execute:

ntt update

Nota As instalações e atualizações do NTT CLI sempre pegarão a última tag com o nome vX.Y.Z+cli e verificarão se o commit subjacente está incluído no main.

Para desenvolvimento local, você pode atualizar sua versão do CLI a partir de um branch específico ou instalar de um caminho local.

Para instalar de um branch específico, execute:

ntt update --branch foo

Para instalar localmente, execute:

ntt update --path path/to/ntt/repo

Branches git e instalações locais permitem um loop de iteração rápido, pois as mudanças no código CLI serão refletidas imediatamente no binário em execução, sem a necessidade de executar etapas de build.

Desenvolvimento de Native Token Transfers (NTT) para EVM

Implantar seu Token e Garantir Compatibilidade Caso ainda não tenha feito, implante o contrato do token para as chains de destino ou spoke.

Requisitos para Implantação de Token O NTT do Wormhole é um framework aberto que suporta vários modos de implantação. O NTT CLI atualmente suporta dois modos de implantação: burn-and-mint e hub-and-spoke. Esses modos diferem na forma como os tokens são gerenciados entre as chains.

Modo Burn-and-Mint Tokens integrados ao NttManager no modo de queima exigem as seguintes duas funções:

burn(uint256 amount)
mint(address account, uint256 amount)

Essas funções não fazem parte da interface padrão do ERC-20. A interface INttToken documenta as funções e métodos necessários, erros e eventos.

Visualize a interface completa do INttToken

Depois, você define a autoridade de mint para o contrato correspondente do NttManager. Você também pode seguir os scripts no repositório de exemplo de token NTT para implantar um contrato de token.

Modo Hub-and-Spoke Uma chain central (por exemplo, Ethereum) gerencia o suprimento total de tokens no modo hub-and-spoke. Outras chains (spokes) mint ou burn tokens durante as transferências entre chains, garantindo consistência com os tokens bloqueados na chain hub.

  • Chain hub - tokens são bloqueados na chain hub ao transferir para chains spoke

  • Chains spoke - tokens são nativos das chains spoke e são ou mintados ou queimados durante as transferências cross-chain

Nota O único requisito para usar o framework NTT é um token ERC20, que pode ser implantado recentemente ou já existente. Etapas como definir a autoridade de mint se aplicam apenas às chains spoke.

Por exemplo, ao transferir tokens de Ethereum (hub) para Polygon (spoke), o NTT Manager bloqueia tokens no Ethereum, e o equivalente é mintado no Polygon. De forma similar, ao transferir tokens de volta de Polygon para Ethereum, os tokens são queimados no Polygon e desbloqueados no Ethereum.

Este processo garante que o suprimento total de tokens permaneça consistente em todas as chains, com a chain hub atuando como a fonte de verdade.

Modelos de Implantação

  • Burn-and-mint - tokens devem implementar funções personalizadas de mint e burn, permitindo que cada chain gerencie a emissão de tokens de forma independente

  • Hub-and-spoke - tokens precisam ser apenas compatíveis com ERC20, com a chain hub atuando como a fonte de verdade para consistência do suprimento

Implantar NTT Crie um novo projeto NTT:

ntt new my-ntt-deployment
cd my-ntt-deployment

Inicialize um novo arquivo deployment.json especificando a rede:

ntt init Testnet

Certifique-se de que configurou seu ambiente corretamente:

export ETH_PRIVATE_KEY=INSERT_PRIVATE_KEY

Adicione cada chain para a qual você vai implantar. O exemplo abaixo mostra como configurar o NTT no modo burn-and-mint nas chains Ethereum Sepolia e Arbitrum Sepolia:

# Defina as chaves da API do scanner como variáveis de ambiente
export SEPOLIA_SCAN_API_KEY=INSERT_ETHERSCAN_SEPOLIA_API_KEY
export ARBITRUMSEPOLIA_SCAN_API_KEY=INSERT_ARBISCAN_SEPOLIA_API_KEY

# Adicione cada chain
# Os contratos serão automaticamente verificados usando as chaves de API do scanner acima
ntt add-chain Sepolia --latest --mode burning --token INSERT_YOUR_TOKEN_ADDRESS
ntt add-chain ArbitrumSepolia --latest --mode burning --token INSERT_YOUR_TOKEN_ADDRESS

Embora não seja recomendado, você pode passar a flag -skip-verify para o comando ntt add-chain caso deseje pular a verificação do contrato.

O comando ntt add-chain aceita os seguintes parâmetros:

  • Nome de cada chain

  • Versão do NTT a ser implantada (use --latest para as versões mais recentes dos contratos)

  • Modo (queima ou bloqueio)

  • Endereço do contrato do seu token

O NTT CLI imprime logs detalhados e hashes de transações, para que você possa ver exatamente o que está acontecendo.

Configurar o NTT O NTT CLI se inspira no git. Você pode executar:

ntt status - verifica se o arquivo deployment.json está consistente com o que está na chain
ntt pull - sincroniza o arquivo deployment.json com a configuração da chain e define limites de taxa com o número apropriado de casas decimais, dependendo da chain específica.

Após implantar os contratos NTT, certifique-se de que a implantação está corretamente configurada e que sua representação local está consistente com o estado real na chain, executando ntt status e seguindo as instruções exibidas na tela.

Definir o Token Minter para o NTT Manager A última etapa no processo de implantação é definir o NTT Manager como o minter do seu token em todas as chains nas quais você implantou no modo de queima. Ao realizar uma implantação hub-and-spoke, é necessário apenas definir o NTT Manager como minter do token em cada chain spoke.

Nota O endereço do NTT Manager necessário pode ser encontrado no arquivo deployment.json.

Se você seguiu a interface INttToken, pode executar a função setMinter(address newMinter):

cast send $TOKEN_ADDRESS "setMinter(address)" $NTT_MANAGER_ADDRESS --private-key $ETH_PRIVATE_KEY --rpc-url $YOUR_RPC_URL

Se você tem um processo personalizado para gerenciar minters de token, deve seguir esse processo para adicionar o NTT Manager correspondente como minter.

Por padrão, as transferências NTT para blockchains EVM suportam relé automático via o relayer Wormhole, o que não requer que o usuário realize uma transação na chain de destino para completar a transferência.

Transferências de Tokens Nativos (NTT) Solana - Implantação

Instalar Dependências Certifique-se de que as seguintes dependências estão instaladas:

  • Rust

  • Solana v1.18.10

  • Anchor v0.29.0

Aviso Garanta que você está usando as versões mencionadas do Solana e Anchor. Usar versões diferentes pode causar problemas.

Implantar NTT Crie um novo projeto NTT (ou use um projeto NTT existente):

ntt new my-ntt-deployment
cd my-ntt-deployment

Inicialize um novo arquivo deployment.json especificando a rede:

  • Testnet

  • Mainnet

ntt init Testnet

Implantar Seu Token Solana Implante um Token SPL Nota As versões do NTT >=v2.0.0+solana oferecem suporte a tokens SPL com hooks de transferência.

Requisitos da Cadeia Principal (Hub Chain) Para implantações de cadeias principais na Solana, o token pode ser um SPL ou Token2022. Tokens de cadeias principais não exigem configuração adicional, como a definição da autoridade do mint.

Para informações detalhadas, consulte a página de Modelos de Implantação.

Requisitos de Modo de Queima No modo de queima, os tokens exigem que sua autoridade de mint seja atribuída ao programa NTT. Isso permite que o NTT Manager faça mint e queima de tokens conforme necessário durante transferências entre cadeias.

Todos os passos necessários para configurar o modo de queima, incluindo a configuração da autoridade de mint, estão explicados nas seções abaixo.

Configuração e Implantação Gerar Par de Chaves do Programa NTT Ao implantar um programa Solana, você precisa hardcodificar o ID do programa (um Pubkey) no código do programa. O CLI NTT permite fazer isso de forma fácil.

Gere um novo par de chaves do programa NTT usando:

solana-keygen grind --starts-with ntt:1 --ignore-case

Derivar a Autoridade do Token Nesta etapa, você derivará o Program Derived Address (PDA) da autoridade do token do ID do programa NTT recém-gerado:

ntt solana token-authority INSERT_YOUR_NTT_PROGRAM_KEY_PAIR

Este script retornará o PDA derivado, que você usará na próxima etapa.

Definir Autoridade de Mint do Token SPL Se você estiver implantando no modo de queima, defina a autoridade de mint do token SPL para o PDA de autoridade de token recém-gerado:

spl-token authorize INSERT_TOKEN_ADDRESS mint INSERT_DERIVED_PDA

Nota Garanta que você está usando a versão do Anchor CLI 0.29.0. Usar uma versão diferente pode causar problemas de compatibilidade.

Implantar NTT Gere ou exporte seu par de chaves de pagador e execute:

ntt add-chain Solana --latest --mode burning --token INSERT_TOKEN_ADDRESS --payer INSERT_YOUR_KEYPAIR_JSON --program-key INSERT_YOUR_NTT_PROGRAM_KEYPAIR_JSON

Nota O comando add-chain aceita a flag opcional --solana-priority-fee, que define a taxa de prioridade em microlamports. O valor padrão é 50000.

O programa NTT Solana será compilado e implantado, retornando o ID do programa.

Configurar NTT O CLI NTT se inspira no git. Você pode executar:

ntt status
  • Verifica se o seu arquivo deployment.json está consistente com o que está on-chain.

ntt pull
  • Sincroniza o arquivo deployment.json com a configuração on-chain e define os limites de taxa com o número apropriado de casas decimais, dependendo da cadeia específica.

Por exemplo, para Solana, os limites são definidos com 9 casas decimais:

"inbound": {
    "Sepolia": "1000.000000000" // limite de entrada de Sepolia para Solana
}

Para Sepolia (Ethereum Testnet), os limites são definidos com 18 casas decimais:

"inbound": {
    "Solana": "1000.000000000000000000" // limite de entrada de Solana para Sepolia
}

Essa configuração inicial garante que os limites de taxa sejam corretamente representados para a precisão dos tokens de cada cadeia.

Implantar NTT na Solana Agora, você pode enviar a implantação para a rede Solana, especificando o par de chaves que cobrirá as taxas de gás:

ntt push --payer INSERT_YOUR_KEYPAIR_JSON

Por padrão, as transferências NTT para a Solana suportam retransmissão manual, o que requer que o usuário execute uma transação na Solana para completar a transferência. Componentes da UI, como o Wormhole Connect, oferecem suporte nativo para isso. Para suporte automático de retransmissão Wormhole na Solana, entre em contato com os colaboradores do Wormhole.

Após a Implantação do NTT

Recomendações Pós-Implantação Para oferecer a melhor experiência ao usuário e garantir a implantação mais robusta, os colaboradores do Wormhole recomendam o seguinte após a implantação do NTT:

  • Implemente um plano de testes robusto para seu token multichain antes do lançamento.

  • Garanta que medidas de segurança abrangentes e documentadas sejam seguidas quanto à custódia da propriedade do contrato, controle das chaves e funções de controle de acesso.

  • Considere um frontend simplificado e personalizável, como o Wormhole Connect, para uma experiência de usuário otimizada.

  • Alternativamente, o Wormhole SDK permite integração direta à sua infraestrutura.

  • Certifique-se de que atores do ecossistema, como exploradores de blocos, ferramentas de segurança automatizadas (como BlockAid e Blowfish), carteiras (como MetaMask, Backpack e Phantom) estão cientes de sua implantação multichain e que está rotulada corretamente.

  • Monitore e mantenha sua implantação multichain.

Solução de Problemas na Implantação do NTT Se você encontrar problemas durante o processo de implantação do NTT, verifique os seguintes pontos comuns:

  • Versões do Solana e Anchor - garanta que você está usando as versões esperadas conforme descrito na página de implantação.

  • Conformidade do Token no EVM - verifique se o seu token é um token ERC20 na cadeia EVM.

  • Transferência de autoridade de mint - para tokens de queima ou spoke na Solana, certifique-se de que a autoridade do mint do token foi transferida conforme descrito na seção "Definir Autoridade de Mint do Token SPL".

  • Configuração decimal - execute ntt pull para configurar corretamente os decimais no seu arquivo deployment.json.

  • Configuração de limites de taxa - aumente seus limites de taxa para um valor maior que zero. Limites de taxa iguais a zero podem fazer com que as transações fiquem travadas. Saiba mais sobre como configurar os limites de taxa.

  • Ambiente Docker baseado no Ubuntu 20.04 - execute docker compose up -d para iniciar o contêiner no terminal a partir do diretório que contém o arquivo docker-compose.yml.

Dockerfile e docker-compose.yml O guia também fornece instruções completas de como configurar o ambiente Docker, incluindo a instalação das dependências necessárias.

PreviousTransferências de Tokens NativosNextComandos NTT CLI

Last updated 5 months ago