15

Currently there are some voting portals and tools like:

I think currently the only official and secure way to vote is to use cleos. I have configured local node with Docker and can use cleos locally as described here - Docker Quickstart - cleos

My questions are:

  • How can I configure cleos to talk to the main net?
  • How can I vote using cleos?

Thanks

UPDATE:

I also found nice article here - EOS Block Producer Voting Using the Command Line It is using Docker and actually all the interaction is happening inside the container. We just need HTTP/API endpoint of the official block producer (for example, you can use https://mainnet.eoscanada.com as a --url parameter when working with cleos and mainnet)

1 Answer 1

25

Warning, this is probably wayyy outdated, feel free to make change requests :)


Credit Chris from Privex (@chr54 Telegram) >> Producer Name privexinceos

How to Vote Via Command Line (cleos):

Want the Docker Version?


This tutorial assumes you have at least one registered EOS public/private key pair and EOS tokens to stake for the purposes of voting.

  1. Install/Build EOS (build script changes SYS namespace token to EOS)
    • git clone https://github.com/EOSIO/eos --recursive
    • cd eos
    • ./eosio_build.sh -s "EOS"
    • cd build
    • sudo make install

If you don't want to run a node, skip to step 8. Running a node is not necessary to vote.

  1. Create genesis.json file using genesis data:
  2. Run nodeos --print-default-config once to produce initital config.ini file
    • To edit sudo nano ~/.local/share/eosio/nodeos/config/config.ini
  3. Add p2p nodes to config.ini (from site https://eosnodes.privex.io/?config=1)
    • Search for p2p-peer-address =
  4. Add plugins to config.ini plugin = eosio::producer_plugin plugin = eosio::wallet_api_plugin plugin = eosio::chain_api_plugin plugin = eosio::http_plugin plugin = eosio::history_api_plugin

    • Search plugin =
  5. Change localhost port so it doesn't overlap with keosd in config.ini

    • Search http-server-address =
    • Change port to 8080
  6. Run nodeos --delete-all-blocks --genesis-json (from gensis.json directory)
    • On subsequent launches, do not specify --genesis-json, nodeos will pull the genesis state from the block log, and of course do not --delete-all-blocks either.
    • If nodeos does not restart cleanly, --replay-blockchain and if that does not work --hard-replay-blockchain.

  1. In separate terminal, start keosd with keosd
  2. Create a wallet
  3. Save wallet password (very important) and import private key to wallet
  4. Figure out a full node to connect to and run get info (known full nodes below)
  5. Get account info on your account
  6. Delegate EOS tokens to perform voting
    • cleos --wallet-url http://localhost:8888 --url http://[NODE_IP_HERE]:[NODE_PORT_HERE] system delegatebw eosuseraaaaa "0.1000 EOS" "0.1000 EOS"
    • Positional Args from TEXT - The account delegating bandwidth receiver TEXT - The account to delegate bandwidth from stake_net_quantity TEXT - The amount of EOS to delegate for network bandwidth stake_cpu_quantity TEXT - The amount of EOS to delegate for CPU bandwidth
    • https://developers.eos.io/eosio-cleos/reference#cleos-system-delegatebw
  7. List producers to vote on
  8. Vote on producers by including their names in the following command
  9. List Producers again to see how your vote affected the producers %
    • cleos --wallet-url http://localhost:8888 --url http://[NODE_IP_HERE]:[NODE_PORT_HERE] system listproducers

FAQ:

  1. Where can I find more detailed cleos commands?
  2. I voted, what else should I do
    • Create another account since yours is just a bunch of random letters and cannot be changed
    • New account must be 12 characters in length
    • cleos system newaccount --stake-net "0.1000 EOS" --stake-cpu "0.1000 EOS" --buy-ram-kbytes 8 <youraccount> <newaccount> <ownerpublickey> <activepublickey>
    • if you want to transfer, use with --transfer
    • be aware that you have to purchase RAM to do this. 8kb ram is around 0.12 EOS
  3. I'm not a programmer, so I'm not comfortable voting this way, is there another way you would recommend?

Known nodes:

https://get-scatter.com/

cleos -u https://nodes.get-scatter.com:443 get info

cleos -u http://nodes.get-scatter.com:80 get info

load balances over multiple BP endpoints courtesy of nsjames

https://eos.cafe/

cleos -u http://mainnet.eoscalgary.io:80 get info

http://eosdetroit.io/

cleos -u https://api.eosdetroit.io:443 get info

https://www.eosnewyork.io/

cleos -v -u http://api.eosnewyork.io get info

https://www.eosphere.io/

cleos -u https://node1.eosphere.io get info

cleos -u https://node2.eosphere.io get info

https://www.saltblock.io/home

cleos -u https://eos.saltblock.io get info


List of nodes to try:

  1. https://eosnodes.privex.io/
  2. https://www.eosdocs.io/resources/apiendpoints/
1

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.