Cross-Chain Funding
The agent's wallet is rarely on the chain a venue settles on. The funding router makes "deposit USDC anywhere → fund the venue" a first-class operation.
The chain problem
Agent wallet native chains: base, solana, arc (Virtuals) or wherever Privy put it
Venue settlement chains: polymarket → polygon · hyperliquid → arbitrum
tradexyz → arbitrum · pumpfun → solana
virtuals/degenclaw/bankr → base
Funding chains (CAIP-2): Base eip155:8453 · Ethereum eip155:1 · Arbitrum
eip155:42161 · Optimism eip155:10 · Polygon eip155:137 · BNB eip155:56 · Avalanche
· Abstract eip155:2741 · HyperEVM eip155:999 · Monad eip155:143 · Tron tron:20191129
· Solana solana:… · Tempo · ARC.
Three routing rails
- Chain-agnostic deposit address (Privy
useDepositAddress) — generate a unique deposit address; the user sends from any source chain; funds auto-bridge/swap to the destination. The cleanest "fund from anywhere" rail. - Venue-native deposit bridge (e.g. Polymarket's any-chain bridge) — generate deposit addresses; the venue bridges to its settlement chain. OAW initiates no transfer.
- Cross-chain stablecoin transfer — when the agent already holds USDC, route a policy-gated bridge/swap from the agent balance to the venue's native chain.
Two slices: resolve (read) and execute (gated)
resolve — read-only, moves nothing
Given (user, venue, amountUsd) returns the venue's funding target (chain + address from
the execution binding), available agent funding, and the recommended route. Statuses:
ready, funding_required, funding_target_unresolved, funding_route_unsupported,
funding_venue_unsupported, agent_wallet_required.
execute — gated, fail-closed
- Polymarket → generate any-chain deposit addresses (
deposit_addresses_ready); no OAW-initiated transfer. - Cross-chain venues → policy decision (kill-switch / max-transfer / daily-cap /
destination validation) → preview. An actual transfer happens only when
execute+ explicitapproval+ the fail-closedvenueFundingExecuteEnabledflag all hold. Otherwiseready_but_live_locked/requires_approval,executionPerformed: false.
Funding requires pre-bind authority first; if there's none it returns
agent_wallet_required. The address you fund is read from the venue's execution binding —
a single source of truth, so you fund exactly the address the venue trades from.
Next: Execution & safety.