/
🙋‍♂️
Proposals
Search
Try Notion
🙋‍♂️🙋‍♂️
Proposals
Proposals are a governance process in which selected members of the KIRA Network can modify behaviour of the blockchain application and collectively make various off-chain decisions.
There exist two types of network actors who can take part in voting on governance proposals:
Validators - users who claimed a validator seat and their nodes actively produce new blocks
Councilors - users who are not validators but claimed a councilor seat thus acknowledged responsibility of governing the network
Validators & Councilors together form a governance set. Being part of the governance set does NOT automatically allow for voting on every possible proposal type. Every governance member requires a specific permission assigned in order to have rights to vote on a specific type of proposal. When it comes to creating new proposals, the same rule applies - account is required to have a specific permission enabling it to submit a specific proposals. Permissions can be applied individually to accounts or via roles. More about roles & permissions can be found here.
All governance set member are non-sibil, that means they are identifiable individuals and can NOT be the same person owning multiple kira accounts with different or same governance permissions.
Non-sybil status of governance members is ensured by the governance set itself, this can be called a governance curated governance set. Although governance members do NOT have to be public or KYC'd they must be recognizable as individuals. There are many ways through which governance can ensure that new governance members are indeed individuals, for example by hosting a meeting in person or by having a group call / online meeting.
Voting power of all governance members is always equal. Opposing to governance models where tokens define weight of the individuals vote, in KIRA regardless of the wealth status or token holdings all governance member share the exact same weight of vote. This is done to ensure that stolen tokens or accounts can NOT be used to circumvent expected network operation or otherwise sway governance votes. It is highly important in the case where centralized custodians such as exchanges hold large token positions of their users and thus are able to influence the operation of other networks.
Thanks to roles & permissions model KIRA governance is almost infinitely scalable, allowing for creation of multiple governance sub-councils that can be codependent through checks and balances or any other governance system. By efficient separation of responsibilities between many users KIRA governance is able to simultaneously manage various on-chain parameters, staking interest rates and more.
Voting Rules
Proposals can be passed, rejected or vetoed by governance members with relevant voting permission and in accordance to the following rules:
Only those network actors who are validators or councilors can vote on proposals (Governance actors).
Governance actor can only vote on the specific proposal if he/she has assigned a specific permissions that allow this specific actor to vote on that specific proposal or if said actor has a role containing said permission
Governance actor can only vote on a proposal using only one of four distinct vote types: yes (1)abstain (2)no (3)  or veto (4)
Network actors with different roles (or permissions) might have ability to cast only certain vote types (e.g. validators might be able to cast veto but other governance members not)
Proposal is passed only if MORE then 1/2 (>50%) of all votes were yes votes and quorum of MORE than 1/3 (>33%) of all actors with permissions to vote on a specific proposal voted on said proposal
Proposal is rejected if votes of type different then yes sum to MORE or EQUAL to 1/2 (>=50%) of all votes
Proposal is rejected if MORE or EQUAL to 1/2 (>=50%) of actors who posses veto privileges vote veto (minority with veto power can reject a proposal)
Proposal can't pass, be rejected or vetoed before its expiration time passes. Proposal can't be enacted (take effect) sooner then after the enactment time passes.
During enactment time no votes can be casted. And proposal takes effect only after enactment period ends
NOTE: The minimum quorum percentage is configurable via network properties and can be changed by governance. The recommended safe default is 33%
Vote Types (ref.)
VOTE OPTION
DESCRIPTION
VOTE_OPTION_YES (1)
Councilor agrees with the proposals and wants it to pass successfully.
VOTE_OPTION_ABSTAIN (2)
Councilor has no strong opinion on the proposal, but wants to signify that he took note of the proposal and fulfilled his role as the member of the governance set.
VOTE_OPTION_NO (3)
Councilor disagrees with the proposal and wants to prevent it from passing successfully.
VOTE_OPTION_NO_WITH_VETO (4)
Councilor with minority right to reject (veto) a proposal disagrees with the proposal and wants to prevent it from passing successfully by all means necessary due to safety or other type of concern highly impacting network operations.
Proposal Status Codes (ref.)
STATUS
DESCRIPTION
VOTE_RESULT_UNKNOWN (0)
Result of the proposal is not yet known/defined
VOTE_RESULT_PASSED (1)
Proposal reached quorum, passed successfully, was enacted and took effect
VOTE_RESULT_REJECTED (2)
Proposal reached quorum but did NOT pass by lacking minimum of >50% yes votes
VOTE_RESULT_REJECTED_WITH_VETO (3)
Proposal reached quorum but did NOT pass due to rejection of >50% veto votes
VOTE_PENDING (4)
Proposal is not finalized yet and is still awaiting votes
VOTE_RESULT_QUORUM_NOT_REACHED (5)
Proposal failed to reach quorum and thus was rejected
VOTE_RESULT_ENACTMENT (6)
Proposal was successful but is awaiting enactment time to be passed and thus enforced.
VOTE_RESULT_PASSED_WITH_EXEC_FAIL (7)
Execution of the proposal logic failed with unforeseen exception and no changes were made
NOTE: Enactment time is used to ensure that network participants have time to analyze result of successful proposal and act accordingly without being surprised by the suddenly swayed vote.
Available Proposal Types
Governance Module (ref.)
PROPOSAL TYPE NAME
CREATION PERMISSION
VOTING PERMISSION
DESCRIPTION
WhitelistAccountPermissionProposal
PermWhitelistAccountPermissionProposal (4)
PermVoteWhitelistAccountPermissionProposal (5)
Adds permission to account permissions whitelist
BlacklistAccountPermissionProposal
PermBlacklistAccountPermissionProposal (33)
PermVoteBlacklistAccountPermissionProposal (34)
Adds permission to account permissions blacklist
RemoveWhitelistedAccountPermissionProposal
PermRemoveWhitelistedAccountPermissionProposal (35)
PermVoteRemoveWhitelistedAccountPermissionProposal (36)
Removes permission from account permissions whitelist
RemoveBlacklistedAccountPermissionProposal
PermRemoveBlacklistedAccountPermissionProposal (37)
PermVoteRemoveBlacklistedAccountPermissionProposal (38)
Removes permission from account permissions blacklist
AssignRoleToAccountProposal
PermAssignRoleToAccountProposal (47)
PermVoteAssignRoleToAccountProposal (48)
Assigns role to an individual account
UnassignRoleFromAccountProposal
PermUnassignRoleFromAccountProposal (49)
PermVoteUnassignRoleFromAccountProposal (50)
Takes role away from an individual account
CreateRoleProposal
PermCreateRoleProposal (22)
PermVoteCreateRoleProposal (23)
Allows for creation and modification of network roles
RemoveRoleProposal
PermRemoveRoleProposal (51)
PermVoteRemoveRoleProposal (52)
Allows for deletion of existing network roles
WhitelistRolePermissionProposal
PermWhitelistRolePermissionProposal (39)
PermVoteWhitelistRolePermissionProposal (40)
Adds permission to role permissions whitelist (permission grouping within single role)
BlacklistRolePermissionProposal
PermBlacklistRolePermissionProposal (41)
PermVoteBlacklistRolePermissionProposal (42)
Adds permission to role permissions blacklist (permission grouping within single role)
RemoveWhitelistedRolePermissionProposal
PermRemoveWhitelistedRolePermissionProposal (43)
PermVoteRemoveWhitelistedRolePermissionProposal (44)
Removes permission from role permissions whitelist
RemoveBlacklistedRolePermissionProposal
PermRemoveBlacklistedRolePermissionProposal (45)
PermVoteRemoveBlacklistedRolePermissionProposal (46)
Removes permission from role permissions blacklist
SetNetworkProperty
PermCreateSetNetworkPropertyProposal (12)
PermVoteSetNetworkPropertyProposal (13)
Allows modification of network properties
UpsertDataRegistry
PermCreateUpsertDataRegistryProposal (10)
PermVoteUpsertDataRegistryProposal (11)
Allows modification of the data registry content
SetPoorNetworkMessages
PermCreateSetPoorNetworkMessagesProposal (16)
PermVoteSetPoorNetworkMessagesProposal (17)
Allows modification of network behaviour during poor network conditions
SetProposalDurationsProposal
PermCreateSetProposalDurationProposal (31)
PermVoteSetProposalDurationProposal (32)
Allows to define duration time of individual proposals. If not defined default value by the Network Properties is used
Upgrade Module (ref.)
PROPOSAL TYPE NAME
CREATION PERMISSION
VOTING PERMISSION
DESCRIPTION
SoftwareUpgrade
PermCreateSoftwareUpgradeProposal (28)
PermVoteSoftwareUpgradeProposal (29)
Allows to propose a new upgrade plan
CancelSoftwareUpgrade
TBD
TBD
Allows to cancel already passed upgrade plan
Slashing Module (ref.)
PROPOSAL TYPE NAME
CREATION PERMISSION
VOTING PERMISSION
DESCRIPTION
ResetWholeValidatorRank
PermCreateResetWholeValidatorRankProposal (26)
PermVoteResetWholeValidatorRankProposal (27)
Allows to clear ranks of all validators
SlashValidatorProposal
PermCreateSlashValidatorProposal (57)
PermVoteSlashValidatorProposal (58)
Create a proposal to slash multistaking pool created by double signed validator
Staking Module (ref.)
PROPOSAL TYPE NAME
CREATION PERMISSION
VOTING PERMISSION
DESCRIPTION
UnjailValidator
PermCreateUnjailValidatorProposal (20)
PermVoteUnjailValidatorProposal (21)
Allows to unjail validator that commited double-signing fault
Tokens Module (ref.)
PROPOSAL TYPE NAME
CREATION PERMISSION
VOTING PERMISSION
DESCRIPTION
UpsertTokenAlias
PermCreateUpsertTokenAliasProposal (14)
PermVoteUpsertTokenAliasProposal (15)
Allows to assign metadata to various tokens available on the network
UpsertTokenRates
PermCreateUpsertTokenRateProposal (18)
PermVoteUpsertTokenRateProposal (19)
Allows to assign exchange rates of foreign tokens used in fee payment calculations
TokensWhiteBlackChange
PermCreateTokensWhiteBlackChangeProposal (24)
PermVoteTokensWhiteBlackChangeProposal (25)
Allows to curate blacklist/whitelist of tokens on the network
NOTE: Proposals can be raised using via CLI sekaid tx customgov proposals command. The --help flag can be used to discover further options. To raise a certain proposal a dedicated permission is required. For example to submit SetProposalDurationsProposalType message a PermCreateSetProposalDurationProposal (31) permission must be assigned to the account creating said proposal. For example to vote on the SetProposalDurationsProposalType a PermVoteSetProposalDurationProposal (32) is needed.
Commands Examples
Proposals Duration Change
# CLI sekaid tx customgov proposal set-proposal-durations-proposal "$PROPOSALS" "$DURATIONS" \ --title="Update proposals duration " --description="Set durations of '[$PROPOSALS]' to '[$DURATIONS]' seconds" && \ --from=$ACCOUNT --keyring-backend=test --home=$SEKAID_HOME --chain-id=testing --fees=1000ukex --yes # KM # e.g.: setProposalsDurations <account> <comma-separated-proposals> <comma-separated-durations-in-seconds> setProposalsDurations validator "UpsertDataRegistry,SetNetworkProperty" "300,360"
Bash
Query Proposals
# CLI sekaid query customgov proposals --limit=1000000000 --output=json --home=$SEKAID_HOME | jq # KM showProposals
Bash
Vote On Proposal
# CLI sekaid tx customgov proposal vote $PROPOSAL_ID $VOTE_TYPE --from=$ACCOUNT --chain-id=$NETWORK_NAME \ --keyring-backend=test --fees=100ukex --yes --log_format=json --broadcast-mode=async --output=json # KM voteYes 668 validator voteNo 668 validator
Bash
Query Proposals Durations
# CLI sekaid query customgov all-proposal-durations --output=json --home=$SEKAID_HOME | jq # KM showProposalsDurations
Bash