# 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](https://docs.vialabs.io/supported-protocols/proto-usd/proto-gateway-addresses).
