# Setup wallet

Run `wallet -h` to see all available command line switches.

## Setup your seed

Wallet is deterministic and the only thing you need to set it up is the seed password.
As long as you remember the password, you do not need to backup the wallet ever.
You can either enter this password each time when running the wallet, or you can store it in a file called `.secret` and never be asked to enter it again.
You do not need to use a memorable password. Instead you can create a random secret seed, e.g. using a command like this: `cat /dev/urandom | tr -cd a-zA-Z0-9 | head -c 27 > .secret` Note: using a password that you cannot memorize, make sure to have a backup of your `.secret` file.

## Export public addresses

After you setup your wallet in a secured environment, you should export its public addresses.
In order to do this, just run `wallet -l` and your wallet's public addresses will be written to `wallet.txt`.

## Security precautions

Make sure that the disk with `.secret` file is encrypted.
Keep in mind that `.secret` should not contain any non-printable characters, nor new line characters, because they count while calculating the seed.
Since you do not see such characters on screen, you may have problems re-creating the same file after you would loose it.
The seed password is the key to your entire wallet and the function used to calculate it is double SHA256, which is pretty easy to compute.
That is why it is very important for you to make sure that the password you're choosing will be resistant to brute force and dictionary attacks.
If you choose to use a memorable seed-password (aka brain wallet), make it at least 20 characters long, preferably more than 30. Use both cases of letters, digits and sepcial characters. Try to avoid using words that can be found in a dictionary and never use sentences that can be found in Google.
If you decide to write down the password, because you are affraid of forgetting it, try to describe it as a puzzle that ony you can understad. Avoid writing down the password as is.
Are brain wallets less secure from those based on a random number generator?
It is debatable.
There are people claiming that brain wallets aren't secure because brains cannot possibly be a good source of entropy.
If you have such a brain, make sure to consider this risk (e.g. use a random generator to create the content of the `.secret` file).
Otherwise coming out with a memorable though uncrackable seed, gives you a more secure and very convenient solution, because you get rid of backups that are a week point of the wallet's security and you never have to carry the wallet file with you.

## Importing other private keys

You can import keys from your existing bitcoin wallet, as well as keys generated by other tools (all kind of key/address generators).
The key that you want to import must be in base58 encoded format, which looks somehow like `5KJvsngHeMpm884wtkJNzQGaCErckhHJBGFsvd3VyK5qMZXj3hS`. To export a private key from the official bitcoin wallet use `dumprivkey` RPC command. To import such a key into your Gocoin wallet, just store the base58 encoded value in a text file named `.others` (each key must be in a separate line). You can also place a key's label in each line, after a space.
The imported keys will extend the key pool of the deterministic ones (that come from your password-seed). After Importing each new key, you should redo `wallet -l` to get an updated `wallet.txt` for your client.

## Optional: setup your node with the wallet file

Having wallet.txt file generated at the wallet machine, use Wallet page of WebUI and store the content of this file as a wallet in your browser. You can choose any name you want and you can change labels for the addresses.

### Multiple wallets

In the node's wallet folder you can have multiple text files that contain public addresses from different wallets.
You can quickly switch between the wallets, using WebUI's Wallets tab.
The tab allows you to also edit your wallets, as well as to create new ones.