SB Core
Voting
Stake-weighted on-chain voting: delegation, maintenance interval, vote ID format
Every SBChain token holder can participate in governance by voting. Votes are stake-weighted — one token equals one unit of voting power for each supported vote type.
How Voting Works
- Votes are stored in the voter's account object under
options.votes - Each vote is a
vote_id_typethat identifies the type and instance of the thing being voted on - A single
account_update_operationupdates all of an account's votes atomically - Votes take effect at the next maintenance interval — they are not applied in real time
Vote Types
| Type | What It Elects |
|---|---|
| witness | Block producers |
| committee | Network parameter managers |
| worker | Budget recipients from the reserve pool |
Vote ID Format
Votes are encoded as type:instance strings on-chain (e.g. 1:0 = witness instance 0).
- Lower 8 bits = vote type (0 = committee, 1 = witness, 2 = worker)
- Upper 24 bits = object instance number
Vote Delegation
A token holder can delegate their voting power to another account without transferring funds.
- Set
options.voting_accountinaccount_update_operationto the delegate's account ID - The delegate's votes are applied on behalf of the delegating account
- The delegating account retains full control of its funds — only voting authority is delegated
- Delegation can be revoked at any time by setting
voting_accountback to the holder's own account
Maintenance Interval
- Votes are tallied at each maintenance interval (governance configurable, typically every 24 hours)
- The top-voted witnesses, committee members, and workers become active after each tally
- A witness or committee member that falls out of the top set loses their active role at the next maintenance interval
Voting Operations
| Operation | Description | Fee |
|---|---|---|
| account_update_operation | Update the votes set and/or voting_account in account options | Protocol fee |