We provide a user-friendly command line interface for voting on price requests and retrieving rewards. UMA token holders can also use a voter dApp to vote with their tokens. Instructions on how to use this voter dApp are here.
We will walk you through setting up the CLI by first cloning the repo and then symlink-ing the CLI command to your global directory.
We assume that you have followed the setup guide (cloned the monorepo and installed dependencies for the root directory via
npm install) and are in the root directory (i.e.
- Symlink the CLI to your global directory. This will allow you to run the voting CLI by simply typing:
uma .... The specific command that is run is listed in the
binproperty of the root
package.json. A simple alternative to this step is to run
npm install -g ./which installs the UMA monorepo to your global directory and implicitly symlinks the
- Start the voting CLI by passing in the provider
We strongly recommend using a non-Metamask provider and prefer the "NETWORK_privatekey" option. For more on the specific issues that using a Metamask provider opens, see Known Bugs. Storing a private key in an environment variable is a safe compromise between convenience and security provided your local machine is not compromised. To set an environment variable, run:
To unset an environment variable, run:
And to print out your environment variables, run:
Here are the various providers you can use:
- Connect to your local development network with the first test account as your default account. This would be useful for developers using Ganache. Note that you will first have to deploy the contracts to your local network via
truffle migrate --reset network:
- Connect to mainnet with the private key stored in the environment variable
- Connect to testnet with the mnemonic stored in the environment variable
MNEMONIC. This will use the first account tied to the mnemonic as the signer account:
- Connect to mainnet and vote with your two key contract and the private key of the voter account stored in
PRIVATE_KEY. The CLI will automatically detect if your voter address has deployed a two key contract. We recommend this method as the most secure way to store ownership to your voting tokens in cold storage while conveniently being able to vote with the tokens via a hot wallet:
- Connect with your Metamask provider:
After starting the CLI tool, a menu will appear. There will always be options "help" (to print out a list of commands) and "exit/back" (quit the tool or go back to the previous menu).
Selecting these lead to further menus with relevant actions:
- Wallet: View token balances for default account (and two key contract if it exists), from which you can vote
- Vote: Commit and reveal votes, retrieve rewards, and view results of previous votes.
- Admin: Vote on system administrator proposals
- Metamask: retrieving rewards and viewing past vote results does not work well with the Metamask provider, specifically because it does not do a great job of reading past event logs. To read more technical details about the issue, go here.