xReserve deposits
These steps occur when a user deposits USDC into xReserve:- A user deposits USDC from their wallet app into xReserve smart contract on the source blockchain.
- The xReserve contract emits a deposit event and locks the funds, holding them in reserve.
- The xReserve attestation service generates and signs a deposit attestation.
- The remote blockchain attestation service fetches the signed deposit attestation.
- The remote blockchain mints USDC-backed stablecoins on their blockchain and emits a mint event.
- The remote blockchain token contract deposits the newly minted USDC-backed tokens into the user’s wallet app on the remote blockchain.
xReserve withdrawals
Subsequently, these steps occur when a user withdraws USDC from xReserve:- A user requests to burn USDC-backed stablecoins on the remote blockchain and withdraw USDC on the destination blockchain.
- The remote blockchain token contract burns their USDC-backed stablecoins on the remote blockchain and emits a burn event.
- The remote blockchain attestation service generates and signs a burn intent offchain.
- The remote blockchain attestation service passes the burn intent and signature to xReserve.
- xReserve verifies the burn and issues a withdrawal attestation.
- xReserve releases USDC to the user’s wallet on the destination blockchain.
As part of the same withdrawal, xReserve can
forward funds to
another blockchain. This lets users withdraw funds on a blockchain other than
the source blockchain without performing an additional crosschain transfer.When the destination is an xReserve source blockchain (Ethereum or Arc), USDC is
released directly from the xReserve contract on that blockchain, with no
crosschain forwarding.