Bidlock
Loading your profile

A live auction engine that stays correct under load.

Bid against everyone on this page right now, or start a private auction against three bots. Every bid is checked inside PostgreSQL under a row lock, so two bids can never both win.

PUBLIC ROOM · LIVE

Lot 0005

Marble Typewriter, 1970s

Starting price

$10.00

Closes in 2:52

No bids yet.

Enter the room

Start a sandbox auction

A private 2-minute auction against three bots: Cautious, Steady and Sniper. The bots run in your browser and call the same bid API you do. Your sandbox is deleted after it expires.

  • Cautious bot

    Waits five seconds, bids the minimum, gives up early. Always pays.

  • Steady bot

    Bids every few seconds, sometimes a step higher. Pays nine times in ten.

  • Sniper bot

    Usually waits until the last 15 seconds, with an occasional opening bid. Pays six times in ten.

Last benchmark: 245 accepted bids from 500 concurrent bidders in 60 s. 1 winner. 0 invalid bids. p95 269.23 ms.

Measured 2026-11-07 on GitHub Actions in Docker Compose, not on this site.

See the full results

How it stays correct

  • 01One row lock per auction. Bids on the same lot queue inside PostgreSQL, so each one is checked against the latest price.
  • 02Idempotency keys. A retried request returns the original result instead of placing a second bid.
  • 03Soft close. A bid in the last 10 seconds moves the close to 30 seconds from now, up to 20 times.
Read how it works