UserVote — Your Word-Game Ballot¶
One-line pitch: UserVote is the struct that holds your vote and submission count for a word-game round. One vote per round; resets every round.
What this is¶
When you participate in the word-game mini-mode, two pieces of state about you get tracked in a single UserVote struct:
- Vote — the ACRONYM Id you voted for.
- Submissions — how many phrases you've submitted this round (capped at 255).
- Round — which round this vote applies to.
When a new round begins, the Round field lets the game tell "this is a stale vote, ignore it" — old votes don't leak into new rounds.
Like ACRONYM, this is a data shape (struct), not a contract.
If you've played a web3 game before¶
- Closest analogy: a per-epoch ballot — your vote only counts for this epoch; next epoch gets a fresh vote.
- Or: Snapshot proposals with round-scoped voting power.
- Or: a per-round rate limit — "you can do this N times this round, then nothing until reset."
| Dysnomia term | What it maps to |
|---|---|
| UserVote | Struct storing your per-round voting state |
| Vote | The ACRONYM.Id you voted for |
| Submissions | Count of phrases you submitted this round (max 255) |
| Round | Round number this state belongs to |
What you actually do with it¶
- Submit phrases — each submission bumps
Submissions++. - Vote for a favorite — sets
Vote = someAcronymIdandRound = currentRound. - When a new round starts — your old
Roundno longer matches; the field is effectively reset without needing a zero-write.
Rewards / costs¶
- Cost: gas per submission + vote.
- Reward: if your vote wins or your submission wins, rewards (game-logic dependent).
Requirements & gating¶
- You need a Soul (player ID) — votes are tracked per Soul, not per wallet.
- Submission cap (commonly 3 per round) enforced by the game contract.
Where it connects¶
Tracks votes for ACRONYM entries. Uses your Soul (via LAU's USER record) as the key. Consumed by whatever contract implements the word-game round logic.
Quick FAQ¶
Q: Can I change my vote within a round? A: Depends on game rules — typically once your Vote is set for the current Round, it's locked for that round.
Q: What happens to my UserVote across rounds?
A: The storage slot stays, but since Round no longer matches currentRound, the old values are ignored. New vote overwrites.
Q: Why uint8 on Submissions?
A: No one's submitting more than 255 phrases a round — uint8 saves gas.
Want the Solidity? The contract reference lives at
technical/docs/include/USERVOTE.md.