Levee

Testnet

Every run, every figure

Repay from collateral: 7 landed and 1 stopped itself, 8 Nov 2026, median 7.9 s from detection to inclusion. Repay from a reserve: 13 landed and 1 stopped itself, 7 Nov 2026, median 8.4 s from detection to inclusion. One test position on Base Sepolia. Nothing here has run on a mainnet. Failed and aborted runs stay on this page.

Timetable of 22 testnet runs

Repay from collateral: 7 landed and 1 stopped itself, 8 Nov 2026, median 7.9 s from detection to inclusion. Repay from a reserve: 13 landed and 1 stopped itself, 7 Nov 2026, median 8.4 s from detection to inclusion. One test position on Base Sepolia. Nothing here has run on a mainnet.

Every landed run, stop by stop

Each line is one run. Steeper means faster. The blue line is the run the home page replays.

Departures UTC, 7 and 8 Nov 2026

Repay from collateralv0.2 · 8 Nov 2026

  1. 12:00:197.5 sLandedNEARBase
  2. 10:39:376.7 sLanded· replayedNEARBaseLanded after both contract accounts lost their last key.
  3. 10:19:558.7 sLandedNEARBase
  4. 10:19:26noneStopped itselfThe pool asked 0.36% more WETH than the borrower’s price bound allows, so the keeper refused before asking NEAR, and nothing was sent.
  5. 10:16:598.2 sLandedNEARBase
  6. 10:15:569.2 sLandedNEARBase
  7. 10:14:437.6 sLandedNEARBase
  8. 10:13:297.9 sLandedNEARBase

Repay from a reservev0.1 · 7 Nov 2026

  1. 19:27:577.9 sLandedNEARBase
  2. 19:27:388.4 sLandedNEARBase
  3. 19:27:188.6 sLandedNEARBase
  4. 19:26:598.6 sLandedNEARBase
  5. 19:26:398.8 sLandedNEARBase
  6. 19:26:34noneStopped itselfTwo RPCs disagreed on the reserve balance by more than 0.5%, so the keeper did nothing.
  7. 19:26:167.5 sLandedNEARBase
  8. 19:25:559.6 sLandedNEARBase
  9. 19:25:377.3 sLandedNEARBase
  10. 19:25:1610.2 sLandedNEARBase
  11. 19:24:527.6 sLandedNEARBase
  12. 19:24:338.5 sLandedNEARBase
  13. 19:24:148.2 sLandedNEARBase
  14. 19:23:358.2 sLandedNEARBase

Signing on its own

15 of 15 signed on NEAR testnet, median 6.6 s, slowest 7.1 s. Signature only. Nothing was broadcast. Time from the keeper sending rescue to holding a verified signature.

Contracts and keys

Everything here is on testnet. Nothing is deployed on any mainnet. The last full-access key on each Levee contract account was deleted.

AccountVersionLast full-access key, deletedNEAR transactionBlock
levee-core-1503.testnetv0.1ed25519:AgX6NqakXdaJD4PzFABsTLxnKmEEisozd617LNVi8Ead3u8yYEBB9eVJbRGjE27xiHru1aAA4W7Mh4C2rrsZ86fu276,764,277
levee-core-v2-1503.testnetv0.2ed25519:GRz6zN114TpPrRB5Go6zANhjC2csyW7kuLwUsWJV2ZdEC5aHVAahMMa3BjqddSDSf7AK8VCkuFiuqizGj7vbzJJA276,764,289

Neither account has an access key left, so nobody can change either contract’s code or sign as the contract account. The rescue at 10:39:37 UTC on 8 Nov 2026 landed after both deletions, its NEAR call at block 276,764,677: NEAR, Base Sepolia. The claims ledger records it as contracts-keyless-rescue-after, and make verify reads both key lists from NEAR and fails if any key is there.

Levee’s own

ContractNetworkAddressSource
Levee v0.2, repays from collateral or from a reserveNEAR testnetlevee-core-v2-1503.testnetcontracts/levee
LeveeUnwind, sells collateral to repay. No owner, no upgradeBase Sepolia0x308a7b2872F6006522280026a750fCD1c5Bd63D2evm/src/LeveeUnwind.sol, verified on Sourcify
Levee v0.1, reserve mode onlyNEAR testnetlevee-core-1503.testnetcontracts/levee, before collateral mode was added

Accounts Levee acts through

AccountNetworkAddress
Keeper. One key limited to rescue_from_collateral on v0.2, one limited to rescue on v0.1NEAR testnetlevee-keeper-1503.testnet
Rescuer for v0.2 position 1, derived from the contract by Chain SignaturesBase Sepolia0x95ad19E5382ebEfF2C190ed1711515263efDc462
Rescuer for v0.1 position 1Base Sepolia0xEA3ce7f3AeC39CE95D0fA32F867BA65EFF3b8971

Third-party contracts it calls

ContractNetworkAddress
Chain Signatures MPC signerNEAR testnetv1.signer-prod.testnet
Aave v3 PoolBase Sepolia0x8bAB6d1b75f19e9eD9fCe8b9BD338844fF79aE27
Aave v3 PoolAddressesProviderBase Sepolia0xE4C23309117Aa30342BFaae6c95c6478e0A4Ad00
USDC, Aave's test tokenBase Sepolia0xba50Cd2A20f6DA35D788639E581bca8d0B5d4D5f
WETHBase Sepolia0x4200000000000000000000000000000000000006
Uniswap v3 FactoryBase Sepolia0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24
Uniswap v3 QuoterV2Base Sepolia0xC5290058841028F1614F3A6F0F5816cAd0df5E27
Uniswap v3 WETH/USDC 0.30% pool. The team added its liquidity at Aave's oracle price, so its prices are no market measureBase Sepolia0x92266210FacF124f190fbad79AA230dfB85926Ce

Each hop

Medians, and p95 by nearest rank, over the runs that landed in each mode. With this few runs the p95 is the slowest run. A run that stopped itself finished no hop, so it is in the list below and out of these times.

HopFrom collateral, 7 runsFrom a reserve, 13 runs
Medianp95Medianp95
Detection to the rescue call on NEARKeeper and NEAR1.6 s1.9 s1.7 s3.5 s
Rescue call to signatureMPC network5.2 s6.7 s5.3 s6.9 s
Signature to sentKeeperunder 0.1 sunder 0.1 sunder 0.1 sunder 0.1 s
Sent to includedLending chain0.5 s1.6 s1.5 s1.5 s
Detection to inclusionAll of it7.9 s9.2 s8.4 s10.2 s

Every run

Each row is a file in evidence/runs, read when this site was built. Times are from detection. Failed and aborted runs stay on the list. The team added the liquidity in the testnet pool at Aave’s oracle price, so testnet sale prices are no measure of slippage. Slippage is measured in the backtest, from historical Uniswap quotes.

Run, UTCModeOutcomeRepaidSold, and the keeper’s capPrice against the oracle, seeded poolHealth factorOn NEARSignedSentIncludedTransactions
12:00:192026-11-08T12-00-18Z-base-sepolia-1Collateralv0.2Landed5.88 USDC0.002640 WETHcap 0.002653 WETH45 bps under1.4800 to 1.80371.53 s6.99 s7.01 s7.54 sNearBlocksBasescan Sepolia, block 56,086,791
10:39:372026-11-08T10-39-36Z-base-sepolia-1Collateralv0.2LandedReplayed on the home pageLanded after both contract accounts lost their last key7.31 USDC0.003288 WETHcap 0.003304 WETH50 bps under1.4800 to 1.80351.28 s6.20 s6.22 s6.67 sNearBlocksBasescan Sepolia, block 56,062,575
10:19:552026-11-08T10-19-54Z-base-sepolia-1Collateralv0.2Landed9.10 USDC0.004089 WETHcap 0.004109 WETH41 bps under1.4800 to 1.80391.54 s8.25 s8.27 s8.74 sNearBlocksBasescan Sepolia, block 56,056,678
10:19:262026-11-08T10-19-24Z-base-sepolia-1Collateralv0.2Stopped itselfThe pool asked 0.36% more WETH than the borrower’s price bound allows, so the keeper refused before asking NEAR, and nothing was sent.quote_over_slippage_bound: the pool asks 4127649486070153 for 9098767 USDC units, the helper allows 4112809988981552nonesized at 9.10 USDCnonenone1.4800nothing landednonenonenonenonenone
10:16:592026-11-08T10-16-58Z-base-sepolia-1Collateralv0.2Landed11.33 USDC0.005091 WETHcap 0.005117 WETH44 bps under1.4800 to 1.80371.75 s6.52 s6.52 s8.15 sNearBlocksBasescan Sepolia, block 56,055,789
10:15:562026-11-08T10-15-55Z-base-sepolia-1Collateralv0.2Landed14.10 USDC0.006340 WETHcap 0.006372 WETH48 bps under1.4800 to 1.80361.71 s7.63 s7.65 s9.23 sNearBlocksBasescan Sepolia, block 56,055,480
10:14:432026-11-08T10-14-42Z-base-sepolia-1Collateralv0.2Landed17.56 USDC0.007918 WETHcap 0.007955 WETH74 bps under1.4800 to 1.80241.89 s7.14 s7.17 s7.64 sNearBlocksBasescan Sepolia, block 56,055,111
10:13:292026-11-08T10-13-28Z-base-sepolia-1Collateralv0.2Landed21.87 USDC0.009845 WETHcap 0.009894 WETH59 bps under1.4800 to 1.80311.57 s6.21 s6.23 s7.88 sNearBlocksBasescan Sepolia, block 56,054,737
19:27:572026-11-07T19-27-57Z-base-sepolia-1Reservev0.1Landed7.85 USDCnonenone1.0609 to 1.50001.51 s6.38 s6.38 s7.91 sNearBlocksBasescan Sepolia, block 55,789,078
19:27:382026-11-07T19-27-38Z-base-sepolia-1Reservev0.1Landed7.85 USDCnonenone1.0609 to 1.50001.57 s6.89 s6.89 s8.40 sNearBlocksBasescan Sepolia, block 55,788,984
19:27:182026-11-07T19-27-18Z-base-sepolia-1Reservev0.1Landed7.85 USDCnonenone1.0609 to 1.50001.74 s7.13 s7.13 s8.65 sNearBlocksBasescan Sepolia, block 55,788,888
19:26:592026-11-07T19-26-59Z-base-sepolia-1Reservev0.1Landed7.85 USDCnonenone1.0609 to 1.50001.55 s7.06 s7.07 s8.61 sNearBlocksBasescan Sepolia, block 55,788,791
19:26:392026-11-07T19-26-39Z-base-sepolia-1Reservev0.1Landed7.85 USDCnonenone1.0609 to 1.50003.53 s8.48 s8.48 s8.84 sNearBlocksBasescan Sepolia, block 55,788,699
19:26:342026-11-07T19-26-34Z-base-sepolia-1Reservev0.1Stopped itselfTwo RPCs disagreed on the reserve balance by more than 0.5%, so the keeper did nothing.quorum_disagreement: rescuerUsdc differs by more than 50 bps: https://sepolia.base.org=24135306 https://base-sepolia-rpc.publicnode.com=16285306nonenonenonenot readnonenonenonenonenone
19:26:162026-11-07T19-26-15Z-base-sepolia-1Reservev0.1Landed7.85 USDCnonenone1.0609 to 1.50001.63 s7.16 s7.16 s7.51 sNearBlocksBasescan Sepolia, block 55,788,574
19:25:552026-11-07T19-25-55Z-base-sepolia-1Reservev0.1Landed7.85 USDCnonenone1.0609 to 1.50002.90 s8.05 s8.05 s9.58 sNearBlocksBasescan Sepolia, block 55,788,477
19:25:372026-11-07T19-25-37Z-base-sepolia-1Reservev0.1Landed7.85 USDCnonenone1.0609 to 1.50001.45 s6.98 s6.98 s7.34 sNearBlocksBasescan Sepolia, block 55,788,380
19:25:162026-11-07T19-25-16Z-base-sepolia-1Reservev0.1Landed7.85 USDCnonenone1.0609 to 1.50001.78 s8.65 s8.65 s10.19 sNearBlocksBasescan Sepolia, block 55,788,284
19:24:522026-11-07T19-24-52Z-base-sepolia-1Reservev0.1Landed7.85 USDCnonenone1.0609 to 1.50001.65 s7.22 s7.22 s7.63 sNearBlocksBasescan Sepolia, block 55,788,157
19:24:332026-11-07T19-24-32Z-base-sepolia-1Reservev0.1Landed7.85 USDCnonenone1.0609 to 1.50001.73 s6.96 s6.96 s8.50 sNearBlocksBasescan Sepolia, block 55,788,059
19:24:142026-11-07T19-24-13Z-base-sepolia-1Reservev0.1Landed7.85 USDCnonenone1.0609 to 1.50001.88 s6.70 s6.72 s8.25 sNearBlocksBasescan Sepolia, block 55,787,963
19:23:352026-11-07T19-23-34Z-base-sepolia-1Reservev0.1Landed7.86 USDCnonenone1.0606 to 1.50001.76 s6.66 s6.69 s8.22 sNearBlocksBasescan Sepolia, block 55,787,769

The price includes the pool fee. Each unwind landed just above its target, because the keeper sizes for the fee and the whole bound.

Every signing sample

15 of 15 signed on NEAR testnet, median 6.6 s, p95 7.1 s, slowest 7.1 s. Signature only. Nothing was broadcast. Time from the keeper sending rescue to holding a verified signature.

SampleOutcomeTimeNEAR
1signed6.1 sNearBlocks
2signed6.4 sNearBlocks
3signed6.6 sNearBlocks
4signed6.6 sNearBlocks
5signed6.8 sNearBlocks
6signed7.1 sNearBlocks
7signed6.1 sNearBlocks
8signed6.8 sNearBlocks
9signed6.4 sNearBlocks
10signed7.1 sNearBlocks
11signed5.9 sNearBlocks
12signed6.0 sNearBlocks
13signed6.7 sNearBlocks
14signed6.7 sNearBlocks
15signed6.6 sNearBlocks

The fork rehearsal

Rehearsal on a local anvil fork of Base Sepolia at block 55657033. The NEAR contract and the MPC signature are real testnet. The EVM transaction landed only on the fork, so public explorers will not show it.

A rehearsal of the reserve mode. It repaid 100.00 USDC, and health factor went from 1.060644 to 1.090979 in 7.4 s. It is kept apart from the runs above, because no public explorer can show a fork. The NEAR side is public on NearBlocks.

Backtest: repay from collateral

Every native USDC borrower on Aave v3 Base and Arbitrum, through two crashes and a calm month, replayed with trigger 1.20, target 1.50 and a 60 second delay. Each sale is priced from a real Uniswap v3 quote at its landing block, against Aave’s oracle in the same block. A simulation: it assumes the keeper, RPCs, NEAR and the MPC network all worked.

Liquidated positions saved

Of the borrowers really liquidated in each period. The reserve and the upfront repay hold 30% of debt in USDC; repaying from collateral holds none.

Crash 10 to 11 Oct 202549,685 borrowers, 952 liquidated
  1. Doing nothing0 saved. All 952 paid $1.40M of bonus
  2. From collateral, 1% bound635 66.7%
  3. From collateral, 3% bound654 68.7%
  4. Reserve, 30% of debt720 75.6%
  5. Same USDC repaid upfront731 76.8%

Net from collateral: +$174.7k at 1%, +$77.8k at 3%

Crash 31 Jan to 6 Feb 202654,479 borrowers, 4,077 liquidated
  1. Doing nothing0 saved. All 4,077 paid $1.42M of bonus
  2. From collateral, 1% bound3,424 84.0%
  3. From collateral, 3% bound3,547 87.0%
  4. Reserve, 30% of debt3,541 86.9%
  5. Same USDC repaid upfront3,541 86.9%

Net from collateral: +$774.0k at 1%, +$473.0k at 3%

Calm month 3 Dec 2025 to 1 Jan 202658,170 borrowers, 229 liquidated
  1. Doing nothing0 saved. All 229 paid $26.1k of bonus
  2. From collateral, 1% bound114 49.8%
  3. From collateral, 3% bound114 49.8%
  4. Reserve, 30% of debt189 82.5%
  5. Same USDC repaid upfront191 83.4%

Net from collateral: −$122.0k at 1%, −$290.1k at 3%

  • In both crashes, repaying from collateral avoided more liquidation bonus than it cost, at both bounds.
  • In the calm month it cost more than it avoided: net −$122.0k at the 1% bound. Each of the 51,430 borrowers armed above the trigger paid $1.60 in swap cost and gas over 30 days, and sold 2.0% of their collateral.
  • At the 1% bound it saved fewer liquidated positions than the reserve or the same USDC repaid upfront, in every period. Both of those need the cash in hand. The looser bound saved as many or more once: 3,547 against 3,541 at the 3% bound, 31 Jan to 6 Feb 2026.
  • In 10 to 11 Oct 2025, at the 1% bound, positions under $10k of debt lost $312.7k, with $401.0k spent on their gas. Larger positions made $487.4k.
Repay from collateralCrash10 to 11 Oct 2025Crash31 Jan to 6 Feb 2026Calm month3 Dec 2025 to 1 Jan 2026
Borrowers49,68554,47958,170
Liquidated in reality9524,077229
Bonus at risk, all paid when doing nothing$1.40M$1.42M$26.1k
Saved from collateral, 1% / 3%635 / 6543,424 / 3,547114 / 114
Reserve 30% / same USDC upfront, saved720 / 7313,541 / 3,541189 / 191
Bonus avoided, 1% / 3%$780.8k / $1.00M$1.07M / $1.14M$21.6k / $21.6k
Swap cost, 1% / 3%$88.7k / $466.5k$279.5k / $656.5k$134.4k / $308.3k
Gas, 1% / 3%$517.4k / $456.4k$18.2k / $11.3k$9.1k / $3.4k
Net, 1% / 3%+$174.7k / +$77.8k+$774.0k / +$473.0k−$122.0k / −$290.1k

Read these with the figures

  • Saved counts include positions already below the trigger when armed, which unwind at once. At the 1% bound: 416 of 635 in 10 to 11 Oct 2025, 1,735 of 3,424 in 31 Jan to 6 Feb 2026, 73 of 114 in 3 Dec 2025 to 1 Jan 2026.
  • The 10 to 11 Oct 2025 swap cost includes gains from pools that lagged a falling oracle. Counting no sale better than the oracle, it is $180.9k at the 1% bound, and the net is +$82.5k.
  • The replayed keeper resends a reverted unwind every minute. In 10 to 11 Oct 2025 gas was high during a spike on Arbitrum, and 63% of it went on reverted unwinds. The live keeper quotes before sending; with no gas on reverts, the net at the 1% bound would be +$501.7k.
  • Each sale fills at its quote, alone in its block. Infrastructure is up, with a fixed 60 second delay. Two crashes say nothing about how often crashes happen, so none of this is annualised.

Why liquidated positions were missed

Missed because, 1% boundCrash10 to 11 Oct 2025Crash31 Jan to 6 Feb 2026Calm month3 Dec 2025 to 1 Jan 2026
An unwind was refused on the bound, or no pool could fill it128750
The next unwind was in flight or cooling down1141850
All USDC debt was repaid, and it still fell231201
A liquidator won the race2000
The sellable collateral ran out168142
No collateral had a usable pool98916
Every unwind asked for was under the $1 floor710356
All missed, of those liquidated317 of 952653 of 4,077115 of 229

Net by size of position

Net by debt at arming, 1% / 3%Crash10 to 11 Oct 2025Crash31 Jan to 6 Feb 2026Calm month3 Dec 2025 to 1 Jan 2026
Under $10k−$312.7k / −$267.7k+$122.7k / +$123.1k+$10 / +$859
$10k and up+$487.4k / +$345.6k+$651.3k / +$349.9k−$122.0k / −$290.9k

Method, validation and every table: backtest/README.md and backtest/results/collateral.md, recomputed by make backtest.

Repay from a reserve, the second mode

The earlier backtest replayed the 5,008 positions on Base and Arbitrum that were really liquidated in October 2025 and February 2026, with a USDC reserve held for each. Repaying the same USDC upfront, with no keeper, saved at least as many at every reserve size, and costs nothing to hold, so it protects one position as well as a reserve. That is why repaying from collateral, which needs no cash, is the main mode, and the reserve is the second.

Share of liquidated positions that survived, by reserve size
Reserve, share of debt5%10%20%30%50%
Repay from a reserve20.0%35.7%59.9%85.1%94.6%
Same USDC repaid upfront, no keeper20.0%35.7%60.0%85.3%95.6%
Same USDC held as collateral, no keeper15.8%29.7%50.6%69.2%96.4%

Saved means the position outlived the window. 2,713 of the 5,008 were already below the trigger, so their repay was an upfront repay. Method and every table: backtest/results/summary.md and portfolio.md.

Limits of this proof