Try   HackMD

Protocol Governance

tags: Overview Governance

Overview

Firechain uses a protocol-based voting mechanism for governance. There are two voting categories: global voting and delegated voting. The weighting of an account's vote is based on the amount of $FIRE held at the time of the vote, and weighting is applied to all elections for members of the global consensus group. Delegated voting is a more involved form of governance that's designed for use by smart contracts. For example, when a contract is deployed, it can designate a certain token whose holders can elect one or more specific nodes, or a specific consensus group, to process and validate the contract's responses.

In addition to the "sealing" of account-level transactions through reference in global blocks, the global consensus group are responsible for performing breaking upgrades at the global level of the Firechain network.

Definitions:

  • Super nodes are members of the global consensus group which are responsible for producing global blocks.
  • Delegate nodes are part of a delegated consensus group and are tasked with producing blocks for delegated accounts (e.g. contracts and EOAs that opt-in).

Voting

For each delegated consensus group, each account can vote for one node. This is done by sending a vote transaction to the protocol's built-in governance contract with a consensus group ID and the node's identifier. After the corresponding response transaction is confirmed by global chain, voting is successfully completed.

Votes are calculated every cycle (1,152 rounds ≈ 24 hours), and users can vote as often as they'd like. The nodes that will serve active consensus roles for next cycle are elected based on the standing vote tally at the moment the prior cycle ends. Votes can be rescinded or cancelled at any time simply by sending a cancel transaction. This design allows for a dynamic consensus layer with immediate feedback: nodes that misbehave get voted out quickly, and good behavior is implicitly rewarded through re-election.

FAQ

Can I vote for multiple super nodes in the global consensus group at the same time?

Each account can only cast one vote for per consensus group per round. In other words, you can cast a vote for one super node in the global group, plus one per delegate group.

If the delegate I voted for isn't eligible for whatever reason, what happens to my vote?

If you've voted for a node that either cancels their registration or loses eligibility for any reason, the election algorithm will discard your vote along with any others it may have received. In other words, your vote for that particular node becomes invalid. You are free to cast a vote for another node if you'd like.

If I don't have any FIRE in my wallet, can I still vote?

Voting is just like other Firechain transactions, which is to say it's free and doesn't consume FIRE. That means you can cast a vote even if you have no FIRE. However, super nodes are elected based on the relative weight of the votes cast for them, and 0 FIRE conveys 0 voting weight, so it won't have any bearing on the outcome of an election.

Who votes for delegates in the public consensus group?

Eligible nodes are randomly assigned to participate in the public consensus group from the global consensus pool, which is to say they're implicitly elected to the public group through super node votes. Specifically, 24 of the top 100 super nodes (ranked by eligible votes received) will be randomly assigned to the public consensus group each round.