Mechanism · 05 / 19Preview · not deployed
The seat auction
English auction rules: raises, anti-snipe, hard close, reserve.
Before every session, the seat for each pool is sold in an open ascending (English) auction, paid in USDG. One auction sells one seat, for one pool, for one session. This page gives the rules, the reasons for them, and a worked endgame.
The rules#
| Rule | Value |
|---|---|
| Format | Open ascending (English). All bids are public. |
| Currency | USDG |
| Who can bid | Anyone with a locked $RGNT bond for the pool's tier |
| Opening bid | Must meet the reserve |
| Minimum raise | +5% over the standing bid |
| Anti-snipe window | A bid in the last 60 s before the close... |
| Anti-snipe extension | ...pushes the close back by 60 s |
| Hard close | 2 min before the session starts. Nothing extends past it. |
| Reserve | 50% of the median of the last 10 winning bids for that session type |
| Winner | The standing bid at the close |
| No bids | The seat is unsold and the fail-safe applies |
Two timing values are not part of the design yet. The simulator needs them, so the preview picks something reasonable and labels it.
The reserve#
The reserve price is 50% of the median of the last 10 winning bids for that session type. It is computed per session type because an OPEN seat and a WEEKEND seat are different products with different values.
The reserve is public before bidding opens, and the opening bid must meet it. That makes "reserve not met" and "nobody bid" the same event: either someone opens at or above the reserve, or the seat is unsold. An unsold seat triggers the fail-safe. The pool behaves like a normal v4 pool for that session, with a default fee paid to LPs and no bell window.
Two properties of the formula matter.
- A median is hard to move. One absurdly high or low winning bid barely shifts the median of 10. To drag the reserve down, a group would have to win many auctions cheaply in a row, which requires that nobody else bids in any of them.
- The reserve follows the market. If seats become less valuable, recent winning bids fall and the reserve falls with them, so the floor cannot stay stuck above what anyone will pay for long.
A new pool has no winning bids for any session type. How the first reserves are seeded is not fixed in the design yet.
No bond, no bid#
Bidders must lock a $RGNT bond, sized by pool tier, before they can bid. A bid from an address without a locked bond is rejected.
The bond is not the payment. The payment is the USDG bid. The bond is what makes the regent's duties enforceable: it is the stake that gets slashed if the DAY regent leaves the pool price outside the oracle band (see Seat duties and slashing). Requiring it at bid time means a winner can never turn out to be unbonded.
Bond sizes per tier are illustrative preview values today; see Parameters. The $RGNT token is not live and there is no contract address. See The $RGNT token.
Escrow and refunds#
Every bid is planned to be backed by USDG held in escrow by the auction contract at the moment it is placed. A bid that is not funded is not a bid.
- When a bid is outbid, the outbid bidder's escrow is released back to them in full.
- When the auction closes, the winner's escrow is the payment. There is no second step in which the winner could fail to pay.
- The winner escrows the full bid, not a deposit. Of that escrow, 10% is the protocol cut and 90% streams to LPs over the session. See Rent streaming and anti-JIT.
This is why the design needs no credit, no default handling and no liquidation. The hard close sits 2 min before the session so that the result is final and the rent is in place before the first second of the session.
Why an English auction#
A sealed-bid auction was the main alternative. The design uses an open ascending auction for four reasons.
- Seat value is mostly common. Every bidder is estimating the same thing: the gap at the bell, the volume in the session, the fees it will generate. In common-value settings, open bidding lets bidders learn from each other and reduces the winner's curse. Bidders who worry less about overpaying can bid closer to true value, and that means more rent for LPs.
- Nothing on a public chain is sealed for free. Sealed bids need a commit and reveal scheme, a reveal deadline, and penalties for not revealing. Each of those is attack surface and none of them is needed here.
- LPs can watch. The auction is the price discovery for their income. An open auction shows them the standing bid in real time, and they know the final number before the session starts.
- One honest bidder is enough. In an open auction any participant can see an underpriced seat and raise it. See the section on collusion below.
The known weakness of an English auction is sniping: waiting until the last moment so that nobody can respond. On a first-come-first-served chain that would rebuild the latency race inside the auction. The anti-snipe extension removes it. A late bid always leaves the others at least 60 s to answer, until the hard close.
A worked endgame#
This example is illustrative. The bids are invented, and the clock times assume an OPEN session starting at 09:30 ET with the preview's scheduled close 10 min before it, so the scheduled close is 09:20:00 and the hard close is 09:28:00. The illustrative reserve is 800 USDG.
| Time (ET) | Bidder | Bid | Minimum at that moment | Close after the bid |
|---|---|---|---|---|
| 09:05:00 | A | 800 | 800 (reserve) | 09:20:00 |
| 09:19:30 | B | 900 | 840 | 09:21:00 |
| 09:20:45 | A | 1,000 | 945 | 09:22:00 |
| 09:21:50 | B | 1,100 | 1,050 | 09:23:00 |
| 09:22:55 | C | 1,300 | 1,155 | 09:24:00 |
| 09:23:30 | A | 1,400 | 1,365 | 09:25:00 |
| 09:24:40 | C | 1,600 | 1,470 | 09:26:00 |
| 09:25:50 | A | 1,700 | 1,680 | 09:27:00 |
| 09:26:45 | C | 1,900 | 1,785 | 09:28:00 |
| 09:27:40 | A | 2,000 | 1,995 | 09:28:00 |
| 09:27:58 | C | 2,050 | 2,100 | rejected |
Reading the table:
- A's opening bid arrives well before the scheduled close, so nothing is extended.
- B's first bid lands inside the anti-snipe window, so the close moves back. Every later bid does the same, and each bidder gets time to answer.
- C's bid at 09:26:45 pushes the close to the hard close. From that point the close cannot move.
- A's bid at 09:27:40 is valid and becomes the standing bid, but it extends nothing.
- C's last attempt is below the minimum raise and is rejected. Even a sufficient bid would have had to arrive before 09:28:00.
At the hard close A wins the seat for 2,000 USDG. B and C were refunded when they were outbid. A's escrow becomes the payment, the session starts 2 min later, and the rent starts streaming with it.
The hard close is a real deadline, so the last extension window is the one place where speed still matters a little. The difference from the status quo is what the race is for. At the bell, bots race to take value from LPs. Here, bidders race to pay LPs more, and each step up is at least +5%.
Collusion resistance#
The obvious attack is a bidding ring: the few firms able to use a seat agree not to compete, and one of them wins at the reserve. The design answers this in two ways.
- The auction is permissionless, so one honest bidder is enough. Anyone can lock a bond and bid. If a seat is going for less than it is worth, raising it is profitable for any outsider who sees it, and the open format makes it visible. A ring has to include every capable bidder in the world, in every session, and each member is tempted to defect in every auction.
- The reserve is a floor. Even a perfect ring pays at least 50% of the recent median. Sustained low bidding does lower future reserves, but slowly, because the median moves only after many auctions.
A related case is a dominant LP bidding on its own pool. It pays rent that mostly streams back to itself, which is neutral: it cannot extract anything from other LPs that way, and they still receive their share. This and other cases are in Edge cases and attack surface.
None of this promises a high price. If nobody wants a seat it goes unsold, and rent for that session is zero.