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 a supported stablecoin into their Portfolio Wallet, funds move through the following sequence. USDC and USDT follow separate strategy lanes.
  1. The user transfers USDC or USDT from an external wallet to the Portfolio Wallet deposit address on a supported chain.
  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. The stablecoin is deposited into a compatible underlying yield source whose depositToken matches the strategy lane.
  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 the requested stablecoin 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 the source’s deposit token is returned.
  6. As each payout leg settles, the requested stablecoin is transferred from the Portfolio Wallet to the user’s destination address immediately. Payout legs do not wait for each other.
Ground does not convert between USDC and USDT during deposits, rebalances, or withdrawals. USDC may bridge within its supported CCTP domain; USDT remains on Ethereum in production.
Some yield sources, including syrup-usdc and JTRSY, have asynchronous redemption. JTRSY USDC redemptions are instant through Basin when liquidity is available. Because payout legs may settle at different times, each requires separate approval when signing keys are configured 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

Yield source adapters (Ethereum only)

Bridge adapters

Sandbox (Ethereum Sepolia)