Skip to main content
COMING SOON When a user signs up for one of your products, Blend deploys a personal Gnosis Safe for them. Each Safe is deterministically derived and completely isolated from other users.

Dynamic Safe Resolution

Safe addresses are computed deterministically from three inputs:
saltNonce = keccak256(BLEND_SALT_NONCE + neobankId + accountTypeId)
safeAddress = CREATE2(userAddress, saltNonce)
InputSourceExample
neobankIdYour neobank identifier"brookwell"
accountTypeIdThe Account Type slug"savings"
userAddressEnd user’s wallet address0xABC...
This produces a unique, predictable Safe address for every combination.

Multi-account support

Because the salt nonce includes the Account Type ID, the same user can have multiple Safes within your platform:
User: 0xABC...
Neobank: "brookwell"

Account Type: "savings"  → Safe 0x111... (conservative strategy)
Account Type: "growth"   → Safe 0x222... (aggressive strategy)
Account Type: "btc-yield" → Safe 0x333... (Bitcoin yield strategy)
Each Safe is fully isolated with its own strategy, balance, and risk exposure.

Cross-chain consistency

The salt nonce does not include chain ID, which means a user’s Safe address is the same on every supported chain. This simplifies cross-chain operations: you can reference the same address regardless of which chain the user is interacting with.

Deploying User Accounts

When a user creates an account:
1

Resolve the Safe address

Use the API to compute the deterministic Safe address for this user + Account Type combination.
const safe = await client.safe.resolveSafeAddress(
  userAddress,
  chainId // e.g., 8453 for Base
);
2

Deploy the Safe

If the Safe has not been deployed yet, trigger deployment. Blend handles the on-chain transaction.
Your neobank pays a per-account deployment fee that covers gas costs and Safe setup. See Integration Fees for details.
3

Record the account

An Account record is created in Blend’s database linking the user, Safe address, Account Type, and chain.
The user’s Safe is now live and ready to receive deposits.

Account Lifecycle

StateDescription
ResolvedSafe address computed but not yet deployed on-chain
DeployedSafe contract deployed. Ready for deposits.
ActiveHas a non-zero balance and is actively earning yield
InactiveZero balance. Safe still exists on-chain but no active positions

Security Model

  • Non-custodial: The user is the sole signer of their Safe. Neither you nor Blend can access their funds.
  • Isolated: Each Safe is independent. One user’s Safe cannot be affected by another user’s activity.
  • Transparent: Users can view and interact with their Safe directly on safe.global at any time.
End users do not need admin portal access. They interact exclusively through your consumer app. The admin portal is for your team to manage Account Types and monitor accounts.

Next Steps

Last modified on February 6, 2026