🌌
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
  1. Materiais
  2. Tutoriais
  3. Tutoriais do Wormhole SDK

Transferir USDC via CCTP

Neste guia, mostraremos como transferir USDC nativo entre diferentes redes blockchain utilizando o Protocolo de TransferĂȘncia entre Cadeias (CCTP) da Circle e o Wormhole TypeScript SDK.

Tradicionalmente, transferĂȘncias entre cadeias usando o CCTP envolvem vĂĄrias etapas manuais, como iniciar a transferĂȘncia na cadeia de origem, transmitir mensagens entre as cadeias e cobrir taxas de gĂĄs nas cadeias de origem e destino. Sem o TypeScript SDK, os desenvolvedores precisam lidar com essas operaçÔes independentemente, o que adiciona complexidade e aumenta a chance de erros, especialmente ao lidar com o pagamento de taxas de gĂĄs na cadeia de destino e a gestĂŁo do token nativo de gĂĄs.

O Wormhole TypeScript SDK simplifica esse processo oferecendo envio automatizado de transferĂȘncias e o gerenciamento das taxas de gĂĄs na cadeia de destino. Ele tambĂ©m oferece a opção de incluir tokens nativos de gĂĄs para uma execução contĂ­nua. Isso reduz o custo para o desenvolvedor, torna as transferĂȘncias mais rĂĄpidas e confiĂĄveis, alĂ©m de melhorar a experiĂȘncia do usuĂĄrio.

Neste guia, exploraremos primeiro a teoria por trĂĄs do CCTP e, em seguida, forneceremos um tutorial passo a passo para integrar o Wormhole TypeScript SDK no seu aplicativo, facilitando transferĂȘncias de USDC entre mĂșltiplas cadeias.

Conceitos Principais Ao transferir ativos entre cadeias, existem duas abordagens principais para lidar com o processo de transferĂȘncia: manual e automatizada. Abaixo, destacamos as diferenças entre essas abordagens e como elas impactam a experiĂȘncia do usuĂĄrio:

  • TransferĂȘncias Manuais: envolvem trĂȘs etapas principais: iniciar a transferĂȘncia na cadeia de origem, buscar a atestação da Circle para verificar a transferĂȘncia e completar a transferĂȘncia na cadeia de destino.

  • TransferĂȘncias Automatizadas: simplificam o processo ao lidar automaticamente com atestaçÔes da Circle e finalização. Com o envio automatizado do Wormhole, vocĂȘ sĂł precisa iniciar a transferĂȘncia, e o restante Ă© gerenciado para vocĂȘ.

PrĂ©-requisitos Antes de começar, verifique se vocĂȘ tem os seguintes itens:

  • Node.js e npm instalados em sua mĂĄquina

  • TypeScript instalado globalmente

  • Tokens USDC nas cadeias compatĂ­veis. Este tutorial usa Avalanche e Sepolia como exemplos.

  • Uma carteira com uma chave privada, financiada com tokens nativos (Testnet ou Mainnet) para taxas de gĂĄs.

Cadeias CompatĂ­veis O Wormhole SDK suporta uma ampla gama de cadeias EVM e nĂŁo-EVM, permitindo que vocĂȘ facilite transferĂȘncias entre cadeias de maneira eficiente. VocĂȘ pode encontrar uma lista completa das cadeias compatĂ­veis no repositĂłrio do Wormhole SDK no GitHub, que cobre ambientes Testnet e Mainnet.

Configuração do Projeto Nesta seção, vocĂȘ configurarĂĄ seu projeto para transferir USDC entre cadeias usando o SDK do Wormhole e o CCTP da Circle. Orientaremos vocĂȘ na inicialização do projeto, instalação de dependĂȘncias e preparação do ambiente para transferĂȘncias entre cadeias.

  • Inicializar o Projeto: comece criando um novo diretĂłrio para o seu projeto e inicializando-o com npm, que criarĂĄ o arquivo package.json do seu projeto.

mkdir cctp-circle
cd cctp-circle
npm init -y
  • Instalar DependĂȘncias: instale as dependĂȘncias necessĂĄrias, incluindo o SDK do Wormhole e bibliotecas auxiliares.

npm install @wormhole-foundation/sdk dotenv
  • Configurar VariĂĄveis de Ambiente: para armazenar com segurança sua chave privada, crie um arquivo .env na raiz do seu projeto.

touch .env

Dentro do arquivo .env, adicione sua chave privada.

ETH_PRIVATE_KEY="INSIRA_SUA_CHAVE_PRIVADA"
SOL_PRIVATE_KEY="INSIRA_SUA_CHAVE_PRIVADA"

Nota: Certifique-se de que sua chave privada contenha fundos USDC e tokens nativos para taxas de gĂĄs tanto na cadeia de origem quanto na de destino.

  • Criar um Arquivo helpers.ts: para simplificar a interação entre as cadeias, crie um arquivo para armazenar funçÔes auxiliares para buscar sua chave privada, configurar signatĂĄrios para diferentes cadeias e gerenciar a transmissĂŁo de transaçÔes.

mkdir helpers
touch helpers/helpers.ts

Abra o arquivo helpers.ts e adicione o seguinte cĂłdigo:

import {
  ChainAddress,
  ChainContext,
  Network,
  Signer,
  Wormhole,
  Chain,
} from '@wormhole-foundation/sdk';
import evm from '@wormhole-foundation/sdk/evm';
import solana from '@wormhole-foundation/sdk/solana';
import { config } from 'dotenv';
config();

export interface SignerStuff<N extends Network, C extends Chain> {
  chain: ChainContext<N, C>;
  signer: Signer<N, C>;
  address: ChainAddress<C>;
}

// Função para buscar variåveis de ambiente (como sua chave privada)
function getEnv(key: string): string {
  const val = process.env[key];
  if (!val) throw new Error(`Missing environment variable: ${key}`);
  return val;
}

// Função de configuração de signatårio para diferentes plataformas blockchain
export async function getSigner<N extends Network, C extends Chain>(chain: ChainContext<N, C>): Promise<{
  chain: ChainContext<N, C>;
  signer: Signer<N, C>;
  address: ChainAddress<C>;
}> {
  let signer: Signer;
  const platform = chain.platform.utils()._platform;

  switch (platform) {
    case 'Solana':
      signer = await (
        await solana()
      ).getSigner(await chain.getRpc(), getEnv('SOL_PRIVATE_KEY'));
      break;
    case 'Evm':
      signer = await (
        await evm()
      ).getSigner(await chain.getRpc(), getEnv('ETH_PRIVATE_KEY'));
      break;
    default:
      throw new Error('Unsupported platform: ' + platform);
  }

  return {
    chain,
    signer: signer as Signer<N, C>,
    address: Wormhole.chainAddress(chain.chain, signer.address()),
  };
}
  • Criar o Script Principal: crie um novo arquivo chamado manual-transfer.ts para armazenar seu script para transferir USDC entre cadeias.

touch src/manual-transfer.ts

Abra o arquivo manual-transfer.ts e comece importando os mĂłdulos necessĂĄrios do SDK e arquivos auxiliares.

import { wormhole } from '@wormhole-foundation/sdk';
import evm from '@wormhole-foundation/sdk/evm';
import solana from '@wormhole-foundation/sdk/solana';
import { getSigner } from './helpers/helpers';
  • TransferĂȘncias Manuais: nas transferĂȘncias manuais de USDC, vocĂȘ realiza cada etapa do processo de transferĂȘncia entre cadeias individualmente. Essa abordagem permite maior controle e flexibilidade sobre como a transferĂȘncia Ă© executada, o que pode ser Ăștil em cenĂĄrios onde vocĂȘ precisa personalizar certos aspectos da transferĂȘncia, como o gerenciamento de gĂĄs, seleção especĂ­fica de cadeias ou assinatura manual de transaçÔes.

Esta seção o guiarĂĄ por uma transferĂȘncia manual de USDC entre cadeias usando o Wormhole SDK e o CCTP da Circle.

Configurar o Ambiente de TransferĂȘncia

Configurar Detalhes da TransferĂȘncia Antes de iniciar uma transferĂȘncia entre cadeias, vocĂȘ deve configurar o contexto da cadeia e os signatĂĄrios para as cadeias de origem e destino.

  • Inicializar o SDK do Wormhole: inicialize a função wormhole para o ambiente Testnet e especifique as plataformas (EVM e Solana) para oferecer suporte.

cĂłdigo(async function () {
  const wh = await wormhole('Testnet', [evm, solana]);
})();

VocĂȘ pode substituir 'Testnet' por 'Mainnet' se desejar realizar transferĂȘncias na Mainnet.

Configurar as cadeias de origem e destino - especifique a cadeia de origem (Avalanche) e a cadeia de destino (Sepolia) usando o mĂ©todo getChain. Isso nos permite definir onde enviar o USDC e onde recebĂȘ-los:

const sendChain = wh.getChain('Avalanche');
  const rcvChain = wh.getChain('Sepolia');

Configurar os signatårios - use a função getSigner para recuperar os signatårios responsåveis por assinar as transaçÔes nas respectivas cadeias. Isso garante que as transaçÔes sejam corretamente autorizadas tanto na cadeia de origem quanto na cadeia de destino:

const source = await getSigner(sendChain);
  const destination = await getSigner(rcvChain);

Definir o valor da transferĂȘncia - o valor de USDC a ser transferido Ă© especificado. Neste caso, estamos transferindo 0,1 USDC, que Ă© analisado e convertido para as unidades base esperadas pelo SDK do Wormhole:

const amt = 100_000n;

Definir o modo de transferĂȘncia - especificamos que a transferĂȘncia deve ser manual definindo automatic = false. Isso significa que vocĂȘ precisarĂĄ gerenciar os passos de atestação e finalização por conta prĂłpria:

const automatic = false;

Iniciar a TransferĂȘncia

Para começar o processo de transferĂȘncia manual, vocĂȘ precisa primeiro criar o objeto de transferĂȘncia e depois iniciar manualmente a transferĂȘncia na cadeia de origem.

Criar o objeto de transferĂȘncia do Circle - a função wh.circleTransfer() cria um objeto com os detalhes da transferĂȘncia, como o valor de USDC, os endereços de origem e destino, e o modo. No entanto, isso nĂŁo inicia a transferĂȘncia em si:

const xfer = await wh.circleTransfer(
    amt,
    source.address,
    destination.address,
    automatic
  );

Iniciar a transferĂȘncia - a função initiateTransfer envia a transação na cadeia de origem. Isso envolve assinar e enviar a transação usando o signatĂĄrio de origem. Ela retornarĂĄ uma lista de IDs de transaçÔes (srcTxIds) que vocĂȘ pode usar para rastrear a transferĂȘncia:

const srcTxids = await xfer.initiateTransfer(source.signer);
  console.log(`TransferĂȘncia iniciada: `, srcTxids);

Buscar a Atestação do Circle (VAA)

Depois de iniciar a transferĂȘncia na cadeia de origem, vocĂȘ deve buscar a VAA (Atestação de Valor Vinculado) do Circle. A VAA serve como prova criptogrĂĄfica de que o CCTP reconheceu a transferĂȘncia com sucesso. A transferĂȘncia nĂŁo pode ser concluĂ­da na cadeia de destino atĂ© que essa atestação seja obtida.

Definir um tempo limite - buscar a atestação pode levar algum tempo, então é comum definir um tempo limite. Neste exemplo, definimos o tempo limite para 60 segundos:

const timeout = 60 * 1000; // Timeout em milissegundos (60 segundos)

Buscar a atestação - apĂłs iniciar a transferĂȘncia, vocĂȘ pode usar a função fetchAttestation() para recuperar a VAA. Essa função aguardarĂĄ atĂ© que a atestação esteja disponĂ­vel ou atĂ© que o tempo limite especificado seja alcançado:

const attestIds = await xfer.fetchAttestation(timeout);
  console.log(`Atestação recebida: `, attestIds);

Os attestIds conterĂŁo os detalhes da atestação obtida, que o Wormhole usarĂĄ para completar a transferĂȘncia na cadeia de destino.

Completar a TransferĂȘncia na Cadeia de Destino

ApĂłs obter a VAA corretamente, o Ășltimo passo Ă© completar a transferĂȘncia na cadeia de destino (Sepolia neste exemplo). Isso envolve resgatar a VAA, o que move os USDC da custĂłdia do Circle para a cadeia de destino.

Use a função completeTransfer() para finalizar a transferĂȘncia na cadeia de destino. Isso exige que o signatĂĄrio de destino assine e envie a transação para a cadeia de destino:

const dstTxids = await xfer.completeTransfer(destination.signer);
  console.log(`TransferĂȘncia concluĂ­da: `, dstTxids);

  console.log('Status da transferĂȘncia Circle: ', xfer);

  process.exit(0);

Os dstTxIds conterĂŁo os IDs das transaçÔes para a transferĂȘncia na cadeia de destino, confirmando que a transferĂȘncia foi concluĂ­da.

VocĂȘ pode encontrar o cĂłdigo completo do script de transferĂȘncia manual de USDC abaixo:

import { wormhole } from '@wormhole-foundation/sdk';
import evm from '@wormhole-foundation/sdk/evm';
import solana from '@wormhole-foundation/sdk/solana';
import { getSigner } from './helpers/helpers';

(async function () {
  const wh = await wormhole('Testnet', [evm, solana]);

  // Configurar as cadeias de origem e destino
  const sendChain = wh.getChain('Avalanche');
  const rcvChain = wh.getChain('Sepolia');

  // Configurar os signatĂĄrios
  const source = await getSigner(sendChain);
  const destination = await getSigner(rcvChain);

  // Definir o valor da transferĂȘncia (na unidade mais baixa, entĂŁo 0.1 USDC = 100.000 unidades considerando 6 casas decimais)
  const amt = 100_000n;

  const automatic = false;

  // Criar o objeto de transferĂȘncia do Circle
  const xfer = await wh.circleTransfer(
    amt,
    source.address,
    destination.address,
    automatic
  );

  console.log('Objeto de TransferĂȘncia do Circle criado:', xfer);

  // Iniciar a transferĂȘncia na cadeia de origem (Avalanche)
  console.log('Iniciando a TransferĂȘncia');
  const srcTxids = await xfer.initiateTransfer(source.signer);
  console.log(`TransferĂȘncia iniciada: `, srcTxids);

  // Aguardar a Atestação do Circle (VAA)
  const timeout = 60 * 1000; // Timeout em milissegundos (60 segundos)
  console.log('Aguardando a Atestação');
  const attestIds = await xfer.fetchAttestation(timeout);
  console.log(`Atestação recebida: `, attestIds);

  // Completar a transferĂȘncia na cadeia de destino (Sepolia)
  console.log('Finalizando a TransferĂȘncia');
  const dstTxids = await xfer.completeTransfer(destination.signer);
  console.log(`TransferĂȘncia concluĂ­da: `, dstTxids);

  console.log('Status da TransferĂȘncia Circle: ', xfer);

  process.exit(0);
})();

Executar a TransferĂȘncia Manual

Para executar o script de transferĂȘncia manual, vocĂȘ pode usar o ts-node para rodar o arquivo TypeScript diretamente:

npx ts-node src/manual-transfer.ts

Isso iniciarĂĄ a transferĂȘncia de USDC da cadeia de origem (Avalanche) e a completarĂĄ na cadeia de destino (Sepolia).

VocĂȘ pode monitorar o status da transação no explorador do Wormhole.

Completar uma TransferĂȘncia Parcial

Em alguns casos, uma transferĂȘncia manual pode começar, mas nĂŁo terminar—por exemplo, se o usuĂĄrio interromper sua sessĂŁo ou houver um problema antes que a transferĂȘncia possa ser concluĂ­da. O SDK do Wormhole permite que vocĂȘ reconstrua o objeto de transferĂȘncia a partir do hash da transação na cadeia de origem.

Esse recurso Ă© Ăștil para recuperar uma transferĂȘncia incompleta ou para depuração.

Aqui estĂĄ como vocĂȘ pode completar uma transferĂȘncia parcial usando apenas a cadeia de origem e o hash da transação:

const xfer = await CircleTransfer.from(
    wh,
    {
      chain: 'Avalanche',
      txid: '0x6b6d5f101a32aa6d2f7bf0bf14d72bfbf76a640e1b2fdbbeeac5b82069cda4dd',
    },
    timeout
  );

  const dstTxIds = await xfer.completeTransfer(destination.signer);
  console.log('TransferĂȘncia concluĂ­da: ', dstTxIds);

VocĂȘ precisarĂĄ fornecer os seguintes requisitos para completar a transferĂȘncia parcial:

  • ID da Transação (txId): o hash da transação na cadeia de origem onde a transferĂȘncia foi iniciada

  • SignatĂĄrio da cadeia de destino (destination.signer): a carteira ou chave privada que pode autorizar e concluir a transferĂȘncia na cadeia de destino. Esse signatĂĄrio Ă© o mesmo definido na configuração da transferĂȘncia manual

Isso permite retomar o processo de transferĂȘncia reconstruindo o objeto de transferĂȘncia e completando-o na cadeia de destino. É especialmente conveniente para depuração ou quando hĂĄ interrupçÔes na transferĂȘncia.

VocĂȘ pode encontrar o cĂłdigo completo para o script de transferĂȘncia manual de USDC abaixo:

import { CircleTransfer, wormhole } from '@wormhole-foundation/sdk';
import evm from '@wormhole-foundation/sdk/evm';
import solana from '@wormhole-foundation/sdk/solana';
import { getSigner } from '../helpers/helpers';

(async function () {
  // Inicializar o objeto Wormhole para o ambiente Testnet e adicionar as cadeias suportadas (evm e solana)
  const wh = await wormhole('Testnet', [evm, solana]);

  // Obter Contextos das cadeias -- esses mantĂȘm uma referĂȘncia a um cliente RPC em cache
  const rcvChain = wh.getChain('Sepolia');

  // Obter o signatĂĄrio da chave local
  const destination = await getSigner(rcvChain);

  const timeout = 60 * 1000; // Timeout em milissegundos (60 segundos)

  // Reconstruir a transferĂȘncia a partir do txid da origem
  const xfer = await CircleTransfer.from(
    wh,
    {
      chain: 'Avalanche',
      txid: '0x6b6d5f101a32aa6d2f7bf0bf14d72bfbf76a640e1b2fdbbeeac5b82069cda4dd',
    },
    timeout
  );

  const dstTxIds = await xfer.completeTransfer(destination.signer);
  console.log('TransferĂȘncia concluĂ­da: ', dstTxIds);

  console.log('Status da TransferĂȘncia Circle: ', xfer);

  process.exit(0);
})();

TransferĂȘncias AutomĂĄticas

O processo de transferĂȘncia automĂĄtica simplifica as etapas automatizando a obtenção da atestação e a conclusĂŁo da transferĂȘncia. Tudo o que vocĂȘ precisa fazer Ă© iniciar a transferĂȘncia.

Configurar o Ambiente de TransferĂȘncia

Configurar os Detalhes da TransferĂȘncia A configuração para transferĂȘncias automĂĄticas Ă© semelhante Ă  das transferĂȘncias manuais, com a principal diferença sendo que a flag automatic estĂĄ definida como true. Isso indica que o Wormhole lidarĂĄ com as etapas de atestação e finalização para vocĂȘ:

const automatic = true;

Iniciar a TransferĂȘncia

O processo de transferĂȘncia Ă© o mesmo que para transferĂȘncias manuais. VocĂȘ cria o objeto de transferĂȘncia e depois inicia a transferĂȘncia na cadeia de origem:

const xfer = await wh.circleTransfer(
    amt,
    source.address,
    destination.address,
    automatic
  );

Registrar Detalhes da TransferĂȘncia

ApĂłs iniciar a transferĂȘncia, vocĂȘ pode registrar os IDs das transaçÔes tanto da cadeia de origem quanto da cadeia de destino. Isso ajudarĂĄ a acompanhar o progresso da transferĂȘncia:

const srcTxids = await xfer.initiateTransfer(source.signer);
  console.log(`TransferĂȘncia iniciada: `, srcTxids);

  process.exit(0);

VocĂȘ pode encontrar o cĂłdigo completo para o script de transferĂȘncia automĂĄtica de USDC abaixo:

automatic-transfer.ts

import { wormhole } from '@wormhole-foundation/sdk';
import evm from '@wormhole-foundation/sdk/evm';
import solana from '@wormhole-foundation/sdk/solana';
import { getSigner } from '../helpers/helpers';

(async function () {
  // Inicializar o objeto Wormhole para o ambiente Testnet e adicionar as cadeias suportadas (evm e solana)
  const wh = await wormhole('Testnet', [evm, solana]);

  // Configurar as cadeias de origem e destino
  const sendChain = wh.getChain('Avalanche');
  const rcvChain = wh.getChain('Sepolia');

  // Configurar os signatĂĄrios
  const source = await getSigner(sendChain);
  const destination = await getSigner(rcvChain);

  // Definir o valor da transferĂȘncia (na menor unidade, entĂŁo 0,1 USDC = 100.000 unidades assumindo 6 casas decimais)
  const amt = 100_000_001n;

  const automatic = true;

  // Criar o objeto de transferĂȘncia Circle (somente USDC)
  const xfer = await wh.circleTransfer(
    amt,
    source.address,
    destination.address,
    automatic
  );

  console.log('Objeto de TransferĂȘncia Circle criado:', xfer);

  // Iniciar a transferĂȘncia na cadeia de origem (Avalanche)
  console.log('Iniciando a TransferĂȘncia');
  const srcTxids = await xfer.initiateTransfer(source.signer);
  console.log(`TransferĂȘncia Iniciada: `, srcTxids);

  process.exit(0);
})();

Executar a TransferĂȘncia AutomĂĄtica

Assumindo que vocĂȘ tenha criado um novo arquivo automatic-transfer.ts para transferĂȘncias automĂĄticas no diretĂłrio src, use o seguinte comando para executĂĄ-lo com o ts-node:

npx ts-node src/automatic-transfer.ts

O relayer automĂĄtico cuidarĂĄ de buscar a atestação e concluir a transferĂȘncia para vocĂȘ.

Recursos

Se vocĂȘ deseja explorar o projeto completo ou precisa de uma referĂȘncia enquanto segue este tutorial, pode encontrar o cĂłdigo completo no repositĂłrio demo do GitHub do Wormhole. O repositĂłrio inclui todos os scripts de exemplo e configuraçÔes necessĂĄrias para realizar transferĂȘncias cross-chain de USDC, incluindo transferĂȘncias manuais, automĂĄticas e parciais usando o SDK do Wormhole e o CCTP da Circle.

ConclusĂŁo

Neste tutorial, vocĂȘ ganhou experiĂȘncia prĂĄtica com o CCTP da Circle e o SDK do Wormhole. Aprendeu a realizar transferĂȘncias manuais e automĂĄticas de USDC entre vĂĄrias cadeias e recuperar transferĂȘncias parciais, se necessĂĄrio.

Ao seguir esses passos, vocĂȘ aprendeu a:

  • Configurar transferĂȘncias cross-chain de USDC nativo entre cadeias suportadas

  • Lidar tanto com o envio manual quanto com o envio automĂĄtico de transaçÔes

  • Recuperar e concluir transferĂȘncias incompletas usando o hash da transação e o signatĂĄrio da cadeia de destino

PreviousTutoriais do Wormhole SDKNextTransferir Tokens via a Token Bridge

Last updated 5 months ago