Proof
Don't take our word. Open the transactions.
Everything below ran for real on Mezo testnet, or against a copy of Mezo mainnet with its real vault and balances.
Savers got their money back, with interest.
Two fresh wallets each put 60 MUSD into the savings vault, which lent it through Keel. Three borrowers took loans, one against a veBTC lock, then repaid. Each saver took out 60.0000015 MUSD.
See the 29 transactions
| Saver 1 approves the vault | 0xb0c77ebf… |
| Saver 1 deposits 60 MUSD (allocated into Keel) | 0x1947e5f9… |
| Saver 2 approves the vault | 0x87648453… |
| Saver 2 deposits 60 MUSD (allocated into Keel) | 0x358b91ac… |
| Borrower 1 approves 0.0012 BTC | 0xeaebd7b4… |
| Borrower 1 locks 0.0012 BTC, borrows 30 MUSD | 0xb6c391c4… |
| Borrower 2 approves 0.001 BTC | 0xd0899d4f… |
| Borrower 2 locks 0.001 BTC, borrows 25 MUSD | 0x9d451009… |
| Borrower 3 approves BTC for a veBTC lock | 0x3465c39f… |
| Borrower 3 locks 0.0012 BTC as veBTC for 21 days | 0x5102d84d… |
| Borrower 3 approves veBTC #407 to Keel | 0x1521a17a… |
| Borrower 3 deposits veBTC #407, borrows 20 MUSD | 0xed4e410f… |
| Send borrower1 the interest owed | 0x399d61a0… |
| Borrower 1 approves the repayment | 0x27788efb… |
| Borrower 1 repays loan #6 (interest first, to savers) | 0x647c88a4… |
| Borrower 1 closes loan #6, collateral returned | 0xe060cbc1… |
| Send borrower2 the interest owed | 0xee99c264… |
| Borrower 2 approves the repayment | 0x71ccf2ad… |
| Borrower 2 repays loan #7 (interest first, to savers) | 0x9f8e58a1… |
| Borrower 2 closes loan #7, collateral returned | 0x6040f251… |
| Send borrower3 the interest owed | 0x17ed2440… |
| Borrower 3 approves the repayment | 0x09ea8fc9… |
| Borrower 3 repays loan #8 (interest first, to savers) | 0xaa4057f5… |
| Borrower 3 closes loan #8, collateral returned | 0x6df8b280… |
| Vault pulls released interest from Keel | 0x9538ab71… |
| Saver 1 claims their yield | 0xa0872a09… |
| Saver 1 withdraws their 60 MUSD | 0x4e75f674… |
| Saver 2 claims their yield | 0xbef8be68… |
| Saver 2 withdraws their 60 MUSD | 0xda22fa9f… |
When a loan went bad, the keeper cleared it.
We pushed a loan past its limit. On its daily run the keeper repaid the debt from its own MUSD, took the collateral at a small discount, and savers lost nothing.
See the 6 transactions
| BTC loan #1: 0.001 BTC, borrow 20 MUSD | 0xf293d362… |
| Loan #1 borrows 21 more, to 49% of its collateral | 0x4ba85686… |
| The vault owner proposes a tighter BTC setting (liquidate at 45%) | 0xc477a8b3… |
| Applied after the 600 s delay: loan #1 health 0.93, open to liquidation | 0xfac142ed… |
| The keeper liquidates loan #1 from its own MUSD float, on its daily run | 0xc190a65d… |
| The vault owner puts the BTC setting back to 50% / 65% after the delay | 0xb50d29ff… |
It plugs into Mezo's real vault.
On a copy of Mezo mainnet, one setStrategy call from the vault's owner moves the idle savings into Keel, borrower interest reaches savers, and withdrawals stay open. Every number the contracts produce was also checked against a separate calculation: all 235 match.
See the 5 mainnet copy tests
One governance call moves the idle savingssMUSD owner (Mezo multisig): 0x98D8899c3030741925BE630C710A98B57F397C7a MUSD moved out of IdleStrategy: 7382416 lendable at 20% cap: 1476483 |
Borrower interest reaches saverssaver deposits 10,000 MUSD → withdraws 10,060.87 after a borrower repays 1M + 50k interest |
Withdrawals stay open at max lendingcap fully lent (1,476,483) → saver withdraws 1M → 5,905,933 still liquid |
Keel reads mainnet veBTCBTC locked in #6114 (an Enclave lock): 500 |
Peg oracle reads MUSD on mainnet24h average of the mUSDC/MUSD wall: $0.991043 · basic pool: $0.989539 |