# Build With Proto-USD

## ProtoGateway

Use the `ProtoGateway` contracts on all chains. The contracts are identical on all deployed chains.&#x20;

```solidity
send(uint _destChainId, address _recipient, uint _USDCamount);

send(uint _destChainId, address _recipient, uint _USDCamount, bytes memory _userData);
```

The `send()` function initiates a transfer of USDC or Bridged USDC to a recipient on a destination chain.

* `_destChainId` = The chain ID of the destination blockchain
* `_recipient` = The wallet address of the recipient on the destination blockchain
* `_USDCamount` = The amount of USDC or Bridged USDC to be transferred (6 decimal)
* `_userData_` = OPTIONAL. Additional data to be sent along with the transfer.

##

## How To Use

1. Use the official Circle USDC  - On testnets, obtain from the official testnet [faucet](https://faucet.circle.com/).&#x20;
2. Approve the desired amount of USDC to the `ProtoGateway` contract.
3. Call `send(_destChainId, _recipient, _amount)`

For a list of Proto connected blockchains and associated contract addresses, please see the [next section](/supported-protocols/proto-usd/proto-gateway-addresses.md).


---

# 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/proto-usd/build-with-proto-usd.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.
