Every Solid savings deposit sits in a smart contract you can inspect yourself. This page lists the production contracts behind Solid savings, the Safe multisigs that own them, and the operational addresses that interact with them.
Solid is non-custodial. When you deposit, you receive a share token (soUSD, soETH or soFUSE) that is held in your own wallet. Solid cannot move that token on your behalf.
Ownership and control
Every contract listed below is owned by a Safe multisig, one per chain. Changes to contract ownership or permissions require approval through these Safes.
Chain | Safe |
Fuse | |
Ethereum | |
Base |
Permissions are enforced on-chain, not by policy. Each contract in the system can only call the specific functions it has been granted, and that mapping is held in the RolesAuthority contracts listed with each asset below. Batch withdrawal processing requires multisig approval. Emergency pause controls exist so activity can be halted if an issue is detected.
soUSD
The contracts behind USD savings.
Chain | Contract | Address | What it does |
Fuse | soUSD Vault | Holds vault assets | |
Fuse | Accountant | Tracks the share exchange rate | |
Fuse | LayerZero Teller | Processes deposits and withdrawals | |
Fuse | ManagerWithVerification | Restricts which strategy calls the vault will accept | |
Fuse | RolesAuthority | Holds the on-chain permission map | |
Ethereum | soUSD Vault | Holds vault assets | |
Ethereum | Accountant | Tracks the share exchange rate | |
Ethereum | LayerZero Teller | Processes deposits and withdrawals | |
Ethereum | BoringQueue | Queues withdrawal requests | |
Ethereum | BoringSolver | Fulfils queued withdrawals | |
Ethereum | ManagerWithMerklVerification | Restricts which strategy calls the vault will accept | |
Ethereum | RolesAuthority | Holds the on-chain permission map | |
Base | soUSD Vault | Holds vault assets | |
Base | ManagerWithVerification | Restricts which strategy calls the vault will accept | |
Base | RolesAuthority | Holds the on-chain permission map |
soETH
The contracts behind ETH savings.
Chain | Contract | Address | What it does |
Fuse | soETH Vault | Holds vault assets | |
Fuse | Accountant | Tracks the share exchange rate | |
Fuse | LayerZero Teller | Processes deposits and withdrawals | |
Fuse | ManagerWithVerification | Restricts which strategy calls the vault will accept | |
Fuse | RolesAuthority | Holds the on-chain permission map | |
Ethereum | soETH Vault | Holds vault assets | |
Ethereum | Accountant | Tracks the share exchange rate | |
Ethereum | LayerZero Teller | Processes deposits and withdrawals | |
Ethereum | BoringOnChainQueue | Queues withdrawal requests | |
Ethereum | BoringSolver | Fulfils queued withdrawals | |
Ethereum | ManagerWithMerklVerification | Restricts which strategy calls the vault will accept | |
Ethereum | RolesAuthority | Holds the on-chain permission map |
soFUSE
The contracts behind FUSE savings.
Chain | Contract | Address | What it does |
Fuse | soFUSE Vault | Holds vault assets | |
Fuse | Accountant | Tracks the share exchange rate | |
Fuse | LayerZero Teller | Processes deposits and withdrawals | |
Fuse | BoringQueue | Queues withdrawal requests | |
Fuse | BoringSolver | Fulfils queued withdrawals | |
Fuse | ManagerWithVerification | Restricts which strategy calls the vault will accept | |
Fuse | RolesAuthority | Holds the on-chain permission map |
Operational addresses
These addresses interact with the vaults within the limits set by the RolesAuthority contracts above.
Contract | Address | Chain | What it does |
Vault manager | Ethereum | Deploys vault assets into approved strategies | |
Strategist | Ethereum | Executes strategy actions within the permitted scope | |
Solid decoder and sanitiser | Ethereum | Validates the shape of Solid-specific calls before they reach the vault | |
BridgePaymaster | Fuse | Covers gas so cross-chain transfers complete | |
BridgePaymaster | Ethereum | Covers gas so cross-chain transfers complete |
