Introduction

A standalone daemon that can be run on a seperate server, independent from the nodeos server. << We're going to be using this option

DO NOT SUPPLY THE FOLLOWING WHEN STARTING THE nodeos server: --plugin eosio::wallet_api_plugin

Important concept

Many people involved in Crypto think about a wallet as something that stores "Tokens". This is not the correct way of thinking about the wallet.

The wallet is just a place where key pairs are stored.

The image below illustrates that the keosd daemon can have multiple wallets and each wallet can hold multiple public+private key pairs

1. Start the keosd background process {#keosd}

The wallet we'll be discussing is a daemon called keosd

To run the wallet daemon simply run the executable. Note that if you're using docker images and are following the docker instructions, then you already have a docker container running the wallet daemon.

cd eos/build/programs/keosd/
./keosd

{{% notice warning %}}
By default keosd runs on port 8888. This is the same port the nodeos application uses by default, so if you're running this on the same machine you'll need to supply the something like this to run on port 8899 "./keosd --http-server-address=localhost:8899"
{{% /notice %}}

If you are running the server for the 1st time, you need to auto generate an INI file in the default "config" folder ~/eosio-wallet/config.ini

2. Create a wallet {#create}

Let's create a default wallet:

$cleos --wallet-url http://wallet:5555 wallet create --to-console
Creating wallet: default
Save password to use in the future to unlock this wallet.
Without password imported keys will not be retrievable.
"PW5Kewn9L76X8Fpd....................t42S9XCw2"

By default wallets are stored in ~/eosio-wallet/default.wallet. If you're following the docker instructions and you'd like to SSH into your wallet docker container to explore the file system and see this file, you can run the following from a new command prompt: "docker exec -it wallet bash"

{{% notice note %}}
Note that the EOS master key has been added to this wallet for you. Don't be confused by this, all you have done to this point is create a wallet - and you now have a password to unlock that wallet.
{{% /notice %}}

{{% notice note %}}
Note that when you created your wallet using the "./cleos wallet create" in step 2 above, your wallet was left in an Open and Unlocked state. What tends to happen is things work as you're following a tutorial, but things don't work after a reboot. If you don't understand this need to Open and then unlock the wallet before it can be used, you'll be confused at some point.
{{% /notice %}}

5. Adding keys {#AddingKeys}

As detailed in the [Accounts](../accounts/] section, each account has two permissions the owner and the active permission.

So in most cases you'll want to create two keys so that you can associate one key with each permission (more on this later).

The "create key" command below just prints a key pair to screen. It's not stored, so you'll need to import these keys into a wallet.

{{% notice warning %}}
As we stated above, it's important to keep track of which key your planning on using for what purpose. When you store your keys, clearly label the keys as per the example below
{{% /notice %}}

By labeling our new keys as follows, you'll be a lot less likely to get the keys mixed up as you develop.