Blend’s current public cross-chain architecture is split into two layers:
- account-scoped APIs for discovery, reads, and deposit quotes
- server-built withdrawal execution payloads for Safe-side fund exits
Architectural split
Why the split exists
Deposit routing needs account context so Blend can determine the destination Safe and account-type configuration before generating a quote.
Withdrawal execution needs the Safe-side position context, but the public SDK no longer builds action plans in the client. Instead, the server returns ordered calldata payloads that the integrator submits through its own relay or transaction orchestration layer.
Public interfaces
Account-scoped APIs
Use these namespaces for:
- account creation and lookup
- balance, position, return, and yield reads
- chain and token discovery (including EOA wallet holdings)
- deposit quote generation
Primary namespaces:
client.safe
client.balance
client.positions
client.returns
client.yield
client.deposit
Withdrawal execution
Use client.withdraw.getCalldata() when the user wants to exit funds from Blend.
Each payload contains a steps array with ordered steps. Each step has a kind discriminator:
liquidityReset - flush vault positions (submit as delegatecall)
approve / withdraw / approveReset - vault exit transactions
bridge - relay bridge when funds must move cross-chain
Key design details
client.deposit.getQuote() depends on accountId, not just the EOA address. That requirement scopes the quote to a specific Blend account and account type.
client.withdraw.getCalldata() depends on accountId and destination chain. The server resolves the Safe, chooses source chains, and returns execution payloads.
When isMaxWithdraw is true, the final withdrawn amount is not known before settlement, so bridge payloads may be omitted and fetched post-settlement by the integrator.
How Cross-Chain Routing Works
Blend deploys a Safe for each user on each chain where they have positions. When a user deposits, the server picks the optimal route based on cost, speed, and liquidity.
- Deposits route through bridge protocols. The server computes the best path and returns a quote payload for your relay layer to execute.
- Withdrawals can pull from multiple chains. The server figures out which chains to unwind from and returns ordered calldata.
- Rebalances may move capital between chains when the Risk Architect’s Basket targets positions on multiple networks.
See AcrossXChainAdapter in the contracts page for the on-chain component that handles cross-chain transfers.
Bridge Selection
Blend uses Across V3 for cross-chain transfers. Bridge selection happens server-side. Integrators receive opaque quote payloads and don’t need to interact with bridge contracts directly.
Bridge fees are shown to users before they confirm. The fee depends on the route, token, and current bridge liquidity.
Failure Isolation
If a bridge goes down, deposit routes through that path fail gracefully. Money stays in the user’s wallet.
Existing positions on any chain remain accessible directly through the user’s Safe. No funds are ever locked behind a bridge. Users maintain full control on every chain where they have positions.
Because each user has their own Safe on each chain, there’s no pooled liquidity that could create a bank-run scenario. Your assets on Chain A are yours regardless of what happens to the bridge connecting Chain A to Chain B.
See Scenario 4: Cross-Chain Bridge Failure for the full threat model. Last modified on March 20, 2026