iotxplorer.education

Open source guides and documentation for the IoTeX network

Github

Voting and Delegating

Voter's Handbook


IoTeX Delegate Program Overview
What is the role of a Voter?

IoTeX is a digital democracy where token holders vote for Delegates to maintain and grow the network.

The top 36 voted delegates are Consensus Delegates that manage consensus on behalf of the entire IoTeX network and so are responsible for:

  • Maintaining servers and network
  • Creating and validating blocks
  • Processing smart contracts and transactions

How to become a Voter?

Any token holder who stakes IOTX and votes for an IoTeX delegate is a "Voter". A delegate is someone who stakes over 1.2 million IOTX and receives over 2 million total votes.

Voter Requirements

Voters have 3 requirements:

  1. Delegates website
    • Voters will use the IoTeX delegates website to view all delegate candidates and vote
    • There is a smart contract integrated into the website which voters must use to access the MetaMask web tool
  2. MetaMask webtool
    • Install MetaMask - it is the bridge between your wallet and the IoTeX voting smart contract
  3. IOTX tokens
    • To stake/vote, you will need IoTeX ERC-20 tokens (IOTX) which you can purchase on exchanges

Staking

There are two concepts that voters need to be aware of:

  1. Staking IOTX to generate voting power
    • Token holders stake IOTX tokens to get votes. 1 IOTX = 1 Vote
    • Setting a stake duration generates bonus votes based on the formula Bonues votes = log1.2*(Stake duration)
  2. Auto-staking to maintain bonus votes
    • Bonus votes will reduce over time if not auto-staked. They diminish every day and trend towards 0 at the end of the stake duration. To maintain bonus votes (i.e. no dimishing bonuses), you can auto-stake for a specific duration.

Voting

To vote for a delegate, you must use a voting smart contract. One wallet can create multiple "buckets" which means you can vote for multiple delegates. One bucket per delegate.

You can redirect your votes to a new delegate and extend your stake duration at any time.

If you don't set a stake duration, you can unstake at any time, but you won't receive any bonus voting power.

Ranking

Delegates are rank-ordered in real time based on their total votes

A Delegate’s total votes includes votes for oneself (self-stake) and votes from other token holders.

The top 36 voted Delegates are the Consensus Delegates for the current epoch, and of these 36, 24 are randomly

Rewards for Delegates

Delegates are rewarded in IOTX tokens every epoch

Rewards are distributed from the rewards pool, consisting of:

  • Reserved mining tokens (1.2 million IOTX)
  • Transaction fees (all gas fees from IoTeX network transactions)
  • Other contributions (donations from IoTeX foundation or other parties)

Rewards for Voters

Rewards for voters will vary based upon which delegate the voter has voted for.

Generally, delegates will split their delegate rewards into roughly 3 sections:

  • Hardware/infrastructure costs
  • Community/development funds
  • Rewards for voters

For iotxplorer in particular, we have pledged to give 87% of all our reward bonuses to our voters. The majority of the remaining funds will be spent on dApp development and adding value to the network, and some will be used to cover hardware costs.

How to Vote


Voting is easy! There are two ways to vote, both of which will be outlined here. Which method you use depends on whether or not you have already voted for someone else (so, voting using an existing bucket), or if you're a completely new voter (voting using a new bucket).

Vote using an existing bucket

  1. Login to MetaMask and visit the "My Votes" page on the voting website. You will see your existing buckets. If you have no existing buckets, go to the “Vote using a new bucket” section below.


  2. To vote using an existing bucket, click the “Vote Now!” button.

  3. A popup window will appear. In the Name field, enter the Candidate Name of the delegate you want to vote for and press “OK”. Note Candidate Name and delegate name aren't always the same. For example, our delegate name is "iotxplorer" but our Candidate Name is "iotxplorerio"

  4. You will need to confirm a smart contract transaction in the MetaMask popup window. If a popup does not appear, please check your MetaMask plugin / txn queue. Ignore the “ALERT: Transaction Error” and press “Confirm”.

  5. Note, you do not have to adjust the gas fees, but it can save you some ETH if you do. Check at the end of this article for our recommended gas fees!
  6. Wait for the smart contract to process — once confirmed, you are all done! Visit the “My Votes” page after a minute or so to see your new vote.


Vote using a new bucket

  1. Visit the voting website. Next to the delegate you want to vote for, click the “Vote” button. You will be asked to install MetaMask before voting.

  2. A popup window will appear. Fill out the form as followed:
    • Enter their Candidate Name. Note, the delegate name may not be the same as their Candidate name, for example ours is iotxplorer but our Candidate Name is "iotxplorerio".
    • Input the amount of IOTX you wish to stake (1 IOTX = 1 Vote).
    • Set a stake duration to get bonus votes (optional).
    • Turn auto-stake on/off (optional). Setting a duration and turning auto-stake on gets your more rewards.

  3. You will be prompted to review and confirm the voting transaction details. Click “Yes, make transaction” to confirm after you've double-checked everything.

  4. You will need to confirm two smart contract transactions in two MetaMask pop-up windows. If pop-ups do not appear, please check your MetaMask plugin / txn queue.
    • Smart Contract #1 (left): Approve the staking smart contract to transfer tokens from your wallet to the smart contract
    • Smart Contract #2 (right): Confirm the actual smart contract transaction — please ignore the “ALERT: Transaction Error” dialog.

  5. Congratulations! You have successfully voted. Well done for playing your part in securing the IoTeX network.

RECOMMENDED GAS LIMITS:

  • Vote/Stake:
    • 1st window (approve): 50,000
    • 2nd window (process): 350,000
  • Re-stake: (extend duration or turn auto-stake on/off): 200,000