This guide provides a detailed reference for partner blockchains and developers integrating with xReserve. It defines key terms, onchain message formats, and the attestation flow used to move tokens across blockchains.
Domains are Circle-issued numeric identifiers that map to specific blockchains. They are used in xReserve messages and attestations.
The source chain is the blockchain where the xReserve contract exists and USDC is deposited and held in reserve.
The remote chain is the xReserve partner blockchain that issues and circulates the USDC-backed token on their blockchain after an xReserve deposit is made.
After a remote chain initiates a withdrawal and burns the USDC-backed tokens on its blockchain, xReserve releases the associated USDC on the source chain. The blockchain where the user ultimately withdraws these funds is the destination chain.
There are three ways a user can withdraw these funds:
finalDestinationDomain.finalDestinationDomain. xReserve updates its onchain and offchain ledgers to
reflect the change in reserve on the remote and destination blockchains.Circle deploys and audits the xReserve contract on source blockchains such as Ethereum. It holds USDC deposited by users in reserve when a USDC-backed token is minted on a remote chain, and releases USDC when the corresponding token is burned and withdrawn.
The remote blockchain is responsible for deploying, operating, and securing the smart contract that manages its USDC-backed token. This contract mints and burns the token and manages token logic. It also defines the infrastructure and security for how tokens are handled on its blockchain.
USDC is issued by Circle on supported blockchains such as Ethereum. It is fully redeemable for fiat with Circle and serves as the official, native representation of the USDC stablecoin.
USDC reserve represents the USDC held in the xReserve smart contract on the source chain. xReserve uses Circle Gateway wallets to hold these balances for the USDC-backed token on the remote chain.
USDC-backed tokens are issued on remote blockchains. These tokens are backed 1:1 by USDC held in xReserve and interoperable with the broader USDC network. Each remote blockchain defines its own USDC-backed token.
An attester is a cryptographic identity represented by a single secp256k1
keypair.
xReserve and remote blockchains operate independent attesters, creating a dual-attestation model that ensures both sides must validate before any funds move. These attesters have distinct responsibilities:
DepositIntent is a structured onchain message created when a user deposits
USDC into the xReserve smart contract on the source blockchain.
The following table shows the message format:
| Field | Offset (bytes) | Solidity Type | Length (bytes) | Description |
|---|---|---|---|---|
magic | 0 | uint32* | 4 | 4-byte constant (0x5a2e0acd, subject to change) |
version | 4 | uint32 | 4 | Always 1 |
amount | 8 | uint256 | 32 | Token amount to deposit |
remoteDomain | 40 | uint32 | 4 | Destination domain ID |
remoteToken | 44 | bytes32 | 32 | Token address or identifier on the destination chain |
remoteRecipient | 76 | bytes32 | 32 | Recipient address or identifier on the destination chain |
localToken | 108 | address | 32 | Source chain token address (left-padded to 32 bytes) |
localDepositor | 140 | address | 32 | Source chain depositor address (left-padded to 32 bytes) |
maxFee | 172 | uint256 | 32 | Maximum fee amount to pay on the destination chain |
nonce | 204 | bytes32 | 32 | 32-byte replay protection nonce |
hookDataLen | 236 | uint32 | 4 | Length of hookData in bytes |
hookData | 240 | bytes | n | Optional hook payload |
A deposit attestation is an offchain message signed by xReserve attesters. It can be used by remote blockchains to independently mint corresponding USDC-backed tokens. xReserve constructs a deposit attestation in response to receiving a deposit intent.
Withdrawals let users redeem USDC-backed tokens for USDC held in xReserve. Users can also withdraw USDC-backed tokens on another remote blockchain. All withdrawals are initiated on the remote blockchain.
A BurnIntent is a structured message that the remote blockchain creates when a
user requests to burn USDC-backed tokens on their blockchain. It includes the
amount of USDC-backed tokens burned and the source blockchain on which the USDC
held in xReserve is released.
Remote blockchain attesters sign burn intents, which proves the burn intent is valid. xReserve validates the burn intent and signature before releasing the corresponding USDC reserve.
xReserve issues a withdrawal attestation after validating a burn intent signature and independently validating that the burn occurred on the remote blockchain. This attestation is used to release the USDC held in the xReserve smart contract.
xReserve lets users withdraw funds on a blockchain other than the source chain without performing an additional crosschain transfer. Because xReserve holds funds in a Circle Gateway wallet, users can immediately withdraw USDC on any Gateway supported blockchain. If the destination chain is not supported by Gateway, xReserve can forward the funds in one of two ways: