Protocol
SB Core

Proposals

On-chain multi-party approval: creation, review period, veto

The proposal system is SBChain's on-chain governance mechanism for executing operations that require multi-party approval. Any operation — including committee parameter changes, asset updates, and multi-sig transactions — can be submitted as a proposal.

How Proposals Work

  • Any account creates a proposal using proposal_create_operation, specifying the operations to execute and an expiration time
  • Required approvers are notified on-chain
  • Each approver uses proposal_update_operation to add their approval
  • When the approval threshold is met, the proposed operations execute automatically as a virtual transaction
  • If the threshold is not met before expiration, the proposal expires and is discarded

Review Period

Proposals that change global parameters require a mandatory review_period_seconds before they can execute, even if all approvals are collected. This gives the community time to observe and react to pending changes.

Operations

OperationDescriptionFee
proposal_create_operationCreate a new proposal containing one or more operations20 × precision + price_per_kbyte
proposal_update_operationAdd or remove approvals from a proposal20 × precision + price_per_kbyte
proposal_delete_operationVeto and delete a proposal (requires authority on the proposal)1 × precision

Proposal Fields

FieldDescription
fee_paying_accountAccount paying the proposal creation fee
proposed_opsOrdered list of operations to execute if approved
expiration_timeDeadline by which approvals must be collected
review_period_secondsMandatory delay before execution after approvals are met

Nested Proposals

Proposals support arbitrarily complex authority trees. If an approval requires a multi-sig account, a second proposal can be created to collect that multi-sig account's approval, which then adds its approval to the first proposal. This enables approval chains of any depth without off-chain coordination.

Veto

Any account that is a required authority on a proposal can delete it using proposal_delete_operation, permanently preventing execution.