liquid_arc
Report 001 / Base / Morpho / SVR auctions

What a Chainlink SVR auction winner actually pays on Base

liquid_arc / October 5, 2026
0.1028 ETH
the winning bid in the decoded bundle
$276.11
the bonus it was bidding for
1.4%
between the winner and the runner-up

Summary

The winner of a Chainlink SVR liquidation auction on Base bids away almost everything the liquidation is worth. In the bundle decoded below, the winning bid was about 99% of the liquidation bonus, and the runner-up was 1.4% behind.

Both bids are read straight from the bundle's calldata. Two earlier bundles, read from traces, show the same thing: 90% and 99% of what was left after selling the collateral went to the auction.

A first estimate said winners keep 10%. It was wrong, and the section on that shows the three mistakes behind it.

Background

SVR is Chainlink's mechanism for recapturing the value a price update creates. When a new price makes a loan liquidatable, searchers bid for the right to liquidate in the same transaction as the update. On Base it is switched on by default for certain feeds, so lending markets that read those feeds are covered without doing anything.

The auction runs on Atlas. A searcher posts bonded ETH, deploys a solver contract, and answers each auction with a signed operation that names a bid. Chainlink's searcher onboarding guide gives the auction time as 2 seconds, says up to two searcher bids are included per transaction, and says the winner also pays the gas for the oracle update.

The bundle that lands is one transaction to the Atlas contract. It carries the price update, the searchers' operations and their bids. That last point is what makes the bids easy to measure.

Method

Every bid is a field in the bundle's calldata, so it can be read without tracing anything. A bundle is a call to Atlas's metacall, which takes the price update, an array of searcher operations, and the oracle network's own operation. Each searcher operation has a bidAmount, a bidToken and the solver contract that will do the work.

The selector on these bundles is 0x4317ca01. It was computed from the operation structs in the Atlas repository at version 1.6.4 and it matched. With the signature in hand, one cast decode-calldata prints every operation in the bundle.

The prize is computed separately, from the liquidation itself. On Morpho the bonus follows from the market's loan-to-value limit: at 62.5% the liquidator receives collateral worth 1.1268 times what it repays, so the bonus is 12.68% of the repaid amount.

One bundle decoded

Two searchers bid for four cbXRP liquidations on October 2, 2026, and the winner offered 0.1028 ETH for a prize of $276.11. The bundle is transaction 0x624b1a94924a0f3f1dd5534042a6074ee169e1ec1c429c0d74b879d4f9820f1f in Base block 52,088,759.

Sent toAtlas, 0x583dcFef0D240DC80753F0F0B26513feE27D9B77
DappControl0xa5E1a36938769cbd5a26f5e19D8FCB379f597c83
Winning bid0.102821268623367196 ETH, solver 0xc921309b...
Second bid0.101339482595036326 ETH, solver 0x4c0f054F...
Gap between the bids1.4%
Gas allowed per searcher6,000,000
Debt repaid across the four positions$2,178.15
Bonus at 12.68%$276.11

The winning bid is between 98.7% and 100.5% of the bonus, depending on the price of ETH in that block, which is bracketed between $2,652 and $2,698.

The price report itself landed one block earlier, in block 52,088,758. A second bundle for the same report was in block 52,088,759 too and failed, which is the parallel auction the onboarding guide describes.

How a 10% estimate went wrong

A first reading of an auction bundle said the searcher keeps 10% of the bonus. Three separate mistakes produced that number, and each is easy to repeat.

  1. Token transfers miss the bid. The bid is paid in native ETH. It leaves no Transfer event, so summing the transfers in a receipt shows the collateral being sold and nothing being paid.
  2. Traces double count. A trace lists every internal call. Calls of type DELEGATECALL show a value without moving any ETH, and the payment passes through several contracts on its way. Summing the frames gave one bundle a payment larger than its own proceeds.
  3. A 90/10 split of the wrong thing, at the wrong price. In a bundle in block 50,774,916 (September 2, 2026) the searcher unwrapped 6.318875 WETH and sent 5.687167 ETH onward and 0.631708 ETH to a second address. That is a 90/10 split of what was left after selling the collateral, not of the bonus, and it had been valued with the ETH price from a different day.

With the ETH price taken at that block, about $2,404, the same bundle reads as follows. The bonus was $22,127. Selling the collateral cost 31% of it and left $15,192. Of that, $13,673 went onward to the auction, which is 62% of the bonus, and $1,519 went to the second address, which is 6.9%.

So the visible share kept was 6.9% of the bonus on a large liquidation, and it falls toward 1% on small ones where selling costs little. A third bundle, read the same way, paid 99.1% of what was left after selling.

Reading the bid from calldata avoids all three mistakes, because the number is written down before anything moves.

Forty days in aggregate

Between Base blocks 50,400,000 and 52,111,542, auction bundles carried 259 liquidations on Morpho's USDC markets, worth $121,059 in bonus. One market, cbXRP, accounted for 155 of them and $108,495.

Bundles land fast. In a 23-day sample, all 93 cbXRP auction liquidations landed exactly one block after the price report that triggered them. That is two seconds on Base, which matches the auction time in Chainlink's guide.

Size does not buy a searcher more room. The $22,127 bonus above left its winner 6.9%, and most of the difference from the small bundle is the cost of selling a large amount of collateral, not a softer bid.

What it means

For a searcher thinking of joining. The auction is open to anyone with a bond and a solver contract, but two bidders already sit within 1.4% of each other at about 99% of the prize. A new entrant wins only by selling the collateral better than they do, and then keeps a sliver. The winner also pays for the oracle update's gas.

For anyone estimating liquidation revenue on Base. The bonus is the wrong number to use for markets behind these feeds. What a searcher can expect is the bonus, less the cost of selling, less nearly all of what remains.

For the protocol side. The mechanism does what it was built to do. Almost all of the value a liquidation creates is bid into the auction instead of staying with whoever was fastest. How that payment is divided afterward is outside what was measured.

Limits

This rests on one bundle decoded from calldata and two read from traces. That is enough to overturn a 10% estimate and not enough to call 99% a rule.

  • The ETH price in the decoded block is not pinned. The 98.7% to 100.5% range closes to one number with a single price read at block 52,088,759.
  • Three bundles, one protocol. All are Morpho markets on Base. Other lenders behind the same feeds may attract different bidders.
  • Forty days that include a crash. September 15 produced a large share of the volume. A quiet period may look different.
  • Bids, not profits. A searcher's own costs and any income outside the bundle are invisible here.
  • Where the bid goes next is not traced. This measures what the winner offers, not how it is shared out.

Reproduce it

Any Base RPC endpoint and Foundry's cast are enough. Set RPC to your endpoint first.

# 1. The bundle's calldata
TX=0x624b1a94924a0f3f1dd5534042a6074ee169e1ec1c429c0d74b879d4f9820f1f
cast tx $TX input --rpc-url $RPC > bundle.hex

# 2. Confirm the selector
SIG='metacall((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,uint32,uint32,uint24,address,bytes,bytes),(address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[],(address,address,uint256,uint256,address,address,bytes32,bytes32,bytes),address)'
cast sig "$SIG"          # expect 0x4317ca01

# 3. Decode every operation, bids included
cast decode-calldata "$SIG" $(cat bundle.hex)

In the output, the second argument is the array of searcher operations. Each has thirteen fields: the seventh is the solver contract, the tenth is the bid token (the zero address for native ETH) and the eleventh is the bid in wei.

For the prize, read the Morpho Liquidate events in the same transaction and multiply the repaid assets by the market's bonus.

Back to liquid_arc
basechain connecting