04 · Documentation
Ekklesia
The 48-hour vote where holders decide an exile with their snapshot balances.
The Ekklesia was the assembly of Athens. Every citizen could speak. Every citizen could vote. On Elysium, every holder at the snapshot can.
The Ekklesia contract runs the vote on a Shard. It counts. It decides. It does not take sides.
Opening
The vote begins when anyone calls open on a Shard that has survived its 24-hour challenge window. From that moment, the vote lasts 48 hours.
Voting
A holder votes with one call: vote(shardId, support, balance, proof).
They state yes or no, their snapshot balance, and a Merkle proof that the balance is in the Shard's root. The contract checks the proof. If it holds, the vote counts with that weight.
Weight is the snapshot balance
Your weight is what you held at the snapshot block. Nothing else.
- Selling after the snapshot does not change your weight.
- Buying after the snapshot gives you none.
No one can buy a vote once the Shard is public. No one loses a vote by trading during it.
One vote, final
Each address votes once. The vote cannot be changed or withdrawn. The contract keeps a record, readable from hasVoted(shardId, voter).
A holder with several wallets votes from each one, with each wallet's own snapshot balance.
The named cannot vote
The addresses named in the Shard cannot vote. Their balances are not part of the electorate. The accused do not sit on the jury.
Quorum
The quorum is 20 % of non-exiled supply.
Non-exiled supply is the snapshot total supply minus the balances recorded for the named addresses. Both numbers were fixed when the Shard was proposed.
Yes and no both count toward quorum. A holder who votes no still helps the vote reach a decision.
Passing
An exile passes when quorum is reached and more than 66 % of the votes cast are yes.
Two thirds is a high bar on purpose. Exile is not a majority decision. It is a near-consensus.
Worked example
| Amount | |
|---|---|
| Snapshot total supply | 1,000,000 |
| Recorded balances of the named | 200,000 |
| Non-exiled supply | 800,000 |
| Quorum, 20 % | 160,000 |
| Yes | 140,000 |
| No | 40,000 |
| Votes cast | 180,000 |
| Share of yes | 77.8 % |
Votes cast exceed quorum. Yes exceeds 66 %. The exile passes.
Had the same vote closed at 110,000 yes and 70,000 no, quorum would still be reached. Yes would be 61.1 %. The exile would fail, and the bond would still go home.
Finalize
After 48 hours, anyone can call finalize(shardId). There are three outcomes.
| Outcome | Bond | What follows |
|---|---|---|
| Quorum not reached | Burned | The Shard closes. The token is free for a new Shard. |
| Quorum reached, vote failed | Returned to the proposer | The Shard closes. The token is free for a new Shard. |
| Quorum reached, vote passed | Returned to the proposer | Exile forges the new token in the same transaction. |
The bond rewards a proposal that the holders took seriously, whatever they decided. It punishes a proposal that no one came to vote on.
A passed vote does not wait for anyone. The same call that finalizes it forges the new token and writes the outcome to the Stele.
Reading the tally
The running count is public. tally(shardId) returns yes, no, and the quorum. Anyone can watch the vote move in real time.
Parameters
| Parameter | Value |
|---|---|
| Voting period | 48 hours |
| Quorum | 20 % of non-exiled supply |
| Pass threshold | more than 66 % yes of votes cast |
| Votes per address | 1, final |
| Who can finalize | Anyone, after 48 hours |
Next: Exile.