_Cross-Chain Transfer Protocol (CCTP) is a permissionless on-chain utility that can burn native USDC on a source chain and mint native USDC of the same amount on a destination chain. Developers can embed CCTP into their apps to provide users with the most capital-efficient way to transfer USDC across chains, unifying liquidity across the ecosystem and simplifying user experience._

To get started with CCTP, follow the example script provided [here](🔗). The example uses [web3.js ](🔗)to transfer USDC from an address on ETH Goerli testnet to another address on AVAX Fuji testnet.

The script has 5 steps:

  1. The first step approves ETH **TokenMessenger** contract to withdraw USDC from the provided eth address.

  1. The second step executes **depositForBurn** function on the ETH TokenMessenger contract deployed in [Goerli testnet](🔗).

  1. The third step extracts **messageBytes** emitted by **MessageSent** event from **depositForBurn** transaction logs and hashes the retrieved **messageBytes** using the **keccak256** hashing algorithm.

  1. The fourth step polls the attestation service to acquire the signature using the **messageHash** from the previous step.

  1. The last step calls the **receiveMessage** function on AVAX **MessageTransmitter** contract to receive USDC at AVAX address.

Note: The attestation service is rate-limited. Please limit your requests to less than 10 per second.