Orders
One product. Payment locked on chain until a named verifier confirms delivery.
Order #1
RELEASEDPaid out to the seller- Order fundedONCHAIN
The buyer locked 13.34 mUSDG for 1 unit, with a cap of 13.34 mUSDG per unit.
The ship-to is stored only as a hash computed off chain. The salt and address reach the seller off chain, which is not trustless.
0x36f96d…87f6 ↗ (opens the block explorer in a new tab) · block 128257293 · 2026-10-03 16:52 UTC
- Matched to a cleared sell fillONCHAIN
Round 102, order #7, price 11.20 mUSDG per unit for 1 unit. The seller has until 2026-10-03 17:09 UTC to accept.
The fill is evidence of an offer at or below this price. It is not an allocation of goods.
0x6c3d69…745b ↗ (opens the block explorer in a new tab) · block 128257723 · 2026-10-03 16:54 UTC
- Seller accepted and locked a bondONCHAIN
Bond 2.24 mUSDG. The seller must ship by 2026-10-03 17:24 UTC.
0x93e04e…e6c2 ↗ (opens the block explorer in a new tab) · block 128257775 · 2026-10-03 16:54 UTC
- Seller reported a shipmentAGENT ATTESTED
Shipment hash 0x73390e634b…261a51. The verifier has until 2026-10-03 17:24 UTC.
The shipment hash is reported by the seller agent. The contract does not check it against any carrier or goods.
0x9793f8…2cb6 ↗ (opens the block explorer in a new tab) · block 128257786 · 2026-10-03 16:54 UTC
- Verifier attested deliveryONCHAIN
Receipt hash 0x9229ada7d7…655073. The buyer can dispute until 2026-10-03 17:04 UTC.
Signed by the named verifier 0x6129C8…5501 ↗ (opens the block explorer in a new tab). This is a statement by one address, not a carrier record.
The verifier is one address chosen at deployment; it decides whether goods arrived.
0x2c9e84…0310 ↗ (opens the block explorer in a new tab) · block 128257802 · 2026-10-03 16:54 UTC
- Payment released by the buyerONCHAIN
The seller received 11.20 mUSDG; the buyer got 2.14 mUSDG back (cap minus price); the seller’s 2.24 mUSDG bond was returned. The buyer released the payment.
Released by 0xE2858f…8C4d ↗ (opens the block explorer in a new tab) (reason code BUYER).
0xfeecf0…01ed ↗ (opens the block explorer in a new tab) · block 128257819 · 2026-10-03 16:54 UTC
Order #2
REFUNDEDRefunded to the buyer- Order fundedONCHAIN
The buyer locked 13.34 mUSDG for 1 unit, with a cap of 13.34 mUSDG per unit.
The ship-to is stored only as a hash computed off chain. The salt and address reach the seller off chain, which is not trustless.
0x5f5603…ed63 ↗ (opens the block explorer in a new tab) · block 128257307 · 2026-10-03 16:52 UTC
- Matched to a cleared sell fillONCHAIN
Round 102, order #6, price 11.20 mUSDG per unit for 1 unit. The seller has until 2026-10-03 17:09 UTC to accept.
The fill is evidence of an offer at or below this price. It is not an allocation of goods.
0x08c456…ff36 ↗ (opens the block explorer in a new tab) · block 128257736 · 2026-10-03 16:54 UTC
- Refunded: offer withdrawn before acceptanceONCHAIN
13.34 mUSDG returned to the buyer. The buyer withdrew the offer before the seller accepted, or the seller let it lapse. The seller’s bond was never touched.
0xf1cc77…9c7f ↗ (opens the block explorer in a new tab) · block 128257757 · 2026-10-03 16:54 UTC
How these orders were produced
The proof used script-controlled wallets and operator-issued test units. No physical goods moved: the delivery was attested by the verifier.
One operator address plays three roles: it is the escrow verifier, the BlindBook owner that issued the sellers’ test units, and the owner of the mUSDG token that was minted to the wallets. 0x6129C8…5501 ↗ (opens the block explorer in a new tab)
mUSDG is a testnet stand-in token with no value. The ship-to of every order is only a hash of a random salt and a fixed text; no address was entered.
- buyer 0xE2858f…8C4d ↗ (opens the block explorer in a new tab)
- seller A 0x94BC49…1c42 ↗ (opens the block explorer in a new tab)
- seller B 0xd913E0…35e5 ↗ (opens the block explorer in a new tab)
- bidder 0x9f4deA…d0e2 ↗ (opens the block explorer in a new tab)
The price evidence. In BlindBook round 102, seller A asked 10.78 mUSDG and seller B asked 10.89 mUSDG per unit, and a bidder offered 11.78 mUSDG for 4 units. The round cleared at one price, 11.20 mUSDG, for 10 units, and that price is what each order records. There were 8 sealed orders in the round, 5 of them from the market’s bot traders. Cleared by another address (the keeper), which is allowed: 0xcf517a…8bab ↗ (opens the block explorer in a new tab)
Order #1: delivered and released
- Checked filled >= consumed + qty for sellerA before matchOrder: filled 2 >= consumed 0 + qty 1 (ask 1078c)
- Checked the price is the BlindBook round price: price 1120c, seller 0x94BC4993eCb5615BF3549AB8Fe963DAc23301c42
- Checked bond locked equals bondNeeded: 2.24 mUSDG
- Checked Released event: payment = price x qty x CENT: 11.20 mUSDG
- Checked Released event: buyer refund = cap payment minus payment: 2.14 mUSDG
- Checked bond is back in bondFree: 2.668 mUSDG (bond 2.24 mUSDG returned)
- Checked seller token balance rose by payment: +11.20 mUSDG
- Checked buyer token balance rose by the refund of the difference: +2.14 mUSDG
- Checked order 1 is RELEASED: RELEASED
Order #2: refunded by the buyer before acceptance
- Checked filled >= consumed + qty for sellerB before matchOrder: filled 2 >= consumed 0 + qty 1 (ask 1089c)
- Checked order 2 is REFUNDED: REFUNDED
- Checked buyer got the full funded amount back: +13.34 mUSDG
- Checked the fill reservation was released: consumed 1 -> 0
Whole run
- Checked round price is within the buyer cap: 1120c <= 1334c
- Checked order 1 was funded before the round began: epoch start 1791046413 >= createdAt 1791046375
- Checked order 2 was funded before the round began: epoch start 1791046413 >= createdAt 1791046377
- Checked the escrow holds exactly the sellers’ free bonds (nothing stranded): escrow 5.336 mUSDG, bondFree A+B 5.336 mUSDG
Not run: unshipped timeout (the ship window is longer than 20 minutes; run with --wait-timeout to wait for it).
Every setup and round transaction (27)
- send 0.002 ETH to buyer 0xef7dfa…e39b ↗ (opens the block explorer in a new tab) block 128257029
- mint 26.68 mUSDG to buyer 0x7635dd…8746 ↗ (opens the block explorer in a new tab) block 128257038
- send 0.002 ETH to sellerA 0x60abe2…23e6 ↗ (opens the block explorer in a new tab) block 128257050
- mint 8.668 mUSDG to sellerA 0xe6d0de…5e1d ↗ (opens the block explorer in a new tab) block 128257063
- send 0.002 ETH to sellerB 0x9a499b…c54f ↗ (opens the block explorer in a new tab) block 128257076
- mint 8.668 mUSDG to sellerB 0xe4ef7f…5b3e ↗ (opens the block explorer in a new tab) block 128257087
- send 0.002 ETH to bidder 0x8bee45…088c ↗ (opens the block explorer in a new tab) block 128257103
- mint 53.12 mUSDG to bidder 0xc9696b…4000 ↗ (opens the block explorer in a new tab) block 128257114
- owner issues 2 units to sellerA (operator-issued, not goods) 0x2faf49…1b44 ↗ (opens the block explorer in a new tab) block 128257127
- sellerA approves the escrow for the bond 0x71d880…4572 ↗ (opens the block explorer in a new tab) block 128257143
- sellerA deposits a 2.668 mUSDG bond 0xecb6d4…6b8c ↗ (opens the block explorer in a new tab) block 128257155
- owner issues 2 units to sellerB (operator-issued, not goods) 0x3c23a8…fcf4 ↗ (opens the block explorer in a new tab) block 128257166
- sellerB approves the escrow for the bond 0x4dd6e6…8eb5 ↗ (opens the block explorer in a new tab) block 128257179
- sellerB deposits a 2.668 mUSDG bond 0xa84404…dd44 ↗ (opens the block explorer in a new tab) block 128257190
- sellerA approves BlindBook 0x4693c8…484e ↗ (opens the block explorer in a new tab) block 128257202
- sellerA deposits 6.00 mUSDG into BlindBook 0x361c1a…1e0b ↗ (opens the block explorer in a new tab) block 128257216
- sellerB approves BlindBook 0x513e55…d0a3 ↗ (opens the block explorer in a new tab) block 128257229
- sellerB deposits 6.00 mUSDG into BlindBook 0x41fd92…1f62 ↗ (opens the block explorer in a new tab) block 128257238
- bidder approves BlindBook 0x69f824…fd1a ↗ (opens the block explorer in a new tab) block 128257251
- bidder deposits 53.12 mUSDG into BlindBook 0x78eb5b…b136 ↗ (opens the block explorer in a new tab) block 128257258
- buyer approves the escrow 0xb9fa98…685d ↗ (opens the block explorer in a new tab) block 128257275
- bidder commits a sealed buy (hash only) 0xd73124…f6b9 ↗ (opens the block explorer in a new tab) block 128257515
- sellerA commits a sealed sell (hash only) 0x31e932…6988 ↗ (opens the block explorer in a new tab) block 128257515
- sellerB commits a sealed sell (hash only) 0x884f00…305b ↗ (opens the block explorer in a new tab) block 128257515
- bidder reveals the buy: 1178c x 4 0x925fa2…45c1 ↗ (opens the block explorer in a new tab) block 128257624
- sellerA reveals the sell: 1078c x 2 0xbcfbc8…ff7d ↗ (opens the block explorer in a new tab) block 128257624
- sellerB reveals the sell: 1089c x 2 0x209a08…43d2 ↗ (opens the block explorer in a new tab) block 128257624
What is not trustless
The verifier. The verifier is one address chosen at deployment; it decides whether goods arrived. If it goes silent after a shipment, the buyer is refunded and the seller gets only its bond back. If it goes silent after a dispute, the seller is paid.
The verifier’s reach. A verifier acting through another address, as a buyer or a seller, can direct any outcome, including a seller’s bond, to itself: the verifier is a trusted party.
The shipment. The shipment hash is reported by the seller agent. The contract does not check it against any carrier or goods.
The ship-to. The ship-to is stored only as a hash computed off chain. The salt and address reach the seller off chain, which is not trustless.
What matching proves, and what it does not. A cleared BlindBook sell fill is used only as evidence that this seller offered at or below price P in a round that began at or after the buyer funded. It is not an allocation of goods: those units were already sold to the BlindBook buyer and are not redeemable. The units are operator-issued, so the operator controls who can become a seller, and a seller may also be a bidder in that round, so P is not an independent market price. The buyer chooses the round; the buyer’s own cap (maxPriceCents) is the real price guard. The consumed counter only stops one fill from backing two escrow orders; consumed is counted within this escrow contract only. The seller’s acceptance, the bond and the named verifier are the only guards on delivery.
Timeouts, in this deployment: the seller has 15 min to accept, 30 min to ship after accepting, the verifier has 30 min to attest after a shipment and 15 min to rule on a dispute, and the buyer can dispute for 10 min after a delivery attestation. The seller bond is 20% of the price.