Skip to content

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.

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.