HANS Docs
Protocol

Merge offers

A merge offer is how a project's token holders come into the society. The treasury pre-funds an offer — a fixed amount of HANS against the expected supply of an old token — and opens it for a fixed window. Holders swap at the preset rate; whatever HANS isn't claimed by the deadline goes to stakers.

Swap page: joinhans.io/swap

How an offer works #

  1. Creation (treasury only). The treasury Safe escrows the HANS and creates the offer, naming the old token, the expected amount of it, and a duration between 1 and 365 days. The rate is fixed forever: HANS out = old tokens in × HANS escrowed ÷ old tokens expected.
  2. Swapping (anyone holding the old token). Old tokens go straight to the treasury (to be retired later); HANS comes out of the escrow at the fixed rate, up to what remains. Native ETH offers are supported too.
  3. Expiry and finalization (permissionless). After the window closes, anyone can finalize. Every HANS left in escrow is pushed into the staking contract's distribution accumulator, where it accrues to locked positions exactly like an early-exit penalty.

A small keeper job finalizes expired offers once a day, so leftovers land without anyone having to remember.

The trust property #

Once an offer exists it is immutable: no cancel, no rate change, no top-up, and no clawback — not even for the treasury. Escrowed HANS can only ever (a) swap to old-token holders at the preset rate, or (b) distribute to stakers at expiry. This is what a merging community is shown: the offer cannot be pulled out from under them.

The contract holds only HANS. Old tokens and ETH flow straight through to the treasury, so nothing about an old token's behaviour can affect escrow accounting or other offers. Each offer's escrow is isolated: offer A can never pay offer B.

Converting UBAI with the same contract #

Because an offer is just "old token → HANS at a fixed rate", the treasury converts UBAI contribution points into HANS by creating an offer whose old token is UBAI. No special contract, no special rules — and leftovers behave the same way. The earn domain's swap page surfaces UBAI offers first.

What happened on the test network #

The first rehearsal offer put 1,000,000 HANS against 10 ETH for one week. 2,100 HANS were swapped for 0.021 ETH (which arrived in the treasury Safe); at expiry the remaining 997,900 HANS were finalized into the staking contract and accrued to the active positions — the accumulator's jump matched the hand-computed value to the wei and the offer contract's balance ended at exactly zero.

Address (Base Sepolia) #

Merge offers 0xB354eF1133645dAC81eE3B83ef26a64bc82489e1