Skip to main content
This page describes the end-to-end path funds take when entering and leaving a Portfolio Wallet, and lists every deployed contract address by chain.

Deposit flow

When a user deposits USDC into their Portfolio Wallet, funds move through the following sequence:
  1. The user transfers USDC from an external wallet to the Portfolio Wallet deposit address.
  2. Ground’s servers detect the incoming transfer via on-chain monitoring.
  3. Ground signs and submits a deposit transaction from the Portfolio Wallet.
  4. The Portfolio Wallet calls the MasterRouter contract.
  5. The MasterRouter resolves the correct yield source through the AdapterRegistry.
  6. USDC is deposited into the underlying yield source smart contract (e.g. Morpho vault or Maple pool).
  7. Receipt tokens are held by the Portfolio Wallet; Ground updates the wallet’s on-chain position and reported balances.

Withdrawal flow

Withdrawals reverse the deposit path, unwinding positions back to USDC before sending to the destination:
  1. The API plans the withdrawal by selecting which yield source positions to unwind (each becomes a payout leg).
  2. For each payout leg, Ground signs and submits a redeem transaction from the Portfolio Wallet.
  3. The Portfolio Wallet calls the MasterRouter.
  4. The MasterRouter resolves the correct yield source via the AdapterRegistry.
  5. Receipt tokens are redeemed from the underlying yield source and USDC is returned.
  6. As each payout leg settles, USDC is transferred from the Portfolio Wallet to the user’s destination address immediately. Payout legs do not wait for each other.
Some yield sources (for example syrup-usdc) have asynchronous redemption, while synchronous ERC-4626 sources such as morpho-gauntlet-usdc normally unwind immediately. Because each payout leg may settle at different times, each one requires a separate transaction approval if you have configured one or more signing keys in the developer portal. See Transaction Approvals for details.

Deployed contract addresses

Each supported chain has the core routing infrastructure (MasterRouter, AdapterRegistry, WalletBindingRegistry), a CCTP adapter for bridging, and yield source adapters.

Production (mainnet)

Core contracts

ChainMasterRouterAdapterRegistryWalletBindingRegistry
Ethereum0xD743D5b09eceA67880c4bc326a18A874bafE246E0x6Da1180A84C0E38a0d292f1e51853ce4C75fc1500x36E76eE20168300a1005e3d607499f6f0C62318b
Arbitrum0xD743D5b09eceA67880c4bc326a18A874bafE246E0x6Da1180A84C0E38a0d292f1e51853ce4C75fc1500x9FfaaF612A748681508852591c54AFC84A7a84E8
Base0xD743D5b09eceA67880c4bc326a18A874bafE246E0x6Da1180A84C0E38a0d292f1e51853ce4C75fc1500xc8bC5a9F6F2e5C0a78B1dDC4088A8dCE9B5316c8
Polygon0xD743D5b09eceA67880c4bc326a18A874bafE246E0x6Da1180A84C0E38a0d292f1e51853ce4C75fc1500xc8bC5a9F6F2e5C0a78B1dDC4088A8dCE9B5316c8

Yield source adapters (Ethereum only)

AdapterAddressUnderlying Protocol
Syrup USDC0x746253ea7ecd9c356C4E42A977238779fa1F85BAMaple Finance
Morpho Gauntlet USDC0xb36Ee685D1AdE0af03995E0e9E6D7D050736E4bEMorpho (Vault: 0xdd0f28e19C1780eb6396170735D45153D261490d)
Morpho Steakhouse USDC0xe196b91BfF3F0EC4279e8494Ab9b9727B62FFDEbMorpho (Vault: 0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB)
Morpho August USDC V20x6268d5c875acAB235d411563A4A03163aDa08F90Morpho (Vault: 0x7ceB0f01Cb7187a2EBED5661eCC4d5701d8F2350)

Bridge adapters

ChainCCTP Adapter
Ethereum0x49bD4C78cf3B4dDcF9c3857269BFa08C69f5E044
Arbitrum0x49bD4C78cf3B4dDcF9c3857269BFa08C69f5E044
Base0x49bD4C78cf3B4dDcF9c3857269BFa08C69f5E044
Polygon0x49bD4C78cf3B4dDcF9c3857269BFa08C69f5E044

Sandbox (Ethereum Sepolia)

ContractAddress
MasterRouter0xBB6cD0a42cb96eb7bA9234a0B5738545D53958d3
AdapterRegistry0x4d18Ee079fc36573d62B52B02eB9c6D8F0fc38E2
WalletBindingRegistry0xDd48ddD16B3E6906F8d64dB51c03a39EFE0C3EA4
CCTP Adapter0x826abf3b74c59B6Aec8a0d4aF07fe5fC81A0Fe0F
Syrup USDC Adapter0x9DF3Ef7DbE65eBF07064c912fFC52c2AB169EbbF
RLP Adapter0xA64cf2Fd5c9Fc9b4E39eb88dE07D6015B31054C1
Morpho August USDC V2 Adapter0xFa86eF30a830A27e2d00b4D8eC9cd853690222B7