Skip to content

Commit

Permalink
Generalising article to include IOTA (#1257)
Browse files Browse the repository at this point in the history
  • Loading branch information
Phyloiota authored Oct 19, 2023
1 parent 50439a3 commit f114181
Showing 1 changed file with 34 additions and 32 deletions.
66 changes: 34 additions & 32 deletions docs/learn/governance/governance-tech.md
Original file line number Diff line number Diff line change
@@ -1,36 +1,37 @@
---
title: Governance Voting in Shimmer Explained
description: A technical description of the Governance functionality in Shimmer
title: Governance Voting Explained
description: A technical description of the Governance functionality in IOTA & Shimmer
image: /img/learn/governance/vote-graphic04.png
keywords:
- Documentation
- Firefly
- Hornet INX
- Voting
- Shimmer
- IOTA
- Governance
---

On-chain governance is essential for any decentralized DLT. The ability to make decisions through voting functionalities executed on the Blockchain / DAG removes a centralization point and gives token holders the power to make their own decisions. With Shimmer's Firefly Wallet, Shimmer token holders can now participate in the governance of the network.
With the support of the IOTA Foundation, the Shimmer community has developed a highly flexible and secure system for casting votes directly on the Shimmer Tangle
through the Firefly Wallet and counting the votes in the network’s Hornet nodes.
On-chain governance is essential for any decentralized DLT. The ability to make decisions through voting functionalities executed on the Blockchain / DAG removes a centralization point and gives token holders the power to make their own decisions. IOTA and Shimmer token holders can now engage in governance with the Firefly Wallet.
With the support of the IOTA Foundation, the community has developed a highly flexible and secure system for casting votes directly on the Tangle
through the Firefly Wallet while votes are counted in the network’s Hornet nodes.

## Voting Phase

The Voting phase of a governance vote is divided into four stages:

- **1. Proposal announcement:** Upon publishing the voting ballot to the [GitHub repository](https://github.com/iota-community/Shimmer-governance-participation-events), [Hornet](/hornet/welcome) node operators can activate the voting ballot in their nodes’ Participation Plugin to be prepared to count any votes that are cast.
- **2. Voting Open:** The Voting Open stage lasts seven days and starts when a predefined milestone in the Shimmer network is reached. After the network has passed this milestone, users can cast, change, revoke, or redo the vote using the governance functionality of the Shimmer Firefly wallet. It's important to note that changes of opinion during this timeframe will not affect the final vote count. Ideally, voters should cast their votes before the next stage begins to ensure the highest possible vote count.
- **3. Counting Start:** This directly follows the Voting Open stage. The node software counts the user's vote, which gains weight with increasing holding time at every milestone passed (a milestone is issued every five seconds). If the voter holds their vote for the predefined number of milestones, the voter will reach 100% of the possible votes related to their voting power (i.e. the number of tokens they have used in the vote). If users change their vote in this stage, the participation plugin updates these changes from the time when they were made. However, the previously counted votes are still valid and do not change, even if the voter’s opinion or voting power changes (examples are provided below for clarification).
- **1. Proposal announcement:** Upon publishing the voting ballot to the [GitHub repository](https://github.com/iota-community/governance-participation-events), [Hornet](/hornet/welcome) node operators can activate the voting ballot in their nodes’ Participation Plugin to be prepared to count any votes that are cast.
- **2. Voting Open:** The Voting Open stage lasts seven days and starts when a predefined milestone in the network is reached. After the network has passed this milestone, users can cast, change, revoke, or redo the vote using the governance functionality of the Firefly wallet. It's important to note that opinion changes during this timeframe will not affect the final vote count. Ideally, voters should vote before the next stage begins to ensure the highest possible vote count.
- **3. Counting Start:** This directly follows the Voting Open stage. The node software counts the user's vote, which gains weight with increasing holding time at every milestone passed (a milestone is issued every five seconds). If the voter holds their vote for the predefined number of milestones, they will reach 100% of the possible votes related to their voting power (i.e., the number of tokens they have used in the vote). If users change their vote in this stage, the participation plugin updates these changes from the time when they were made. However, the previously counted votes are still valid and do not change, even if the voter’s opinion or voting power changes (examples are provided below for clarification).
- **4. Counting Stops:** The accumulation of votes ends. All nodes will now be able to produce and verify the final result of the vote.

### Voting Details

The voting mechanism utilizes Shimmer’s ability to issue value transactions with [attached metadata](/introduction/stardust/explanations/what_is_stardust/output_features#metadata).
The voting mechanism utilizes the protocol's ability to issue value transactions with [attached metadata](/introduction/stardust/explanations/what_is_stardust/output_features#metadata).
To participate in voting, the user must define the amount of SMR tokens that should be used for governance votes, which represents their voting power,
for each wallet associated with their Shimmer Firefly profile.
for each wallet associated with their Firefly profile.
The tokens that represent the voting power will be sent to a new output ([UTXO](/introduction/stardust/explanations/what_is_stardust/rethink_utxo)) at the same address (i.e., the users send the tokens to themselves) using the
`Manage Voting Power` function in the new Governance section of Shimmer Firefly.
`Manage Voting Power` function in the Governance section of Firefly.

This Governance Output to which the tokens are allocated will now be used for all governance votes of this wallet.
The voter can decide to vote on all kinds of governance questions with the allocated voting weight.
Expand All @@ -42,16 +43,16 @@ the tokens will still reside at the same address as before, but now they will ha

:::tip Storage Deposits

If you plan to send, mint, or receive tokens, native assets, or NFTs during the Voting period, you may set aside a small amount of SMR tokens from the vote to cover the required storage deposit for those transfers. You can always free some SMR tokens from the governance votes by simply using the Manage Voting Power function of the Firefly Wallet.
If you plan to send, mint, or receive tokens, native assets, or NFTs during the Voting period, you may set aside a small amount of tokens from the vote to cover the required storage deposit for those transfers. You can always free some tokens from the governance votes by simply using the Manage Voting Power function of the Firefly Wallet.

:::

#### Counting votes

Because every node in the SMR network knows the status of every UTXO in the Tangle, they can observe and register changes to these UTXOs.
As soon as a vote transaction is issued and confirmed, the UTXO will hold a piece of attached metadata information.
Because every node in the network knows the status of every UTXO in the Tangle, they can observe and register changes to these UTXOs.
Once a vote transaction is issued and confirmed, the UTXO will hold a piece of attached metadata information.
Hornet nodes with activated [INX participation plugin](/hornet/2.0/inx-plugins/participation/welcome) monitor the ledger for UTXOs that contain this specific metadata.
They count all UTXOs that have this metadata for every new milestone in the Tangle and create a database for the counted votes of this event.
They count all UTXOs with this metadata for every new milestone in the Tangle and create a database for the counted votes of this event.

This database includes the following information for every milestone:

Expand All @@ -61,13 +62,14 @@ This database includes the following information for every milestone:

### Voting Results

The result will be produced and verified in a decentralized manner through every node that participates in the counting.
The result will be produced and verified decentralized through every node participating in the counting.
Each node can make the current and final result of its counting publicly available through an API endpoint.
After the Counting Start phase begins (which is the milestone in the Tangle that has been designated as the starting point),
the number of votes will be tallied for every milestone where tokens are recognized on a UTXO that has the attached voting metadata.
The community has determined that 1000 Glow (0.001 SMR) represents one vote per milestone.
After the Counting Start phase begins (the milestone in the Tangle that has been designated as the starting point),
the number of votes will be tallied for every milestone where tokens are recognized on a UTXO with the attached voting metadata.
The community has determined that 1000 Glow (0.001 SMR) represents one vote per milestone in Shimmer and 1000 Micros (0.001 IOTA) represents one vote per milestone in IOTA.

Therefore, a vote using an amount of 1 SMR for an option will be counted as follows:
#### Examples for Shimmer (IOTA function is identical):
A vote using an amount of 1 SMR for an option will be counted as follows:

- Since 1000 Glow represents one vote, a vote with one million Glow (equal to 1 SMR) will result in 1000 votes per milestone.
- The counting occurs at every milestone of the “counting period, meaning that:
Expand All @@ -78,16 +80,16 @@ Therefore, a vote using an amount of 1 SMR for an option will be counted as foll
Let's assume that the counting period lasts for 1,500 milestones:
The method described above updates the nodes' voting database every time a new milestone is reached. For instance, if a voter uses 1 SMR token in a vote,
after 10 milestones, they would have gained 10,000 votes.
After 100 milestones, the accumulated votes would be 100,000, and after 1,500 milestones, the total counted votes would reach 1.5 million.
After 100 milestones, the accumulated votes would be 100,000; after 1,500 milestones, the total counted votes would reach 1.5 million.

![Vote counting example](/img/learn/governance/vote_graphic01.png)

This counting mechanism also means that the token's Vote Holding Time greatly influences the result.
Votes gain “weight” based on the length of time they are kept on an address during the counting phase.
This counting mechanism also means that the token's Vote vote-holding time greatly influences the result.
Votes gain “weight” based on the time they are kept on an address during the counting phase.

This is a crucial security feature of the voting mechanism that rewards long-term token holders and punishes voting speculators or vote buyers.
This is a crucial security feature of the voting mechanism that rewards long-term token holders and punishes voting speculators or attempts to buy votes.
This is achieved by requiring voters to lock their capital over a longer period and making any attempt to buy votes a speculative risk
due to the potential volatility of the SMR price during the seven-day counting phase.
due to the potential volatility of the Token price during the seven-day counting phase.

![Hornet vote counting](/img/learn/governance/vote_graphic02.png)

Expand All @@ -109,22 +111,22 @@ This solution ensures that voters always have control over their tokens. The tok

#### Creating and adding new governance events

Shimmer's voting system builds upon IOTA's [first governance vote in 2022](https://blog.iota.org/iota-community-treasury-vote/), with key improvements for a fully decentralized implementation.
In contrast to the earlier voting system developed for the IOTA network, this Shimmer version does not rely on the IOTA Foundation to add governance events to the Firefly wallet. Every community member can:
Our voting system builds upon the principles designed for IOTA's [first governance vote in 2022](https://blog.iota.org/iota-community-treasury-vote/), with key improvements for a more decentralized implementation.
In contrast to the earlier voting system developed, the current version does not rely on the IOTA Foundation to add governance events to the Firefly wallet. Every community member can:

- Create a governance event following the [specifications for participation events](https://github.com/iota-community/treasury/blob/main/specifications/hornet-participation-plugin.md)
- Add this governance event to a Hornet node with the [INX Participation Plugin](/hornet/2.0/inx-plugins/participation/welcome)
- Add this governance event to the Shimmer Firefly wallet by connecting Shimmer Firefly to a node that carries this event and use the [“add event”](./shimmer-firefly-governance-guide.md#6-adding-custom-community-proposals-to-firefly) function in the Governance section
- Vote on this event with SMR tokens
- Add this governance event to the Firefly wallet by connecting the Wallet to a node that carries this event and use the [“add event”](./shimmer-firefly-governance-guide.md#6-adding-custom-community-proposals-to-firefly) function in the Governance section
- Vote on this event with tokens

Community members, projects, or other ecosystem participants are free to create their own governance events and invite the Shimmer token holders to participate in such votes.
Community members, projects, or other ecosystem participants can create governance events and invite the token holders to participate in such votes.

#### Decentralized and community-driven

To summarize, voting in SMR is:
To summarize, voting in IOTA is:

- Free and feeless: A vote is a transaction in the Tangle without fees.
- Decentralized: No one gatekeeps the creation and implementation of governance votes.
- Secure: Just like the Shimmer ledger and every Shimmer transaction.
- Secure: Just like the IOTA ledger and every IOTA transaction.
- Flexible: Users have complete control over their funds.
- Voluntary: No one is forced to vote.

0 comments on commit f114181

Please sign in to comment.