Jump into Handfast
Handfast

Binding Note

Abstract

Handfast is a windowed binding market. It issues 6,000,000 HAND, all of it in the Pair Book at launch. Each trade leaves a Window Share of two percent. That share enters a Timed Hold rather than a balance. A Timed Hold Unbinds into Closed HAND only when the Gate Rule is met and a Counter Fill has occurred in the same Live Window. Otherwise the Hold Rolls, never cancelled and never clawed back. Closed HAND leaves issue and is never issued a second time. Window Share, the Gate Rule, and the issue sit sealed at construction.

An empty vermillion court with an oxblood sash bound across two halls.

The problem, stated once

A take that credits a wallet can be spent, redirected, or emptied by whoever holds the key. A finish that needs only one side of a trade lets the last mover choose the outcome.

Handfast answers both. The Window Share is bound at the trade. Unbind needs the window and the other side. If they do not agree, the Hold continues.

Design

The token contract holds the issue. The Pair Book is the only market: Uniswap v4, Ethereum, ETH as quote. The live path advances the Live Window on every transfer. Timed Holds are not a spendable balance. Unbind writes Closed HAND. The Roll writes the same Hold forward.

The token contract cannot shift a Partner's HAND. It cannot halt the Pair Book. It cannot mint Closed HAND back into issue. The Pair Book cannot rewrite the Window Share. The live path cannot skip a window for one Partner.

An oxblood cord spanning a pale stone court.

Parameters

NameValueUnitWhere it livesSetter
Issue6,000,000HANDtoken contractnone
Window Share2%Pair Book fee pathnone
Gate Rulefixedcadencelive pathnone
QuoteETHassetPair Booknone
VenueUniswap v4venuePair Booknone
ChainEthereumchainPair Booknone

Mechanism

A trade on the Pair Book leaves a Window Share of two percent. That share is written into a Timed Hold for the current Live Window. Each transfer steps the Live Window forward. Unbind reads two facts: whether the Gate Rule's block deadline has passed, and whether a Counter Fill occurred in that same Live Window. If both are true, Unbind retires the Hold as Closed HAND. If not, the Roll copies the Hold into the next Live Window. No other path settles a Hold.

The court after the sash has gone.

Worked examples

Busy window. A 500 HAND sale leaves 10 HAND bound. A Counter Fill lands. The Gate passes. 10 HAND become Closed HAND. Proceeds are 490 HAND.

Quiet window. A 500 HAND sale leaves 10 HAND bound. No Counter Fill lands. The Gate passes. 10 HAND Roll. Proceeds are still 490 HAND. The next window inherits the Hold.

PathSaleBoundUnitEnd
Busy50010HANDClosed HAND
Quiet50010HANDRoll

When nothing happens

A Live Window with no trades writes no new Hold. Existing Holds still meet the Gate Rule: they Unbind if a Counter Fill already landed, or they Roll if it did not.

If a call reverts, no Hold is written and the Live Window does not take a false step from that call. Nothing happens.

An empty HAND balance cannot sell. No Window Share is taken from a zero sale.

What cannot change

Window Share has no setter because a movable take is a preference. The Gate Rule has no setter because an aimed window is a privilege. The issue has no setter because a second mint is a different product. No deployer key has a path to shift balances, halt the Pair Book, or mint Closed HAND.

Verification

On the explorer, read total supply for the issue. Read the Pair Book fee path for two percent. Read the cadence counter for the Live Window. Read issue remaining for Closed HAND. Timed Holds do not sit in a deployer wallet. The address appears as a control on this property at go-live.

Notation

Vertical view of the betrothal court and taut sash.