Truth Auctions

A child pool has 100 ETH of outstanding claims but receives only 70 ETH of settlement collateral through migration. Its Truth Auction tries to raise the missing 30 ETH by selling child REP.

The auction repairs collateral and never selects truth. It sells REP belonging to an already-defined child universe. The child resumes with only the ETH that migration and accepted bids actually provide.

Winning positions settle into REP backing units and matching capacity ownership in the child pool rather than receiving a simple REP transfer.

Lifecycle

  1. Migration deadline passes; the child may start the auction later
  2. Bidding
  3. Bidding ends and finalization occurs one week after the auction actually starts

Auction Lifecycle The start transition activates a child immediately when no sale is needed. On the repair branch, losing bids below an established clearing tick may refund during bidding; finalization activates the child, and later calls settle winning and partial bids plus remaining refunds. REP doesn't leave the system. Finalization accounts the ETH actually raised and rejects contribution-only ETH, so bidder settlement never depends on a donor.

Starting the auction

The start call is permissionless but not automatic. It is valid strictly after the eight-week migration deadline and records the actual auction start time. That timestamp starts the one-week bidding window.

Bidding

Bidders submit bids at discrete price ticks, where each tick represents a maximum price in ETH per REP that the bidder is willing to pay.

Ticks are spaced geometrically, so each step changes the price by the same small percentage, as in Uniswap. The auction reference gives the base price, the step factor, and the supported range.

Losing bids can be settled before finalization once current demand is enough to find a clearing tick. Only ticks below that clearing tick can use the pre-finalization path; binding or potentially winning bids stay in the auction. Settlement credits refundable ETH to the recorded bidder without calling recipient code. The bidder then calls withdrawPendingEthRefund to pull the complete credit. Once a clearing tick is found, it cannot be lowered, so currently losing bids remain losing bids.

Bidding end

When bidding ends, anyone may finalize the auction. Finalization clears the batch auction, sends the raised ETH into the respective security pool, and computes the accounting rates used to settle bidders. The child activates with legitimate migration settlement collateral plus retained bid ETH, even when that total is below the original fork snapshot. Full repair is not guaranteed, and the remaining impairment is borne by the affected child's open-interest holders.

Finalization records unclaimed auction ownership in an unassigned pool position. A winning bidder later assigns its proportional REP backing, capacity ownership, and accrued fees to a child-pool vault; the auction does not send REP directly to the wallet. Forced ETH does not count as migrated or auction-raised collateral, so it cannot fake a successful repair.

How clearing works

The clearing process walks demand from the highest price downward. A bid above the clearing tick wins in full, a bid below it loses in full, and bids at the clearing tick share the last fill in the order they arrived.

Two constraints limit how much the auction can clear:

As soon as cumulative demand is enough to hit either cap at some price, that price becomes the clearing tick and all winning bids settle from it at one price. That is a valid uniform clearing even when the REP cap binds before the ETH repair target is fully met.

When demand is too low

If demand never reaches a full clearing price, only bids that meet the auction's qualification threshold participate; lower bids receive refunds. Qualifying bidders share the available REP for the ETH they collectively contribute. With no qualifying demand, all bids refund and the child remains impaired.

The contract uses bounded tick indexing and exact integer accounting so finalization does not loop over every possible price. See the auction contract reference for tick bounds, rounding, storage, and getter details, and the SecurityPoolForker reference for child-pool settlement accounting.

Interactive clearing example

The interactive example shows the uniform-clearing path, the underfunded path, and how the same bid ladder reacts when the ETH cap, REP cap, and bid sizes change.

Try a simple auction clearing run

The simplified calculator visualizes both finalized branches with three fixed price levels and real-number arithmetic. The clearing section specifies the contract's exact tick and cumulative-floor behavior.

Modeuniform clearing near 3 ETH/REP
ETH retained12 ETH
Auction settings
Player bids

Interactive Demand CurveThe stepped curve accumulates bids from the highest limit price to the lowest. The vertical rule is available REP, the horizontal rule is the current clearing or qualification price, and colored bid points distinguish accepted demand from demand below the boundary. The chart updates as the auction controls change.

Binding conditionboth caps
Winning ETH keptnot underfunded
Thresholdnot underfunded
Alice allocation1.00 REP
Bob allocation1.33 REP
Carol allocation1.67 REP
Total REP allocated4 REP
Refunds1.00 ETH

Three outcomes to keep separate