Voting
HANS stakers decide which projects merge into HANS Society. Each merger is one proposal. A proposal that passes mints the merger's HANS to the treasury after a public 72-hour delay, and the treasury then opens a swap offer for the project's holders.
App: joinhans.io/vote
The calendar #
| Vote week | One vote runs exactly one staking week: Thursday 00:00 UTC to the next Thursday 00:00 UTC |
| Notice | A proposal is published at least 24 hours before its voting opens, and at most 4 weeks ahead |
| Proposals | At most 8 per week. Only the Governance Safe can propose |
| Cancelling | Allowed only before voting opens. Once voting opens, a proposal runs its full 7 days |
| Voting power | Fixed when voting opens, from your staking positions at that Thursday |
Who can vote #
- Stakers. Your voting power is your positions' eligibility when voting opens. It starts at 10% of a position's sHANS and grows every week to 100% at unlock, counting from the Thursday after you lock (see Staking).
- Anyone holding votes for a proposal can cast them during its vote week, including votes bought from other holders.
- Not the treasury. The treasury can't vote, claim, buy votes or make offers, and its staked HANS is not counted in the total.
- The total doesn't shrink. Total voting power is fixed when voting opens. Positions unlocked early during the week stay in it.
How to vote #
- Claim and vote, in one confirmation. In a vote week you choose YES or NO for every proposal of that week. One transaction then claims your votes for all of them and casts them. You must choose for each proposal before confirming.
- Or claim the votes to your wallet to sell them, or to cast them later in the week. Each proposal has its own votes: they count only on that proposal, and only until its vote closes.
- Votes in your wallet (claimed or bought) are cast YES or NO before the close. A cast vote is final, and you may split your votes between YES and NO.
Claiming holds the claimed positions until that week's votes close: a held position can't be unlocked early. The hold ends at the close, and selling the votes does not release it.
When a proposal passes #
Both rules must hold when the 7 days end:
| Rule | Needed |
|---|---|
| Turnout | Votes cast (YES plus NO) reach at least 30% of total voting power |
| Approval | YES is at least 51% of the votes cast |
There is no early result: a proposal stays open for its whole week. At the minimum turnout, YES from 15.30% of all voting power is enough to pass. A proposal nobody votes on fails.
Buying and selling votes #
During a vote week, votes for that week's proposals can be bought and sold on joinhans.io/vote/trade, paid in HANS, by anyone except the treasury. There are no fees.
- Buy from listings (votes offered for sale), cheapest first, or make an offer at your own price. Your HANS is held for the offer until it fills, you cancel it, or the vote closes. After the close, unfilled offers are returned automatically.
- Sell into buyers' offers, or list your votes at your own price. Your votes are held for the listing until it fills, you cancel it, or the vote closes. Unsold listings are frozen at the close and can't be voted, so cancel a listing before the close if you want to vote with it.
- Trading opens with voting and stops at the close. No offers can be made before voting opens.
- A trade fills exactly the listings or offers shown when you confirm, at their prices. If one of them changed before your trade confirms, the whole trade fails and nothing moves; check the new prices and try again.
After a vote passes #
- Scheduled. Within 7 days of the close, the mint is scheduled on the governance timelock. Anyone may do it (HANS runs it automatically). If nobody does, the vote expires and a new vote is needed.
- Safety delay. The mint waits 72 hours (600 seconds on the test network). During this time the Governance Safe or the guardian can veto it. A vetoed mint is never scheduled again by the vote: a new vote is needed.
- Minted. After the delay, anyone can execute it. HANS mints exactly the voted amount to the treasury, with the terms fingerprint recorded on-chain.
- Swap offer. The Treasury Safe opens the project's swap offer in a separate step (see Merge offers).
The earliest a vote can lead to a mint is about 10 days after voting opens: 7 days of voting plus the 72-hour delay.
Merger terms #
Each proposal carries the full merger package, fixed when it is created and never edited: the HANS to mint, the project's token and chain, the token total that sets the swap rate, the swap offer's length, the offers contract, the project name, and its terms document.
The terms document is published at a fixed address that never changes, joinhans.io/terms/0x…, named by its fingerprint (the keccak-256 hash of the document). The vote page fetches it and shows whether it matches the fingerprint stored with the vote. Merger HANS left unswapped when the offer ends drips to stakers over 12 weeks, the merge offers' leftover rule.
Trust model #
These powers exist alongside the vote. They are public on-chain and shown on every proposal page.
- The Governance Safe can schedule a mint without a vote, through the same 72-hour delay and guardian veto. A passed vote is necessary for the vote's route to a mint, but it is neither sufficient for a mint nor the only route to one. Our monitoring alerts the team whenever a mint is scheduled outside a vote.
- The Governance Safe and the guardian can each cancel a mint the community approved, during its delay.
- Changing the timelock delay, removing the mint adapter's role, changing the voting rules or who may propose, or pointing staking at a new voting contract are all public operations: each waits out the timelock delay and can be vetoed. The adapter's own 72-hour minimum protects only the vote's route.
- The mint goes to the treasury. Nothing on-chain ties the minted HANS to the swap offer. The offer needs a separate Treasury Safe action, and our monitoring checks after the fact that it matches the vote. The fingerprint recorded with the mint is a reference, not enforcement.
- The shortest time from voting opening to a mint is about 10 days (7 days plus 72 hours), after at least 24 hours of notice.
By design, and disclosed:
- Votes can be bought. Anyone except the treasury can buy votes, so a merger partner could buy YES votes. At the minimum turnout, YES from 15.30% of all voting power passes a proposal.
- Late lockers count at 10%. A position locked during the notice period counts at 10% of its sHANS, and leaving early costs up to 10% of its HANS.
- Total voting power never shrinks during a vote week, so turnout is measured against everything that existed when voting opened.
- The maturity gap. A position that matures exactly on the Thursday a vote opens has no voting power for that vote. Renew before that Thursday to take part.
Contracts (Base Sepolia) #
| Voting (HANSVoting) | 0x2AC196f4f6E20489d803a1505193D65FCafA682D↗ |
| Ballot market (HANSBallotMarket) | 0x4FFe0BC961644E5712e9BaB5C68a0F2556e69ABC↗ |
| Mint adapter (HANSMintQueue) | 0x8b13F8f6aae296702277d2c276a607c3E003f562↗ |
| Staking v3 (HANSStakingV3) | 0x55Db3F217DCBC7Ee18015069f6dbB8C06c9FAe1f↗ |
None of them is upgradeable or pausable, and none charges a fee. Votes are ERC-1155 tokens, one token id per proposal. Their only settings belong to the governance timelock: who may propose and the rules for future proposals (voting), and which voting contract staking uses. Neither can change an existing proposal, its votes or its result. The mint adapter holds the timelock's proposer role and can schedule only HANS.mint(amount, termsHash) for a proposal that passed on its voting contract.
Credits #
The voting mechanism follows MarketDAO at commit 0a7b7ce (MIT licence): tradable votes per proposal, YES/NO casting and fixed-length elections. HANS's voting contracts are purpose-built. No MarketDAO code is used.
Reviews #
The voting contracts were reviewed in internal audits at every build stage. They have not had an external audit. The same is true of staking v3.