Reference
Contracts and verification
Every contract Floatless uses on each network, with source verification and how to check the savings vault yourself.
On this page
This page lists the contracts Floatless deployed and the third-party contracts it relies on, on Monad mainnet and Monad testnet. It also covers how the savings vault was deployed, who controls it, and how you can check its configuration yourself.
Mainnet contracts
These run on Monad mainnet, chain ID 143. Source verified means the explorer holds the contract's source code and has matched it to the code deployed at that address. Monadscan shows the savings vault as a similar match, which means its bytecode matches another Morpho Vault V2 whose source Monadscan already holds. The adapter and the registry are full matches there.
| Contract | Address | Source verified |
|---|---|---|
| Floatless Savings AUSD, a Morpho Vault V2 | 0x35277466836C6cdb426F50DDF79db0e043e6bbFe |
Monadscan, MonadVision |
| Morpho Vault V1 adapter for Floatless Savings | 0xCe2b239dD33110f7c662Fe69D394DcA65A7fF1ab |
Monadscan, MonadVision |
Spending-rules registry, FundingMandateRegistry |
0x14077b679274Eb5d8B95c60A5d9E94A68Ea4fDf0 |
Monadscan, MonadVision |
The savings vault and its adapter are Morpho's code, created by Morpho's own factories. Floatless owns the vault and configured both, and Floatless Savings explains what they do for you.
The spending-rules registry is Floatless's own contract, and the app uses it to record your spending rules. It holds no money and has no owner or admin. A wallet can only register or revoke its own rules, and registering needs that wallet's signature.
Third-party contracts on mainnet
| Contract | Address | How Floatless uses it |
|---|---|---|
| AUSD, issued by Agora | 0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a |
The only asset Floatless Savings holds |
| Grove x Steakhouse High Yield AUSD, a Morpho vault | 0x32841A8511D5c2c5b253f45668780B99139e476D |
Where Floatless Savings lends every deposit |
Morpho VaultV2Factory |
0x8B2F922162FBb60A6a072cC784A2E4168fB0bb0c |
Created the savings vault |
Morpho MorphoVaultV1AdapterFactory |
0x9f3c0999425656fD189C69a8aD68cB64986D644A |
Created the adapter |
| Morpho adapter registry | 0x6a42f8b46224baA4DbBBc2F860F4675eeA7bd52B |
The only source of adapters the savings vault can ever add |
| USDC, issued by Circle | 0x754704Bc059F8C67012fEd69BC8A327a5aafb603 |
A stablecoin listed in the mainnet app |
| USDT0 | 0xe7cd86e13AC4309349F30B3435a9d337750fC82D |
A stablecoin listed in the mainnet app |
Testnet contracts
These run on Monad testnet, chain ID 10143.
| Contract | Address | Source verified |
|---|---|---|
Spending-rules registry, FundingMandateRegistry |
0x127af791F0807584CaEAe5eDDfd8012972E9a3Da |
Monadscan, MonadVision |
AdapterRegistry |
0x9704d264DE3EC51401366cD815a193530C105AC8 |
Monadscan, MonadVision |
FundingVault |
0xb179F1661567e494A671E85Af1E7B8CF087E601A |
Monadscan, MonadVision |
KuruAdapter |
0x0bE9633Cb7beacc399C723dC31011DF16dFCfB55 |
Monadscan, MonadVision |
The testnet app records spending rules in this registry, the same way as on mainnet. AdapterRegistry, FundingVault and KuruAdapter are deployed and verified, but the current app and API don't use them. There's no savings vault on testnet, because Morpho isn't deployed there.
SafeLock is deployed on mainnet at 0xFEd7EdE137062CBa02628bBd01A2956D354f3Ca5, source-verified on Monadscan and MonadVision. A Chainlink CRE workflow releases its mature locks. See Proof. The repository also holds MorphoVaultAdapter and FlexDollarVault, which aren't deployed on either network.
Third-party contracts on testnet
| Contract | Address | How Floatless uses it |
|---|---|---|
| aUSDC, Cleanverse's regulated dollar | 0xaC0893567D43C3E7e6e35a72803df05416C1f20D |
The regulated dollar, which only moves between wallets with a Cleanverse identity |
| USDC, Cleanverse sandbox | 0x534b2f3A21130d7a60830c2Df862319e593943A3 |
The USDC that Cleanverse converts 1:1 into aUSDC |
| Cleanverse Access Core | 0x8F118338a1fa41E7Fa86Be19A4e8B99Ed58A6EcC |
Locks deposited USDC and mints the same amount of aUSDC |
| Cleanverse A-Pass | 0xbA82D189540CaC9DC6FF46B6837CaC1BFdEC58B9 |
The identity contract Cleanverse lists for aUSDC |
| AUSD, issued by Agora | 0xa9012a055bd4e0eDfF8Ce09f960291C09D5322dC |
Testnet AUSD. The savings preview uses your balance of it |
| AUSD faucet | 0xd236c18D274E54FAccC3dd9DDA4b27965a73ee6C |
Gives out testnet AUSD |
| Kuru router | 0x7EFbE105Ca7415dE98F96622173458ac1c054630 |
The router that KuruAdapter was deployed to call |
Regulated dollars explains how aUSDC works in Floatless.
How the savings vault was deployed
The vault went live on October 13, 2026 in three transactions, all sent from the owner key.
| Step | Transaction |
|---|---|
Create the vault with Morpho's VaultV2Factory |
0x51af1ce1…3cf499 |
Create the adapter with Morpho's MorphoVaultV1AdapterFactory |
0x03982239…a1913f |
| Apply the whole configuration | 0x8b7dfc71…5db830 |
The configuration ran as one all-or-nothing transaction, so it either applied in full or not at all. It set up the following.
- The name Floatless Savings AUSD and the share symbol fsAUSD
- The owner as sentinel, and both the owner and the operations key as allocators
- Morpho's adapter registry as the only source of adapters, with the power to change that given up for good
- The one adapter, with a 100,000 AUSD cap
- The 10% performance fee, paid to the owner, and the 0.01% fee for forcing funds out of Morpho
- The adapter as the path for deposits and withdrawals
- A 3-day timelock on all 17 timelocked functions
- Finally, the separate curator key as curator
Who can change the savings vault
| Role | Address | What it can do |
|---|---|---|
| Owner, also sentinel, backup allocator and fee recipient | 0x024Db1faC265D471C2a5eca95AD00C19e3394A07 |
Replace the curator, cancel any pending change, lower caps, and undo a bad allocator move right away |
| Curator | 0x7830200a9D5a4BB821B1C2327B8953f991E8F9C9 |
Propose higher caps or changes to adapters, fees, gates or allocators, each of which waits 3 days |
| Allocator, the operations key | 0xE1E55cB254feB8CBEA730AAe987777f12d8C5B25 |
Move funds between the vault and its one adapter, and set the liquidity path and maximum rate |
A sentinel is a Morpho Vault V2 role that can cancel pending changes and lower caps. Every one of the vault's 17 timelocked functions waits 3 days, so adding or removing an adapter, raising a cap, or changing fees, gates or allocators is visible onchain for three days before it can take effect. Savers can leave first, and the owner can cancel the change during that window. Allocator moves and cap cuts aren't timelocked and take effect right away. The three keys are separate, held by the Floatless team, and not yet a multisig.
Check the savings vault yourself
You need Foundry and a copy of the Floatless repository. Run these commands from the repository root. Both only read from Monad mainnet, and neither sends a transaction.
Read the live configuration
FLOATLESS_OWNER=0x024Db1faC265D471C2a5eca95AD00C19e3394A07 \
FLOATLESS_CURATOR=0x7830200a9D5a4BB821B1C2327B8953f991E8F9C9 \
FLOATLESS_ALLOCATOR=0xE1E55cB254feB8CBEA730AAe987777f12d8C5B25 \
FLOATLESS_FEE_RECIPIENT=0x024Db1faC265D471C2a5eca95AD00C19e3394A07 \
forge script contracts/script/DeployFloatlessSavings.s.sol:DeployFloatlessSavings \
--sig "verifyDeployed(address,address)" \
0x35277466836C6cdb426F50DDF79db0e043e6bbFe 0xCe2b239dD33110f7c662Fe69D394DcA65A7fF1ab \
--rpc-url https://rpc.monad.xyz
verifyDeployed reads the live vault and adapter and checks that:
- both came from Morpho's factories, and the vault's asset is AUSD
- the owner, curator, sentinel and allocators are the addresses above
- the vault has exactly one adapter, and it points at the Grove x Steakhouse vault
- the adapter registry is Morpho's, and that setting is locked
- the cap is 100,000 AUSD, the performance fee is 10% to the owner, there's no management fee, and the fee for forcing funds out of Morpho is 0.01%
- no gates are set, every timelocked function waits 3 days, and no setup change is still pending
If anything differs, the script stops with a Misconfigured error that names the first setting that doesn't match.
Run the fork tests
MONAD_MAINNET_RPC_URL=https://rpc.monad.xyz forge test --match-contract FloatlessSavingsFork -vv
This runs contracts/test/FloatlessSavingsFork.t.sol against a copy of Monad mainnet at a fixed block, using the live Morpho contracts. Each test deploys a fresh vault with the same script that deployed the real one, then exercises or attacks it. The suite has 12 attack and configuration tests, 4 fuzz tests and 5 invariants. Without MONAD_MAINNET_RPC_URL, the tests skip.