Status Quo and Next Steps of IOTA's First Community Vote
What happened so far
During last year’s Chrysalis network upgrade, the IOTA Foundation asked the IOTA community to decide on the further use of more than 50 Ti (Tera-Iota) of unclaimed IOTA tokens. The tokens had been left unclaimed during earlier claiming periods following the mainnet launch of the IOTA project in early 2016 and after a signature and token supply scheme change in mid 2016.
Because these IOTA tokens had not been claimed by anyone, and the period in which these claims could have been made has expired, the question remains: What should be done with them? In the past years, tokens have been sent to legitimate claimants even after the final deadline for claims had passed. Nevertheless, some initial token purchasers seem to have stopped following IOTA's development after the mainnet launch in 2016, or perhaps have forgotten about their initial token acquisition. The same applies to unclaimed tokens resulting from a token supply change and the change of the IOTA signature scheme a couple of months later.
After many years of uncertainty, IOTA token holders now have the opportunity to vote and decide what should happen to these unclaimed tokens. The IOTA Foundation believes that these tokens do not belong to a single person or entity, including the IOTA Foundation itself and anyone holding IOTA tokens should have a say in deciding what should happen to these unclaimed tokens.
Driven by the opportunity to help shape this meaningful decision, members of the IOTA community organized themselves into a loose working group. They discussed how to approach what has since been called the “IOTA treasury vote”. This group of community members played a leading role in the decision-making process and contributed research, discussions, and regular meetings over the past nine months to the treasury vote project.
The ongoing discussions and debates are continuing on the IOTA Discord in the following channels:
Reddit users have also had the chance to participate in the Treasury Governance info thread. Everyone is invited to join, contribute and read up on what has happened so far.
The IOTA Discord general voice channel was used for regular community meetings, and at times it was attended by up to several hundred listeners and participants. IOTA community members discussed possible solutions and ways to decide what should happen to the unclaimed IOTA tokens. Potential use cases and the advantages and disadvantages of taking control of the tokens were discussed and evaluated.
The first public call happened on 12th June, 2021. Since that date, meetings have happened on a weekly and bi-weekly basis, always on Thursdays at 2pm UTC.
All IOTA community members who participated in the discussions came to a consensus on how to proceed and agreed that the IOTA community should make a decision using a token-based voting mechanism.
We are delighted to see that so many IOTA community members actively participated in this process. It illustrates the broad interest in this topic and gives us confidence that the IOTA community will use the upcoming treasury vote to state their opinion and shape the future of the IOTA project and its surrounding ecosystem.
Cast your vote: What should happen to the unclaimed IOTA tokens?
All IOTA token holders will be able to cast their vote for one of two choices:
- Build: The unclaimed tokens will be used to support and fund projects and initiatives that are important to the IOTA community ecosystem via future votes. These funds will be fully governed by the community.
- Burn: The unclaimed tokens will be removed from the IOTA ledger and the total supply will be reduced by the number of tokens held in the unclaimed treasury pool.
First, IOTA token holders decide between the two options, Build or Burn. The outcome of the vote distinguishes which one of the following scenarios should be followed.
If the IOTA token holders vote for “Burn”, an active process of removing these tokens from the output of the unmigrated IOTA token pool will have to be collectively performed by the node operators. This will effectively remove the unclaimed IOTA tokens from the total token supply. By performing this action, all node operators ensure that the unclaimed IOTA tokens are removed from the ledger and can never be accessed or recreated.
If the outcome of the treasury vote is “Build”, it will start a community-driven development process that enables the IOTA community to decide the next steps in creating a governance system via follow-up votes. The tokens will not be automatically released after the initial vote. First, the community would need to determine what governance system should be built to control token ownership. After building this governance system, it would be up to the community to govern the usage of the IOTA tokens.
Once a community-driven governance system has been developed, audited, and tested, the node operators will need to update the node software to include the unclaimed IOTA tokens in the Chrysalis network and release them into the control of the treasury governance system.
If most of the IOTA token holders decide to choose the “Build” option and a system to govern and control the tokens is created, the members of the treasury initiative envision that the unclaimed IOTA tokens could then be used to support projects and individuals that actively build and participate in the IOTA ecosystem. Support would be enabled through a system of grant proposals and community votes to accept or decline such proposals.
The community members are certain that a community-governed DAO (decentralized autonomous organization) that controls the spending of those tokens will lead to increased development activity within the IOTA ecosystem and can enable the independent financing of projects beyond the abilities of the current Foundation-managed Ecosystem Development Fund. Furthermore, this newly available grant-funding mechanism could incentivize individuals to build products using IOTA technology. Last but not least, it could also become a tool to reward community contributions to the IOTA project and its community.
IOTA community members have envisioned that a possible solution to guarantee decentralized governance over the IOTA tokens could be to form an organization including a legal entity that controls and takes decisions on the use of said tokens.
A community-established DAO would provide voting and proposal mechanisms to fund the IOTA ecosystem and community projects in a truly decentralized fashion. A system based on IOTA smart contracts, controlled and executed through community votes, could then control the distribution of the treasury funds to projects that the IOTA community wants to support.
Challenges the voting mechanism of this first vote faces
During the community discussions, it became clear that allocating voting power based on the amount of tokens owned by an IOTA holder is currently the only way to offer the fairness and protection needed against malicious attempts to influence the voting outcome of such a crucial decision.
One of the threats faced by every voting mechanism is a Sybill attack: Every DLT network strives to solve this problem (see this survey of solutions for reference). The same applies to the IOTA Treasury vote. In a permissionless system without verifiable voter identities, this challenge can only be overcome by the network’s consensus mechanism.
The option of allowing every IOTA community member one vote instead of token-based voting was also discussed. In view of this, the group extensively deliberated on how to define and identify a community member. The core problem arises from the IOTA community's anonymous and distributed nature (as is the case in most crypto projects). It isn't easy to define who is part of the IOTA community when you can’t uniquely identify a single person without revealing all private data and verifying it through government-issued documents.
As the IOTA community members are spread across the globe and are primarily pseudonymous or anonymous, they can hardly be registered for a vote. It is also not possible to guarantee the means to hinder a single anonymous person from creating thousands of digital IOTA identities to increase their voting power in a “one person, one vote” system (see research by Vitalik Buterin on that topic here). In the future, this may be solved by the IOTA Identity Framework, but that is not yet available for this particular use case.
Even with extensive Know Your Customer (KYC) processes, a worldwide unique voter registration seems to remain unachievable. The only element in IOTA’s network effectively protected against Sybil attacks is the IOTA token itself. It is largely available and therefore qualifies as the ideal tool for such an important decision.
As it is impossible in a vote to use more IOTA tokens than you own, the treasury initiative came to the conclusion that using a token-based vote mechanism is the best option in this case. Following this, the initiative progressed towards developing a voting application for the first IOTA community vote.
As a result, the treasury initiative has defined a user-friendly and secure voting system based on the IOTA Tangle. Using the Firefly wallet to execute the voting and a newly developed and community-run IOTA Treasury website to inform voters, the system will enable every IOTA token holder to easily cast their vote in the upcoming decision.
How the token-based voting mechanism has been defined
Several community members have dedicated their spare time to extensively researching the governance and voting mechanisms of other DLT projects. These core contributors compared and discussed possible technical solutions within the IOTA protocol and developed detailed specifications for the new voting mechanism.
To support these community developers, the IOTA Foundation offered technical knowledge wherever requested. This enabled group members to start building the envisioned system and the tools needed to move towards the first case of decentralized decision-making in the history of the IOTA community.
Finally, a core team of dedicated and experienced community developers supported by IOTA Foundation engineers has come together to drive the software’s development and build the following tools as part of the voting mechanism:
- A community Treasury website displays all necessary information and allows to initiate the voting process directly from within this website.
- The upgraded Firefly wallet with voting functionalities guarantees token holders an excellent user experience and a safe option to cast their vote (built by the IOTA Foundation Firefly Team following the community proposal)
- A new Hornet node plugin for node maintainers to count votes, produce and verify the result of the vote (built by the Hornet node developers following the proposal)
- A GitHub Repository to publish, verify and release the referendum to the Treasury website and the Hornet nodes.
Voting process phases
The voting process will be divided into three phases:
- Proposal announcement: Upon publishing the voting ballot to the GitHub Repository and uploading it onto the Treasury website, the Hornet node operators can activate the voting ballot in their nodes to be prepared to count any votes that are cast.
- Voting open (seven days): The “voting open” phase starts when a predefined milestone in the IOTA network is reached. After the network has passed this milestone, users are free to cast their votes, change their opinions, and revoke, change or redo the vote using the Firefly wallet's voting functionality. Changes of opinion during this time frame will not influence the final vote count. Ideally, voters cast their votes before entering the next “counting start” phase to reach the maximum possible votes.
- Counting start (10 days): This phase follows directly after the “voting open” phase. The user's declared vote is now counted by the node software and starts to gain weight with increasing holding time with every passing milestone (one milestone is issued every 10 seconds in the network). If the user manages to hold the vote for the predefined number of milestones, the voter will reach 100% of the possible votes related to the number of tokens used in a vote. If users change their vote in this phase, the newly declared opinion starts counting votes from the point in time where it was changed. Although the opinion of the voter has changed, the previous opinion is not dismissed and the already gained and counted votes stay valid (see examples further below).
The chosen voting mechanism makes use of IOTA’s capability to issue value transactions with attached metadata. In a vote, the tokens residing on an address (and specifically the unspent transaction outputs (UTXO) on the Tangle) will be sent in a transaction in which the sender and receiver address of the transaction is identical (in other words, you are sending the tokens to yourself). During this transaction, the metadata (ballot event ID, voter opinion ID: Build or Burn) will be attached and therefore immutably written onto the UTXOs of this address in the IOTA Tangle. So, after the voting transaction, the tokens will still reside at the same address as before, but will now have attached information that represents the opinion of the voter for the referendum.
As every node in the IOTA network knows the status of every UTXO in the Tangle, the nodes are able to observe and register changes to these UTXOs. As soon as a vote transaction is issued and confirmed, the UTXO now holds a piece of attached metadata information. Hornet nodes that have the Hornet participation plugin activated will observe the ledger for UTXOs that hold this specific metadata (the vote event ID) attached. They will count all UTXOs with this metadata for every new milestone that appears in the Tangle and create a database for the counted votes. This database contains the following information stored for every milestone:
- Every UTXO ID that contains the event ID of the vote.
- The voter opinion ID that is written to this UTXO.
- The number of tokens residing on the UTXO at a milestone.
The result will be produced and verified in a decentralized fashion through every node that participates in the counting. Every node can make the current and final result of its counting publicly available over an API endpoint.
Following the commencement of the “counting start” phase (the milestone in the Tangle that has been defined as the starting point), the respective number of votes will be accounted for every milestone where tokens are recognized on a UTXO with the attached voting metadata. The community has defined that 1000 IOTA (1 Ki) represents one vote per milestone.
A vote using an amount of 1 Mi for “Build” will therefore be counted like this:
As 1000 IOTA represents one vote, a vote with one million tokens leads to 1000 votes per milestone. Counting happens every milestone, meaning that:
1000 votes for “Build” counted on the first milestone + 1000 votes for “Build” counted on the second milestone + - 1000 votes for “Build” counted on the third milestone.
Let's look at how this would work for a theoretical counting period of 1500 milestones:
The above-described method adds every time new counted votes into the database when a new milestone arrives. So after 10 milestones, a voter would have gained 10000 votes from 1Mi IOTA tokens used in the vote. Passing 100 milestones, the counted votes would have accumulated 100000 and after 1500 milestones a total amount of 1.5 million votes for “Build” would have been counted for the voter.
This counting mechanism also means that the "vote holding time" for tokens will greatly influence the result. Votes gain “weight” in relation to the length of time they are kept on an address during the counting phase. This is a crucial security feature of the voting mechanism that will reward long term token holders and punish voting “speculators” or “vote buyers” by forcing them to lock capital over a longer period and making any attempt to “buy votes” a speculative risk due to the potential IOTA price volatility in the 10-day counting phase.
Voting weight examples
Let's look at some examples of the possible voting weight based on different variables.
If the counting phase is 10 days and a user has a balance of 100 Miota (Mi) in their Firefly wallet which they use to vote:
- Holding the tokens for the full 10 days of the required counting phase will lead to 100% of the possible votes being attributed.
- Holding the tokens for only seven consecutive days out of a total of 10 days would accumulate only 70% of the maximum possible votes.
- By voting after the counting phase has already started (for example, on day two out of 10 days total) and then not changing the vote following that date the voter would gain 80% of the possible votes added through their 100 Mi.
- Starting the vote at the beginning of the counting phase with "Burn," holding this opinion for three days but then changing to "Build" and holding it for the remaining seven days would result in the following outcome:
- 100 Mi are allocated for three days to "Burn", which means that 30% of the users maximum achievable votes are counted for "Burn".
- Now, changing the vote for the remaining seven days 100 Mi to "Build", which means that the remaining 70% of the users available votes are counted towards "Build".
The implemented technical solution also ensures that voters always have control over their tokens. The tokens never leave the user’s wallet or their original address, nor are they locked or otherwise unusable. Owners are always free to send them elsewhere, revoke their vote or change their opinion, even during the counting phase. The logic follows the same staking rules already familiar to Firefly users.
With this solution, we believe the community initiative has developed a highly flexible, safe, accessible and fair system, representing everything IOTA technology stands for.
Voting in IOTA is:
- Free and feeless: A vote is a transaction in the Tangle and therefore without fees.
- Secure: Just like the IOTA ledger and every IOTA transaction.
- Flexible: Users always have complete control over their funds.
- Voluntary: No one is forced to vote.
It is also important to mention that the voting functionality will not interfere with the staking functionality for Firefly users. Both systems work independently and casting a vote will not involve stopping or restaking an ongoing staking process.
The IOTA Firefly team works hard to ensure the quality and security of the wallet implementation. The UI and UX of the voting system will follow the IOTA Foundation’s standards for usability, and the community development team has asked the Foundation to help out with its expertise. Furthermore, the IOTA Foundation will support the initiative by ensuring that, as with all critical software it develops, all system components will undergo a community test phase and a strict security audit by an external provider.
Status quo of the preparations
- The Hornet participation plugin has already been developed and successfully used by the community in the community-driven Comnet testnet.
- Community developers have created a website with all the information required by voters to understand the process and implications of their choice, including step-by-step tutorials about the voting process on https://iotatreasury.org
- The developments in the Firefly wallet have been undertaken by IOTA’s own Firefly Team based on the ideas of the community, and the new Firefly version containing the voting functionality will soon be released to the closed community testing group
- After a successful test, the final schedule for the vote will be announced.
What you need to do to participate in the vote
- Once the schedule for the vote has been announced, you can download the official release of the new Firefly wallet version containing the new “vote” functionality from the official download page. The IOTA Foundation will publish more information about the wallet prior to the proposal announcement phase mentioned above
- Have your tokens accessible in the Firefly wallet or a Ledger Nano hardware wallet connected to the Firefly wallet. If you hold IOTA tokens on an exchange, you must withdraw your tokens to participate in the vote using the Firefly wallet.
- Wait for the announcement by the IOTA Foundation and the IOTA community about when the vote will take place. Follow the #governance-discussion channel in the IOTA Discord or visit the Treasury website https://iotatreasury.org and follow the Treasury initiative on Twitter @iotatreasury
- Node operators who want to participate in the counting and validating process will need to activate the participation plugin of the Hornet software. They can then add the event to their node in the Hornet dashboard. The official vote event will be published by the IOTA community after it has been independently checked and approved by 10 elected community members. Node operators can access the file after it has been approved.
- Once the schedule for the vote has been determined, it will be communicated through the above-mentioned IOTA community social media channels and will also be announced on the official IOTA Foundation social media accounts.
- With the beginning of the “voting open” phase, token holders can cast their vote directly in the Firefly wallet or through the Treasury website. The voting itself is as easy as staking your IOTA tokens. The website and the wallet will guide you through the voting process.
We want to thank everyone in the community who has taken part in the process so far. We are amazed by the participation and quality that the IOTA community has brought to this important topic. We hope that the IOTA community will continue to leverage these efforts and strengthen the united voice formed in the past few months to develop a system that allows participation and governance for every IOTA community member.
Follow us on our official channels and get the latest news!