Keypairs, Mnemonics And Wallets


In everiToken, each account is recognized by a pair of unique public and private keys (mainly private key; public key can be derived from the private key).

The private key is a set of fixed length random bytes that are often represented as a string. We call it a wit string. A person will be recognized as the owner of an account if he/she has the private key of the account.

A public key represents user identity and is usually represented by a string beginning with EVT.

The public and private keys can be used directly after being generated locally without being registered on the chain.

In addition to prefix differences, EVT's public key and private key are compatible with EOS.

For example, suppose you have this EOS public key: EOSd8d7LL3jf7238sl12Ps98vbbsDK. You can simply change the first three letters to EVT and get a legitimate EVT public key: EVTd8d7LL3jf7238sl12Ps98vbbsDK. This means that you can reuse the key generation algorithm of EOS.

BIP39 (Mnemonics) and BIP44

everiToken follows BIP39, so that a wallet can use mnemonics to help users remember their keypairs. We use the same algorithm as Ethereum.

Private keys can be computed by mnemonics. So, mnemonics are very important and must be kept safe.

For the developers of a wallet: if you need to support the creation of our private key through a mnemonic code, especially through a BIP44 protocol, the code of EVT is 207.

More information about BIP44, please see here:

Using wallets to create a keypair

A wallet is a place to store your private key. We provide evtc which supports creating wallets using a command line. There are also many other ways to do this including SDKs and 3rd-party wallet software.

Create a wallet via a mobile wallet

MyEVT is an open-source mobile wallet built by our lovely community members. Visit for details.

Create a wallet via evtc command line

We will use evtc to create the default wallet, evtc will create the wallet server automatically:

evtc wallet create

evtc will prompt that it created the default wallet and will provide a password for the future access of the wallet. It is very important that you keep the password safe for future use. Here is an example of the output:

    Creating wallet: default
    Save password to use in the future to unlock this wallet.
    Without password imported keys will not be retrievable.

When creating a default wallet, the system will create a new key pair for you. You can see your key by typing:

    evtc wallet keys

Here's an output example:


If you want to generate a new key, you can type:

evtc create key

You will get back:

Private key: 5K8N8MZfkzdE4iaMVqR2btgTMM4MTWNAjyVJQjN8Zw1EWmXsW52
Public key: EVT546WaW3zFAxEEEkYKjDiMvg3CHRjmWX2XdNxEhi69RpdKuQRSK

Then you can import the new key into your wallet:

evtc wallet import 5K8N8MZfkzdE4iaMVqR2btgTMM4MTWNAjyVJQjN8Zw1EWmXsW52

The key will be imported like this:

imported private key for: EVT546WaW3zFAxEEEkYKjDiMvg3CHRjmWX2XdNxEhi69RpdKuQRSK

Create keypairs via evtjs SDK

In evtjs, EvtKey is a class for everiToken's key management.

Use randomPrivateKey to create a new private key:

// randomPrivateKey returns a promise so we should use await or 'then' 
let key = await EVT.EvtKey.randomPrivateKey();

// now key is the private key (as wit format).

After generating a private key, you can convert it to a public key by privateToPublic.

let publicKey = EVT.EvtKey.privateToPublic(key);

For detail, please refer to Javascript SDK Reference.