Governance
Last updated
Was this helpful?
Last updated
Was this helpful?
Binance Chain has its own built-in governance module that lets BNB holders submit proposals for adding trade pairs. In order for the proposal to be open for voting, it needs to come with a deposit
that is greater than a parameter called Deposit
. The deposit
need not be provided in its entirety by the submitter. If the initial proposer's deposit
is not sufficient, the proposal enters the deposit_period
status. Then, any BNB holder can increase the deposit by sending a depositTx
. A purely-code-controlled escrow account will be used to hold deposits during voting period. It is a kind of account which is derived from a hard-coded string in binance chain protocol. This kind of account doesn't have its own private key and it's only controlled by code of the protocol. The code for calculating escrow account is the same that is used in cosmos-sdk:
The account for mainnet is: bnb1vu5max8wqn997ayhrrys0drpll2rlz4dh39s3h and the account for testnet is: tbnb1vu5max8wqn997ayhrrys0drpll2rlz4deyv53x. Once the swap is claimed or refunded, the fund will be transferred from the purely-code-controlled escrow account to client accounts.
workflow
min-deposit
: The threshold for submitting a proposal on mainnet is 1000BNB, and the threshold for submitting a proposal on testnet is 2000BNB
deposit_period
: This is a global parameter and the value for mainnet is two days and testnet is two week. It means the time to deposit enough BNB tokens is two days in mainnet and two weeks in testnet.
fee
: Checkout the fee of governance-related transactions here
deposit
: your input must be larger than min-deposit
.
voting-period
: This is the time for validators to vote, your input in seconds, if you omit this field, the default voting period is one week.
expire-time
: This is the time for you to send list transaction if your proposal passed. This time cannot be earlier than current time.
Tools
Please use this tool for generating
You can also use Web Wallet for token management operations.
Submit a List Proposal
To add a new trading pairs, you can run the following command: Please note:
--init-price
is boosted by 1e8 for decimal part, such as 100000000, is 1 BNB
--from
: put your key name for the address / key, you can only list with the owners address of your token.
--expire-time
: expire time is the deadline after which you will no longer be able to list your token though your proposal is passed.
--voting-period
: The voting period is for validators to vote. The unit is in seconds and the default voting period is one week. The max voting period is two weeks. The votes from validators will be tallied after the voting period ends.
--title
: title of proposal
--quote-asset-symbol
: the quote asset symbol. When you first list a BEP2 token on Binance DEX, it has to be put in BNB market first. Thus, you should set quote-asset-symbol
to BNB in your first proposal, then your BEP2 asset can be list against BUSD-BD1 and other stablecoins.
--base-asset-symbol
: the asset symbol you want to list
Please note that the deposit and init-price are boosted by 1e8 for decimal part.
Example on mainnet:
Example on testnet:
As discussed in BEP-70, BUSD is one of the most influential stable coins worldwide and the most dominant stable coin on Binance Chain. BEP2 token issuers can list their assets against BUSD-BD1 without the requirement of creating BNB pair first. Listing and trading BUSD pairs on Binance Chain will facilitate token owners and exchange traders, making the markets more liquid and healthier. BEP70 is already implemented and has been activated after Testnet Nightingale Upgrade. Binance Chain Mainnet will be upgraded to support BEP-70 soon.
In testnet, only validators can make a delist proposal. To add a new delist pairs, a validator can run the following command:
Please note:
--quote-asset-symbol
: the quote asset symbol
--base-asset-symbol
: the asset symbol you want to delist
--from
: put your key name for the address key, you can only list with the owners address of your token.
--voting-period
: The voting period is for validators to vote. The unit is in seconds and the default voting period is one week. The max voting period is two weeks. The votes from validators will be tallied after the voting period ends.
--justification
: reason for proposal
--depodit
: this field will indicate how much tokens will be used as deposit for this proposal. Governance module will transfer deposit tokens to a purely-code-controlled escrow account and before the lock time expires. The account for mainnet is:bnb1vu5max8wqn997ayhrrys0drpll2rlz4dh39s3h and the account for testnet is: tbnb1vu5max8wqn997ayhrrys0drpll2rlz4deyv53x
Example on mainnet:
Example on testnet:
If the initial deposit for your proposal in submit-list-proposal
is not enough, you can increase the deposit with deposit
operation. In current Binance Chain Mainnet, the max deposit period is two days. After submitting a proposal, you have two days to increase your deposit, otherwise your proposal will not go into the voting period and gets rejected directly.
Please note the amount is boosted by 1e8 for decimal part.
Example on mainnet:
Example on testnet:
To see detailed information of specific proposal, you can run the following command:
Example on mainnet:
Example on testnet:
Example output:
You can get the information about the proposal's status and its tally result this way.
You can track the votes for your proposal with the following command:
Example on mainnet:
Example on testnet:
Example output:
There are four vote options: - Yes
- No
- NoWithVeto
- Abstain
No
represents the validator is against this proposal and NoWithVeto
suggests the validator is strongly against this proposal. Abstain
option allows voters to signal that they do not intend to vote in favor or against the proposal but accept the result of the vote.
Quorum is defined as the minimum percentage of voting power that needs to be casted on a proposal for the result to be valid, which is 0.5(50%) now.
If voting power does not reach quorum at the end of the voting period, the proposal will be rejected and all deposits will be returned to depositors' addresses.
Note: There is a special case when all votes are Abstain
and voting power is superior to 50%, the proposal will be rejected and all deposits will be refunded.
Veto is defined as the minimum proportion of NoWithVeto
votes for the proposal to be rejected, which is 0.334(1/3) now. If more than 1/3 voters veto, the proposal will be rejected and all deposits will be distributed to validator.
Threshold is defined as the minimum proportion of Yes
votes (excluding Abstain
votes) for the proposal to be accepted, which is 0.5(50%) now.
If the proportion of NoWithVeto
votes is inferior to 1/3 and the proportion of Yes
votes (excluding Abstain
votes) is superior to 50%, the proposal will be accepted and all deposits will be returned. Otherwise, the proposal will be rejected and all deposits will be distributed to validator.
You can query a proposal via bnbcli
.
You can get tally result
and proposal_status
.
For options in tally result
:
yes
denotes voting power votes Yes
abstain
denotes voting power votes Abstain
no
denotes voting power votes No
no_with_veto
denotes voting power votes NoWithVeto
total
denotes total voting power when voting period ends
We can calculate proportion of each vote option easily. In this case, total voting power is 1100000000000 and voting power of Yes
is 1100000000000, so the proportion of Yes
is 100% and the proposal should be passed and and your deposit will be returned.
Note: Trying to query proposal that didn't enter the voting period will result in error
.