Skip to content

Latest commit

 

History

History
10 lines (8 loc) · 2.19 KB

File metadata and controls

10 lines (8 loc) · 2.19 KB

Domain Model

Target deployment: a single residential complex of roughly 100-150 homes with one committee. The pallet design supports more (the production Merkle-tree depth is 20, sized for ~1M voters), but the UX, election cadence, and quorum defaults are tuned for that scale.

  • Home: the atomic identity and voting unit. One home = one vote. Mapped to one or more Substrate accounts (multi-device). Has a flat number, block assignment, and an encrypted phone number (readable only by the committee). Transferable (committee re-assigns). Revocable by committee.
  • Block: a physical section of the complex (e.g., Block A, Block B). Homes belong to exactly one block. Proposals can be scoped to a block (only that block's homes vote).
  • Committee: privileged set of homes that can: approve/reject membership, create proposals, revoke homes, post tally results. Nominated for a 12-month term (configurable). After the term expires, an election is held: incumbent members can re-nominate. Elections are public (not anonymous): this is a conscious trade-off: in a small community, public accountability for committee selection is valued over coercion resistance. The risk of social pressure on election votes is accepted for MVP. If fewer than N candidates nominate, the committee is smaller than N, but the election remains open until more members step up.
  • Proposal: a decision to vote on. Has: title, IPFS description CID, optional IPFS image CID, deadline (calendar date), scope (all homes or one block), status (open/closed/passed/rejected). Any active home member can create a proposal (not just the committee), subject to a per-member cap on active proposals. The author can withdraw a proposal before any votes have been cast.
  • Vote: anonymous yes/no/abstain ballot. Submitted with a ring VRF proof (proves voter is in the eligible ring) and a per-proposal nullifier (prevents double voting). Individual votes are never attributable. Abstentions count toward quorum but not toward the yes/no tally.
  • Comment: IPFS text CID attached to a proposal. Can be either attributed (linked to the author's home) or anonymous (posted via ring VRF proof, same mechanism as voting). Any active member can comment.