Vote once, count it forever.

Quorum is a Move package for small orgs that need a proposal, a deadline and a tally nobody can dispute. Every address gets exactly one vote per proposal, enforced on-chain — not by an admin's spreadsheet.


1

Vote per address, per proposal — object-enforced

0

Off-chain tallies to trust

2+

Options per proposal, minimum

testnet

Live now on Sui


How Quorum votes

01

A proposal, fixed at birth

An AdminCap holder opens a Proposal with its options and deadline set once, together. Nobody adds a choice mid-vote or moves the deadline after watching the tally — the shape of the question is locked before the first vote lands.

02

A receipt, not a row in a table

Voting mints a VoteReceiptstraight into the voter's wallet — non-transferable, unforgeable, and the reason a double vote can't happen: Sui already guarantees an object has exactly one owner, so that guarantee is the guard, not a lookup a bug could slip past.

03

A close, that closes

Only the matching AdminCap can call close(), and once closed a Proposal stays closed — the final tally is emitted as an event and stands, permanently attributable to the org that ran the vote.

The object model

Every guarantee is an object, not a promise

Move has no built-in access-control list, so Quorum doesn't reach for one. Administration is a capability you hold or don't; a cast vote is a receipt you hold or don't. The chain enforces the org, not a database somewhere trusting the frontend to ask nicely.

“We stopped arguing about who counted the votes. The chain counted them, and the receipt is sitting in everyone's wallet.”
— an early Quorum org, testnet

Open your first proposal.