# Contracts We Deploy

Adoption of the Bridged USDC Standard requires:

1. Successful deployment and configuration of Circle's Smart Contracts.
2. Cross-chain messaging infrastructure to connect your chain with a Native USDC blockchain.
3. Proper implementation and accounting of all 1:1 backed USDC in a "Bridge Manger" / Escrow contract.

VIA handles this entire process for you. From start to finish. At the end, you (the blockchain foundation) will receive a full report  of all deployed smart contracts with their proper addresses. Additionally, control of the contracts is given directly to you (the blockchain foundation) as if you deployed the contracts yourself.&#x20;

See below for the contracts that we deploy:

**HOST / ROOT CHAIN**

`BridgeManagerV1` This contract handles the messaging between chains through the VIA Network.

`BridgeManagerV1 ERC1967Proxy` Points to the BridgeManagerV1 contract. (OpenZeppelin). Use this contract to call any functions in `BridgeManagerV1`.

**LEAF CHAIN**

`FiatTokenV2_2_Proxy` This contract comes from Circle. Untouched. [Link to contract](https://github.com/circlefin/stablecoin-evm/blob/master/contracts/v1/FiatTokenProxy.sol).

`FiatTokenV2_2_Implementation` This contract comes from Circle. Untouched. [Link to contract](https://github.com/circlefin/stablecoin-evm/blob/master/contracts/v2/FiatTokenV2_2.sol).

`SignatureChecker` This contract comes from Circle. Untouched. [Link to contract](https://github.com/circlefin/stablecoin-evm/blob/master/contracts/util/SignatureChecker.sol).

`BridgeManagerV1` This contract handles the 1 to 1 cross-chain transfers between your blockchain and the Bridged USDC Standard "source chain" you selected to be paired to.

`BridgeManagerV1 ERC1967Proxy` Points to the `BridgeManagerV1` contract. (OpenZeppelin). Use this contract to call any functions in `BridgeManagerV1`.

`ProtoCCTPGateway` This contract handles the cross-chain transfers between your blockchain and *all* Proto-CCTP-enabled chains.


---

# 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.vialabs.io/supported-protocols/bridged-usdc-standard-onboarding/contracts-we-deploy.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.
