Protocol
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_type that identifies the type and instance of the thing being voted on
  • A single account_update_operation updates all of an account's votes atomically
  • Votes take effect at the next maintenance interval — they are not applied in real time

Vote Types

TypeWhat It Elects
witnessBlock producers
committeeNetwork parameter managers
workerBudget 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_account in account_update_operation to 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_account back 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

OperationDescriptionFee
account_update_operationUpdate the votes set and/or voting_account in account optionsProtocol fee