# Operations

Let's walkthrough each of the operations that enable the bridging of USDC in and out of Stacks.

### Definitions

* **USDC**: Refers to native-chain USDC locked on the source chain that secures USDC-backed token at a 1-to-1 ratio.
* **xReserve smart contract**: 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 Stacks
* **xReserve attestation service**: Operated by Circle. They monitor USDC deposits into the xReserve smart contract and sign deposit attestations. They also verify withdrawal attestations to release USDC.
* **Stacks attestation service**: Operated by Stacks. They monitor signed deposit attestations to trigger minting of USDCx on Stacks. In addition, they monitor burns of USDCx tokens to sign burn intents which are then forwarded to Circle's xReserve attestation service.
* **USDCx**: A SIP-010 token on Stacks fully backed by USDC.

### Deposits

<div data-with-frame="true"><figure><img src="https://2842511454-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FH74xqoobupBWwBsVMJhK%2Fuploads%2F9p7WDRdrpyVeB4b4pBub%2Fusdc-deposit.png?alt=media&#x26;token=84d6a3d5-3bca-4638-a41f-7460a8905090" alt=""><figcaption></figcaption></figure></div>

For bridging source-chain USDC into the Stacks network.

1. A user deposits USDC from their wallet app into an xReserve smart contract, managed by Circle, on the source chain.
2. The xReserve contract emits a deposit event and locks the funds, holding them in reserve.
3. The xReserve attestation service, managed by Circle, generates and signs a deposit attestation.
4. The Stacks network's attestation service fetches the signed deposit attestation.
5. The Stacks network mints USDC-backed tokens, USDCx, and emits a mint event.
6. The Stacks' USDCx token contract deposits the newly minted USDC-backed tokens into the user’s Stacks wallet.

After completing the deposit process, the user receives an equivalent amount of USDC-backed tokens on Stacks.

### Withdrawals

<div data-with-frame="true"><figure><img src="https://2842511454-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FH74xqoobupBWwBsVMJhK%2Fuploads%2FIinGDengKCB9IIwQggrM%2Fusdc-withdrawal.png?alt=media&#x26;token=51cbc8bc-c3fb-4dcb-9ab4-2b5c40463cb9" alt=""><figcaption></figcaption></figure></div>

For withdrawing USDC from the Stacks network.

1. A user requests to burn USDCx tokens on Stacks and to withdraw USDC on the destination network.
2. The Stacks USDCx token contract burns their USDCx tokens and emits a burn event.
3. The Stacks network's attestation service monitors the burn emitted burn event and then signs a generated burn intent message offchain.
4. The Stacks network's attestation service passes the burn intent message and signature to xReserve, managed by Circle.
5. xReserve verifies the burn and issues a withdrawal attestation.
6. xReserve releases USDC to the user’s wallet on the destination network.

After completing the withdrawal process, the user receives USDC on the destination network.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.stacks.co/learn/bridging/usdcx/operations.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
