Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.blend.money/llms.txt

Use this file to discover all available pages before exploring further.

Most DeFi protocols put user funds in shared contracts. Blend deploys a real Gnosis Safe for every user and orchestrates yield through modular controllers.

System components

Five services work together to run the protocol.
ComponentRole
ProtocolOn-chain contracts: Safes, controllers, guards, adapters
APIManages sessions, quotes, Safe deployment, and account data
WorkerExecutes background rebalances and health checks
IndexerMonitors on-chain events for state sync
SDKTypeScript libraries for frontend and server integration

Safe accounts

Shared pools vs Blend

Shared poolsBlend SMA
Fund storageEveryone’s money in one contractYour own Gnosis Safe
Hack impactEntire pool drainedOnly the affected Safe
CustodyProtocol holds fundsYou are the sole owner
WithdrawalDepends on pool liquidityDirect Safe access anytime
AutomationArbitrary contract logicWhitelisted module calls only
Cross-user riskOne user’s loss affects allZero cross-user exposure

Safe deployment

Blend uses BlendSafeFactory to deploy Safes with CREATE2 determinism. Your Safe address is derived from your wallet address and a salt nonce. The same inputs produce the same address on every chain. The factory reads the module and guard addresses from its own storage at deployment time rather than encoding them in the initializer bytecode. This means module and guard addresses can differ per chain while your Safe address stays the same everywhere.

Module architecture

Every Safe ships with three components installed during setup.
  • RolesReceiver acts as the authorized module. It extends StrategyManager and processes vault operations on your Safe.
  • RolesGuard validates every transaction. It enforces pause states and blocks unauthorized module calls.
  • Safe4337Module enables ERC-4337 account abstraction for gas-sponsored transactions via paymaster.

Automation model

The StrategyManager (inside RolesReceiver) orchestrates all vault operations. It does not contain strategy logic itself. Instead, it delegates calls to specialized VaultController contracts. The execution chain works like this:
  1. An off-chain worker calls StrategyManager.executeRebalance(safe, vault, rebalanceData)
  2. The StrategyManager validates the vault config and checks the rate limit
  3. It calls safe.execTransactionFromModule() targeting the VaultController
  4. The VaultController runs inside the Safe’s context via delegatecall
The VaultController can only call whitelisted functions on approved protocols. It cannot move funds to arbitrary addresses.

Direct exit

You hold the owner keys to your Safe on every chain. If Blend’s interface went offline, your funds would still be in your Safes.
  1. Go to safe.global or any block explorer
  2. Interact with your Safe contracts directly
  3. Withdraw your funds on each chain
Blend cannot gatekeep your exit because it does not hold your funds.

Cross-chain coordination

Same address everywhere

Your Safe has the same address on every chain where it is deployed. CREATE2 determinism plus runtime module resolution make this possible. You deploy on Base first, and later deploy on Arbitrum with the same address.

Bridge adapters

Blend uses two bridge adapters for cross-chain transfers.
AdapterProtocolTokensLimits
AcrossXChainAdapterAcross V3Any supported tokenNo per-message limits
CCTPXChainAdapterCircle CCTP V2USDC onlyAuto-splits if amount exceeds burnLimitsPerMessage
Bridge selection happens server-side during quote generation. You receive an action plan. You do not interact with bridge contracts directly.

Role updates across chains

Configuration changes propagate cross-chain through LayerZero messaging.
  1. RolesBroadcaster on the source chain sends a role update message
  2. LayerZero delivers the message to the destination chain
  3. RolesReceiver on the destination chain validates the source (trusted broadcaster address + trusted chain ID)
  4. The receiver processes the update (vault config change or executor change)
If the source and destination are the same chain, RolesBroadcaster calls RolesReceiver.processSameChainCall() directly instead of routing through LayerZero.

Deposit routing

When you deposit from a chain without Blend infrastructure, the API routes your funds through a bridge to the destination chain. The destination is the first configured chain with vault infrastructure. Bridge fees appear in the quote before you confirm.

Withdrawal coordination

Withdrawals can pull from multiple source chains. The API scans your balance across all chains, allocates the withdrawal amount (largest balances first), and builds one action plan per source chain. Each plan includes liquidity reset, vault withdrawal, and bridge steps as needed.

Contracts

Explore the 9 contract systems powering the protocol.

Security deep dive

See how every transaction passes through 4 security layers.

Supported chains

See where Blend is deployed and which tokens are supported.

Deployments

Find deployed contract addresses on each chain.
Last modified on May 7, 2026