Multi-Wallet

From HoboNickels Wiki
Jump to: navigation, search

Support is built into the HoboNickels-qt wallet application for loading and unloading multiple wallets. This allows you to use wallets for different purposes such as: mining, spending, running stake and storing securely off line. In this way you can organize your needs and strike a balance between the need for security, spending and the creation of coins.

Benefits:

Separation of funds into smaller wallets is helpful when organizing finances for different purposes. This is similar to storing your cash in different banks or in a savings verses a checking account or having some funds in a money belt and some in your pocket. You can move your wallets from one computer to another through a simple file transfer and load and unload them within the multi-wallet application. By keeping your “savings” or “stake” wallet separate it is easier to age your coins for running Proof of Stake (PoS).

Risks:

There is a known bug that can cause secondary wallets (i.e. non-default wallets) to become corrupted if the computer is hard shutdown or loses power. Please make sure that you have backups of all wallets in the case of corruption. For an added layer of backup it is recommended to use the RPC command "dumpwallet walletname.txt".

Example work-flow:

You may want to mine coins through Proof of Work (PoW) or purchase coins to get started. Once you have a source for coins install the HoboNickels-qt wallet application and create an address to receive the coins by pressing the “receive coins” button. A default address is created in the default wallet and you can copy this address and receive payments to it. Once the block chain is synchronized your transactions should show up and you don't need to keep the wallet application running or unlocked to receive payments. If you want to run PoS it is best to create a new wallet (see below) and transfer the coins in 100 coin blocks to it for cpu efficiency.

It is recommended to keep high value wallets encrypted and off line when not running stake. You may wish to keep some funds always available in a spending wallet or mining wallet (solo mining and sending coins can't be done on a locked wallet)

At start up the program will try to load all the wallets in the %appdata% directory and one recommendation is to create a subdirectory under %appdata% to keep your specific wallets organized. The program will load faster and experience less issues synchronizing with the block chain if the default wallet has fewer transactions or coins in it. Additionally, if a PoS block is generated before the block chain is fully synchronized it will not be accepted, so you may want to keep your stake wallets unloaded at first.

GUI Interface:

The GUI now includes a wallet stack on the right hand side. These will be all wallets that are currently loaded and in memory. Simply clicking on any of the wallets will change the left side of the gui to show that wallets information.

To create a new wallet click on the new button and navigate to the directory you want to create the wallet in. Then type wallet-walletname.dat. For example wallet-stake.dat, will show up in the gui as stake. All wallets must be preceded by wallet- and end in .dat. Any other names will create an error.

To load an existing wallet click the load button, navigate to the directory you want and open that wallet. If the wallet is encrypted and you would like it to be able to run stake, then you will need to use the rpc command walletpassphrase. This can be done by click on the debug window, then going to the console tab then enter the following command usewallet walletname walletpassphrase timetounlock. The walletname is what you see in the wallet stack in the gui, or when using the listwallets rpc command. Trying to load a file not named wallet-something.dat will cause an error, as well as trying to load the same wallet that is already loaded. No harm will come, but it won't load.

To remove a wallet from memory, highlight the wallet want to remove the click the unload button. The wallet will be flushed from memory and removed from the gui. If you loaded a wallet from a USB, it is a good idea to both wait 10-30 seconds and use the safely remove media button in windows, before you remove the USB.

RPC Methods:

listwallets

   -Shows all loaded wallet information 

usewallet <wallet> <method> [params]

   -Use wallet commands on different wallets 
   -Example: usewallet HoboOfflineWallet1 sendtoaddress F4ATvAfwcE5RFn358FS1bxauwoB7Ces7KN 100 

loadwallet <walletname> [rescan=false] [upgradewallet=false] [maxversion=(latest)]

   -Loads a wallet found in the %appdata% directory. If no wallet by the name is found, one is created. 

unloadwallet <walletname>

   -Unloads a wallet. 

Config and Command line arguments:

  • You may use the config line usewallets=walletname or the command line -usewallet=walletname
  • This will load only the wallets you specify. If you do not use either of these, than all wallets in the %appdata% dir named wallet-*.dat will be loaded. If you specify usewallet="" than only the default wallet will be loaded.
  • You may also prevent a certain wallet from loading at start up by using the argument -nousewallet

Staking:

  • At time of start up all wallets listed in usewallets or all found in %appdata% will each get a thread to start stake. This should help with CPU exhaustion.
  • If you specify usewallet="" then only the default wallet will be loaded and up for stake.
  • All wallets specified by -nousewallet will not be up for stake.
  • If the wallet loaded is encrypted it will not stake until it is unlocked. This is accomplished by using the walletpassphrase rpc command