How one blind request becomes one fill
The grid floor from above, an orange cable routed between two hatches
Plan of the floor

$DARKHOOKS

$DARKHOOKS is the protocol's stake. It has three jobs, all enforced by the settlement contract once the token is bound to it with setDeskToken, which can happen only once.

Maker bond

An external maker bonds $DARKHOOKS with bond(amount). Its quotes settle only while its bond is at least minBond. House agents need no bond; every other price on DarkHooks is backed by stake.

Default pays the taker

If a bonded maker signs a quote and, at fill time, does not hold or has not approved its leg, the fill does not revert. The quote's nonce is spent, the taker pays nothing, and slashAmount of the maker's bond is transferred to the taker in the same transaction, with a Defaulted event. Withdrawing a quote by moving inventory away costs the maker money, so a signed price means something.

Unbonding starts with requestUnbond; the tokens can be withdrawn two days later and stay slashable until then, so a maker cannot quote and leave in the same breath.

Zero-fee fills

The protocol fee is 5 bps of the USDG leg. A taker whose wallet holds at least feeFreeBalance $DARKHOOKS at fill time pays no fee. The check reads the taker's balance inside fill; nothing needs to be locked.

Parameters

ParameterSet byBound
deskTokenowner, oncecannot change after it is set
minBond, slashAmount, feeFreeBalanceownerpublic, emitted in BondParamsSet
feeBpsownerat most 10 (constant)
UNBOND_DELAYconstant2 days