Easy to use tools for securely storing your private keys and casting your vote



A simple yet powerful EOS wallet

  • Store your private keys offline
  • Resist brute force attack
  • No need to trust anyone with your private keys



Easiest and most secure voting solution for EOS. 

is a straight forward solution to securely vote for your favourite EOS Block Producers.

 vote` internally integrates the Vault. There's no need to run multiple programs, make sure they are communicating with each other, or compile anything else.


Compatible with:

  • Linux
  • Windows
  • OSX 
  • Raspberry Pi anyone?
    We've got you covered

Powered by ,  is an open source software under the MIT License.

Get Started


1. Install from GitHub releases page: https://github.com/eoscanada/eosc/releases


2. Build from source with this command:

go get -u -v github.com/eoscanada/eosc/eosc

Once installed run:

eosc vault create --import

to import your keys and follow instructions.

Then run:

eosc vote --help

and run something like this:

eosc vote producers [your account] [producer1] [producer2] [producer3]

Make sure you have version v0.7.0 or higher:

eosc version

Read more below for details.


The `eosc vault` is a simple yet powerful EOS wallet.

Importing Keys In New Wallet

You can import externally generated private keys with vault create --import call.

You will then be asked to paste your private key in an interactive prompt. The private key is not shown on screen during the import. It will display the corresponding public key which you should cross-check.:

$ eosc vault create --import -c "Imported key"
Enter passphrase to encrypt your vault: ****
Confirm passphrase: ****
Type your first private key: ****
Type your next private key or hit ENTER if you are done:
Imported 1 keys. Let's secure them before showing the public keys.
Wallet file "./eosc-vault.json" created. Here are your public keys:
- EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV

Your private keys will be encrypted using your passphrase. See below for cryptographic primitives used.

New Wallet With New Keys

Create a new wallet with:

$ eosc vault create --keys 2
Created 2 keys. Let's secure them before showing the public keys.
Enter passphrase to encrypt your keys:
Confirm passphrase:
Wallet file "./eosc-vault.json" created. Here are your public keys:
- EOS7MEGq9FVb2Ve4bsZEan1t146TKCyo8dKtLvihrNhGbPLCPLjXd
- EOS5QoyZwJvpPjmZAa3HdgTn2FdNABBffXLD95WPagiARmaAHMhin

Add Keys To An Existing Vault

To add an externally generated private key to an existing vault, use:

$ eosc vault add
Vault file not found, creating a new wallet
Type your first private key: [insert your private key here, NOT shown]
Type your next private key or hit ENTER if you are done:
Keys imported. Let's secure them before showing the public keys.
Enter passphrase to encrypt your keys:
Confirm passphrase:
Wallet file "./eosc-vault.json" written. Here are your ADDED public keys:
- EOS5tb61aZMAfQqKDsnkscFq76JXxNdi7ZhkUmkVZUkU4zPzfeAFx
Total keys writteN: 3

The vault operations do zero network calls and can be done offline. The file is encrypted, can safely be archived and is future proof.


Casting Your Votes

With an eosc-vault.json, you can vote:

$ eosc vote producers youraccount eoscanadacom someotherfavo riteproducer
Enter passphrase to unlock vault:
Voter [youraccount] voting for: [eoscanadacom]

This will sign your vote transaction locally, and submit the transaction to the network through the https://mainnet.eoscanada.com endpoint. You can also point to some other endpoints that are on the main network with -u or --api-url.

Find what your account it on EOSQUERY: https://eosquery.com


Cryptography Used

The cryptography used is NaCl (C implementation, Javascript port, Go version, which we use). And key derivation is Argon2, using the Go library here.

You can inspect the crypto code in our codebase regarding the passphrase implementation: it is 61 lines, including blanks and comments.

by EOS Canada

is developed by EOS Canada for the EOS Community

Leading through technology, EOS Canada is a Block Producer that builds unique development, testing, and production tools to enable developers and businesses to embrace blockchain technology to build a decentralized world, as well as for the benefit of the whole community.


cleos is hard to compile, being in C++, as it requires a huge toolchain. `eosc` works on Windows where cleos doesn't. `eosc` contains a wallet inside, and is able to use it to sign some transactions, cleos interfaces with yet another program (keosd) in order to sign transactions, making it more complex to use. `eosc` brings keosd and cleos together in a swiss-knify package.

ERRATA: Previously, you could read that `eosc` used sha512 key derivation, which is faster to brute force. The Argon2 key derivation is stronger, and would take an attacker a *lot* more effort to brute force. This was incorrect, as `cleos` generates a large random password for you, which is effectively very hard to brute force, no matter which derivation algorithm you are using. The fact that `cleos` does not allow you to choose your passphrase is a difference, but mostly in usability. You need to store that large password somewhere, right?

Easy to use EOS tools for voting and a vault to securely store private keys