Voting & Staking

Any user can become a voter by buying and staking KonaTokens and then voting in the Voting State.

Staking

Users can stake and unstake at any time with those function in the KonaStaking contract:

  • stake: This function takes the amount you want to stake.
  • unstake: This function takes the amount you want to unstake. If you already voted you can only unstake the amount that is left after accounting the pool you voted for most

To simplify you can call:

  • getUnstakeable: this function will return how many tokens you can unstake

To understand the amount you can unstake let's think about a little scenario:

Let's say you have 100 KonaTokens staked

You voted 40 for Oracles in Pool A and 20 for Oracles in Pool B

Now you got 60 KonaTokens that you can unstake (100-40)

Voting

Voting is pretty simple but we have few specifics that you should keep in mind. Most importantly, each pool has it's own universe, which means your whole stake can be used to vote for each pool. So if you have 100 KonaTokens staked you can vote 100 for Pool A and 100 for Pool B.

The functions you can use to vote are

  • vote: this function takes one exact Oracle in a Pool that you need to specify and the amount you want to allocate in the vote
  • batchVote: this function can take multiple Oracles in a Pool and amount that you can choose