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. The Portfolio Wallet calls the MasterRouter contract.
  3. The MasterRouter resolves the correct yield source through the AdapterRegistry.
  4. USDC is deposited into the underlying yield source smart contract (e.g. Morpho vault, Maple pool, Resolv RLP).
  5. Receipt tokens are held by the Portfolio Wallet.

Withdrawal flow

Withdrawals reverse the deposit path, unwinding positions back to USDC before sending to the destination:
  1. Each yield source position to unwind becomes a payout leg.
  2. For each payout leg, the Portfolio Wallet calls the MasterRouter.
  3. The MasterRouter resolves the correct yield source via the AdapterRegistry.
  4. Receipt tokens are redeemed from the underlying yield source and USDC is returned.
  5. 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 (e.g. Resolv RLP) have asynchronous redemption, so certain payout legs take longer than others. 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
Resolv LP0x6b93E3c05057533106D274Fd66e04cAF4209DD3fResolv Protocol
Morpho Gauntlet USDC0xb36Ee685D1AdE0af03995E0e9E6D7D050736E4bEMorpho (Vault: 0xdd0f28e19C1780eb6396170735D45153D261490d)
Morpho Steakhouse USDC0xe196b91BfF3F0EC4279e8494Ab9b9727B62FFDEbMorpho (Vault: 0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB)

Bridge adapters

ChainCCTP Adapter
Ethereum0x49bD4C78cf3B4dDcF9c3857269BFa08C69f5E044
Arbitrum0x49bD4C78cf3B4dDcF9c3857269BFa08C69f5E044
Base0x49bD4C78cf3B4dDcF9c3857269BFa08C69f5E044
Polygon0x49bD4C78cf3B4dDcF9c3857269BFa08C69f5E044

Sandbox (Ethereum Sepolia)

ContractAddress
MasterRouter0xBB6cD0a42cb96eb7bA9234a0B5738545D53958d3
AdapterRegistry0x4d18Ee079fc36573d62B52B02eB9c6D8F0fc38E2
WalletBindingRegistry0xDd48ddD16B3E6906F8d64dB51c03a39EFE0C3EA4
CCTP Adapter0x826abf3b74c59B6Aec8a0d4aF07fe5fC81A0Fe0F
Syrup USDC Adapter0x9DF3Ef7DbE65eBF07064c912fFC52c2AB169EbbF
RLP Adapter0xA64cf2Fd5c9Fc9b4E39eb88dE07D6015B31054C1