vega-frontend-monorepo/specs/1004-ASSO-associate.md
2023-08-07 08:41:25 +01:00

7.2 KiB

Associate and disassociate governance tokens with a Vega key

The Governance token on a Vega network is an ERC20 ethereum token. It has two utilities on Vega,

  • Staking the Proof of stake network,
  • Participating in Governance.

To use the Governance token on a Vega network it first needs to be associated with a Vega key/party. This Vega key can then stake, propose and vote.

The word "associate" is used in some user interfaces, as apposed the word "stake" in function names. Stake can be avoided to prevent users thinking they would get a return only after the staking step. On Vega Staking = Association + Nomination, as in you need to run the "stake " function on Ethereum but then the nominate step on Vega before you get staking income. See Glossary.

Associated tokens also count as vote weight in on-Vega governance (new markets etc), A parties vote weight is backed by the number of Governance tokens associated with that Vega key/party.

Associating tokens to a Vega key is a little like depositing, except, a deposit can only be released by the Vega network, where as an association can be revoked on ethereum by the the eth key that did the association.

Governance tokens may be held by a Vesting contract.

Token discovery

When looking to acquire governance tokens, I...

  • must see the contract address for the governance token of the Vega network 1004-ASSO-001

...so I can participate in governance and staking.

Associate

When looking to stake validators or participate in governance, I first need to associate governance tokens with a Vega wallet/key, I...

  • must connect an Ethereum wallet/key to see tokens it may have in wallet or attributed to it in the vesting contract 1004-ASSO-002
  • must select a Vega key to associate to 1004-ASSO-003
    • must be able use a connected Vega wallet as instead of manually inputting a public key 1004-ASSO-004
    • should be able to populate field with a string, so I can associate to a wallet I without connecting it
  • if the connected ethereum wallet has vesting tokens: must be able to select to associate from either the vesting contract or the wallet (The default should be wallet and the option to use vesting tokens should only appear if there are tokens in a tranche (associated or not)) 1004-ASSO-006
  • must see the number of associated and un-associated tokens in the selected wallet/vesting contract 1004-ASSO-007
  • must select the amount of tokens to associate 1004-ASSO-008
    • must be able to populate the input with the amount of un-associated tokens for the selected wallet/vesting contract 1004-ASSO-009
  • must be warned if the amount being associated is greater than the amount available in the connected ethereum wallet 1004-ASSO-010
  • must submit the association on Ethereum transaction(s) inc ERC20 approval if required 1004-ASSO-011
  • must see feedback whether my association has been registered on Ethereum 1004-ASSO-012
  • must see feedback that the association has been registered by Vega and that it can be used after the number of Ethereum block confirmations required (typically 50, check network param) 1004-ASSO-013
    • should be able to see a balance for the number of tokens associated that are ready for use 1004-ASSO-014
    • should be able to see a balance for the number of tokens for each pending association 1004-ASSO-015
  • on completion: should be prompted to go on to nominate and/or participate in Governance
  • must see the balances of tokens available in Ethereum wallet updated (both associated and un-associated) 1004-ASSO-030
  • must see the balances of tokens available in vesting contract updated (both associated and un-associated) 1004-ASSO-032

...so I can then use the Vega wallet to use my tokens.

Disassociate

When wanting to remove governance tokens, I...

  • must connect an Ethereum wallet/key to see tokens it may have in wallet or attributed to it in the vesting contract 1004-ASSO-018
  • must see a list Vega keys that the connected Ethereum wallet has associated too 1004-ASSO-019
    • must see an amount associated with each key 1004-ASSO-020
    • must see the full Vega public key associated too 1004-ASSO-021
    • must see the the origin of the association: wallet or vesting contract 1004-ASSO-022
    • should be able to select one row (vega key + amount) to populate disassociate form with the key you want to disassociate from and how much 1004-ASSO-023
  • If some of the tokens for the given Eth key are held by the vesting contract: must select to return tokens to Vesting contract 1004-ASSO-024
  • must select an amount of tokens to disassociate 1004-ASSO-031
    • must be able to populate the input with the amount of associated tokens for the selected Vega wallet/contract 1004-ASSO-025
  • should be warned that disassociating will forfeit and rewards for the current epoch and reduce the Vote weigh on any open proposals
  • must be warned if the inputs on the form will result in an invalid withdraw, before submitting 1004-ASSO-026
  • must action the disassociation Ethereum transaction 1004-ASSO-027
  • must see feedback on the progress of the disassociation on ethereum 1004-ASSO-028
  • must see new associated balances in Vega (theses should be applied instantly, rather than wait for the 50 eth blocks like associate) 1004-ASSO-029
  • on completion (if tokens were returned to vesting contract): could be prompted to go on to redeem.

...so that I can transfer them to another Ethereum wallet (e.g. sell them on an exchange).