Backup and restore your Groestlcoin address wallet (cli)

In real world backups are lifesavers and in crypto world the backups are even more important! Backup everything about your crypto wallet and node install!
If you have followed our howtos (Running a Groestlcoin node (wallet cli) from source under Ubuntu 16 LTS and “Building from source a Groestlcoin node (cli only) under Ubuntu 16 LTS“) you would have the correct software for managing the Groestlcoin wallet and all the paths bellow will be accurate.

STEP 1) Backup of Groestlcoin wallet

If you want to backup up your Groestlcoin (addresses) wallet you need to find your

wallet.dat

file the place for it is in your

“home directory/.groestlcoin/wallet.dat”

So first stop the Groestlcoin Core program with one of the following command:

  • By sending kill signal:
    srv@local:~$ killall groestlcoind
    
  • OR in your screen or shell of the running program ctrl+c will stop it

After you wait for the Groestlcoin Core to exit you can check the logs in

~/.groestlcoin/debug.log

2018-04-12 01:00:36 UpdateTip: new best=0000000000026458ea4ffb8d781179393f9f339bf3504936d1a6eb05d1a6d433 height=2041250 version=0x20000000 log2_work=61.378625 tx=2730651 date='2018-04-12 01:00:16' progress=1.000000 cache=0.7MiB(2279tx)
2018-04-12 01:00:52 tor: Thread interrupt
2018-04-12 01:00:52 msghand thread exit
2018-04-12 01:00:52 addcon thread exit
2018-04-12 01:00:52 torcontrol thread exit
2018-04-12 01:00:52 opencon thread exit
2018-04-12 01:00:52 scheduler thread interrupt
2018-04-12 01:00:52 Shutdown: In progress...
2018-04-12 01:00:52 net thread exit
2018-04-12 01:00:52 Dumped mempool: 3e-06s to copy, 0.001741s to dump
2018-04-12 01:00:52 Shutdown: done

So now you can copy to a secure place your

“home directory/.groestlcoin/wallet.dat

In our real world example the path is “/home/ubuntu/.groestlcoin/wallet.dat”

srv@local:~$ cp /home/ubuntu/.groestlcoin/wallet.dat /home/ubuntu/backups/cryptos/groestlcoin-wallet.dat

STEP 2) Restore Groestlcoin wallet

To restore our wallet from a backup you also need the Groestlcoin wallet program (Groestlcoin Core – the Groestlcoin node) not to be running, so if it is started just follow the STEP 1) to stop it. Then override

“home directory/.groestlcoin/wallet.dat

with your backup file (the name of the file must be “wallet.dat”!!! It is important because your backup file could have any name). So in our real world example we override our /home/ubuntu/.groestlcoin/wallet.dat with our backup:

srv@local:~$ cp /home/ubuntu/backups/cryptos/groestlcoin-wallet.dat /home/ubuntu/.groestlcoin/wallet.dat

And then start your Groestlcoin wallet program with option

-rescan

this option is required when you first start the Groestlcoin Core with your backup wallet to “Rescan the block chain for missing wallet transactions on startup”, if you do not start the program with “-rescan” you could have strange numbers for your funds when checking with “groestlcoin-cli”

srv@local:~$ cd ~/groestlcoin-core/bin
srv@local:~/groestlcoin-core/bin$ ./groestlcoind -rescan &> groestlcoind.log

You could check debug.log and you’ll see the transactions for your wallet

2018-04-12 01:21:07 Using obfuscation key for /home/ubuntu/.groestlcoin/blocks/index: 0000000000000000
2018-04-12 01:21:07 Opening LevelDB in /home/ubuntu/.groestlcoin/chainstate
2018-04-12 01:21:07 Opened LevelDB successfully
2018-04-12 01:21:07 Using obfuscation key for /home/ubuntu/.groestlcoin/chainstate: 0000000000000000
2018-04-12 01:21:26 LoadBlockIndexDB: last block file = 8
2018-04-12 01:21:26 LoadBlockIndexDB: last block file info: CBlockFileInfo(blocks=75749, size=48230812, heights=1965243...2041250, time=2018-02-15...2018-04-12)
2018-04-12 01:21:26 Checking all blk files are present...
2018-04-12 01:21:26 LoadBlockIndexDB: transaction index disabled
2018-04-12 01:21:27 LoadBlockIndexDB: hashBestChain=0000000000026458ea4ffb8d781179393f9f339bf3504936d1a6eb05d1a6d433 height=2041250 date=2018-04-12 01:00:16 progress=0.999999
2018-04-12 01:21:27 init message: Rewinding blocks...
2018-04-12 01:21:34 init message: Verifying blocks...
2018-04-12 01:21:34 Verifying last 6 blocks at level 3
2018-04-12 01:21:34 [0%]...[16%]...[33%]...[50%]...[66%]...[83%]...[99%]...[DONE].
2018-04-12 01:21:34 No coin database inconsistencies in last 7 blocks (16 transactions)
2018-04-12 01:21:34  block index           26840ms
2018-04-12 01:21:34 init message: Loading wallet...
2018-04-12 01:21:34 nFileVersion = 2130300
2018-04-12 01:21:34 Keys: 0 plaintext, 205 encrypted, 205 w/ metadata, 205 total
2018-04-12 01:21:34  wallet                   11ms
2018-04-12 01:21:34 init message: Rescanning...
2018-04-12 01:21:34 Rescanning last 2041250 blocks (from block 0)...
2018-04-12 01:21:34 AddToWallet c5ed5ff668503412eed4568c3b226523e2ff6db2a1b3740f0aea5250a3c36e7b  
2018-04-12 01:21:34 AddToWallet fc99017780dbafaf5723196351d4adaaee9991c35391ecb013ed74bbb57a44a5  
2018-04-12 01:21:34 AddToWallet 52f883907385dd8205273ebdc987e88ed71f0e894b57df1a6a2f2c9fcb546922  
2018-04-12 01:21:34 AddToWallet a8b84a2d0b1114c4f2d710a45e0e13dfab547512b1b775a9617fa41809b75926  
2018-04-12 01:21:34 AddToWallet 0d4f1d8e9f6c42b4dbaaf33fe4fb33efc5f646df8724f1e66ab54ccbedbb84f1  
2018-04-12 01:21:34 AddToWallet 1a2984f011a6ff5d44c549b0f6da44b3a1654e2ccbb9f897f5106f88ed931498  
.....
.....
2018-04-12 01:21:46  rescan                12622ms
2018-04-12 01:21:46 setKeyPool.size() = 99
2018-04-12 01:21:46 mapWallet.size() = 415
2018-04-12 01:21:46 mapAddressBook.size() = 4
2018-04-12 01:21:46 mapBlockIndex.size() = 2041278
2018-04-12 01:21:46 nBestHeight = 2041250
2018-04-12 01:21:46 init message: Loading addresses...
2018-04-12 01:21:46 Imported mempool transactions from disk: 1 successes, 0 failed, 0 expired
2018-04-12 01:21:46 torcontrol thread start
2018-04-12 01:21:46 Loaded 2994 addresses from peers.dat  40ms
2018-04-12 01:21:46 init message: Loading banlist...
2018-04-12 01:21:46 init message: Starting network threads...
2018-04-12 01:21:46 net thread start
2018-04-12 01:21:46 addcon thread start
2018-04-12 01:21:46 init message: Done loading
2018-04-12 01:21:46 dnsseed thread start
2018-04-12 01:21:46 opencon thread start
2018-04-12 01:21:46 msghand thread start
2018-04-12 01:21:47 receive version message: /Groestlcoin:2.13.3/: version 70015, blocks=2041268, us=18.220.186.120:42996, peer=0

Now if you check your balances they must be properly reported (correct numbers of coins):

srv@local:~/groestlcoin-core/bin$ ./groestlcoin-cli listaccounts
{
  "": 0.00000000,
  "myfunds": 527.36851543,
  "tests": 0.00000000
}

Generate a new Groestlcoin address (wallet) and list accounts and addresses

The generation of a new Groestlcoin address is super simple, just use

groestlcoin-cli

and personally create your new address. DO NOT TRUST any online or website or any other Internet source to generate your Groestlcoin wallet address for you. DO IT YOURSELF with the official software from the official site!
And for those of you, which do not have “groestlcoin-cli” command or even do not know what is this, check out our howtos here:

  1. Install Ubuntu 16 LTS (comming soon)
  2. Running a Groestlcoin node (wallet cli) from source under Ubuntu 16 LTS

Go to your directory where is the groestlcoin-cli binary and execute the following command (the path and directories in the following examples are based on the above howto):

srv@local:~$ cd ~/groestlcoin-core/bin/
srv@local:~/groestlcoin-core/bin$ ./groestlcoin-cli getnewaddress mygroestlcoin
FeNFjh81VDJvZrdvi8EotKuJ8es8cCz7bZ
srv@local:~/groestlcoin-core/bin$ ./groestlcoin-cli encryptwallet "my secret pass"
wallet encrypted; Groestlcoin server stopping, restart to run with encrypted wallet. The keypool has been flushed and a new HD seed was generated (if you are using HD). You need to make a new backup.

The groestlcoind daemon was stopped and you need to start it again if you want to make transactions or to get your balance.
With Groestlcoin Core Wallet you can create an account, which could be a group of groestlcoin addresses (this is a groestlcoin address: “FeNFjh81VDJvZrdvi8EotKuJ8es8cCz7bZ”) or just use the default with no name of the account.
It is important to encrypt your wallet with a password, because if the wallet is unprotected with a password anyone could steal it! Then enter a password for your wallet protection is the second command above!

This sequence of numbers and alphabets

FeNFjh81VDJvZrdvi8EotKuJ8es8cCz7bZ

is your public Groestlcoin address, which could be used to receive Groestlcoins – the coins of the Groestlcoin network.

After generating the address two things must be done:

  1. Backup your Groestlcoin wallet address file (wallet.dat), which is placed in your home directory under “.groestlcoin”:
    srv@local:~/groestlcoin-core/bin$ ls -altr ~/.groestlcoin/
    srv@local:~$ ls -altr ~/.groestlcoin/
    total 476
    -rw------- 1 ubuntu ubuntu      0 Mar 27 21:41 .lock
    -rw------- 1 ubuntu ubuntu      0 Mar 27 21:41 db.log
    -rw------- 1 ubuntu ubuntu     37 Mar 27 21:41 banlist.dat
    drwx------ 3 ubuntu ubuntu   4096 Mar 27 22:18 blocks
    drwxr-xr-x 7 ubuntu ubuntu   4096 Mar 28 01:25 ..
    -rw------- 1 ubuntu ubuntu 145650 Mar 28 14:16 peers.dat
    -rw------- 1 ubuntu ubuntu     17 Mar 28 14:16 mempool.dat
    -rw------- 1 ubuntu ubuntu  16625 Mar 28 14:16 fee_estimates.dat
    -rw------- 1 ubuntu ubuntu  73728 Mar 28 14:16 wallet.dat
    -rw------- 1 ubuntu ubuntu      5 Mar 28 14:17 groestlcoin.pid
    -rw------- 1 ubuntu ubuntu     75 Mar 28 14:17 .cookie
    drwxrwxr-x 5 ubuntu ubuntu   4096 Mar 28 14:17 .
    drwx------ 2 ubuntu ubuntu   4096 Mar 28 14:18 chainstate
    drwx------ 2 ubuntu ubuntu   4096 Mar 28 14:18 database
    -rw------- 1 ubuntu ubuntu 206800 Mar 28 14:27 debug.log
    srv@local:~$ 
    

    The best practice is to backup all the files under “~/.groestlcoin/”, too!

  2. Backup your password for the private key!

Accounts

List all accounts in the wallet

srv@local:~/groestlcoin-core/bin$ ./groestlcoin-cli listaccounts
{
  "": 0.00000000,
  "mygroestlcoin": 0.00000000
}

List all Groestlcoin addresses in a given account:

srv@local:~/groestlcoin-core/bin$ ./groestlcoin-cli getaddressesbyaccount ""
[
  "FYM6aAQdmg6tziT4trPb777xNfPaaUnfqp", 
  "FamX8GYBuLFkLSAbyZ7M55vFW6AECoYKEV", 
  "Fp9PwAgfTqaF3aJ4zGGLjGKP7iEMdsrR3Z"
]
srv@local:~/groestlcoin-core/bin$ ./groestlcoin-cli getaddressesbyaccount "mygroestlcoin"
[
  "FeNFjh81VDJvZrdvi8EotKuJ8es8cCz7bZ", 
  "FrrnHESU8Utqk1ZjhQZjpWwc5cjKgHwCaS"
]

* It is absolutely necessary your crypto wallet addresses to have a password for security reasons and DO NOT FORGET IT you cannot recover the password therefore your access to the wallet! If you lose your password you lose ALL your funds in the address! It’s better to write it down somewhere on a safe physical place. You can print it on a sheet of paper and place it somewhere safe!

* All available commands with “groestlcoin-cli

groestlcoin-cli help
== Blockchain ==
getbestblockhash
getblock "hash" ( verbose )
getblockchaininfo
getblockcount
getblockhash index
getblockheader "hash" ( verbose )
getchaintips
getdifficulty
getmempoolancestors txid (verbose)
getmempooldescendants txid (verbose)
getmempoolentry txid
getmempoolinfo
getrawmempool ( verbose )
gettxout "txid" n ( includemempool )
gettxoutproof ["txid",...] ( blockhash )
gettxoutsetinfo
preciousblock "hash"
verifychain ( checklevel numblocks )
verifytxoutproof "proof"

== Control ==
getinfo
getmemoryinfo
help ( "command" )
stop

== Generating ==
generate numblocks ( maxtries )
generatetoaddress numblocks address (maxtries)

== Mining ==
getblocktemplate ( TemplateRequest )
getmininginfo
getnetworkhashps ( blocks height )
prioritisetransaction <txid> <priority delta> <fee delta>
submitblock "hexdata" ( "jsonparametersobject" )

== Network ==
addnode "node" "add|remove|onetry"
clearbanned
disconnectnode "node" 
getaddednodeinfo ( "node" )
getconnectioncount
getnettotals
getnetworkinfo
getpeerinfo
listbanned
ping
setban "ip(/netmask)" "add|remove" (bantime) (absolute)
setnetworkactive true|false

== Rawtransactions ==
createrawtransaction [{"txid":"id","vout":n},...] {"address":amount,"data":"hex",...} ( locktime )
decoderawtransaction "hexstring"
decodescript "hex"
fundrawtransaction "hexstring" ( options )
getrawtransaction "txid" ( verbose )
sendrawtransaction "hexstring" ( allowhighfees )
signrawtransaction "hexstring" ( [{"txid":"id","vout":n,"scriptPubKey":"hex","redeemScript":"hex"},...] ["privatekey1",...] sighashtype )

== Util ==
createmultisig nrequired ["key",...]
estimatefee nblocks
estimatepriority nblocks
estimatesmartfee nblocks
estimatesmartpriority nblocks
signmessagewithprivkey "privkey" "message"
validateaddress "groestlcoinaddress"
verifymessage "groestlcoinaddress" "signature" "message"

== Wallet ==
abandontransaction "txid"
addmultisigaddress nrequired ["key",...] ( "account" )
addwitnessaddress "address"
backupwallet "destination"
dumpprivkey "groestlcoinaddress"
dumpwallet "filename"
getaccount "groestlcoinaddress"
getaccountaddress "account"
getaddressesbyaccount "account"
getbalance ( "account" minconf includeWatchonly )
getnewaddress ( "account" )
getrawchangeaddress
getreceivedbyaccount "account" ( minconf )
getreceivedbyaddress "groestlcoinaddress" ( minconf )
gettransaction "txid" ( includeWatchonly )
getunconfirmedbalance
getwalletinfo
importaddress "address" ( "label" rescan p2sh )
importmulti '[<json import requests>]' '<json options>' 
importprivkey "groestlcoinprivkey" ( "label" rescan )
importprunedfunds
importpubkey "pubkey" ( "label" rescan )
importwallet "filename"
keypoolrefill ( newsize )
listaccounts ( minconf includeWatchonly)
listaddressgroupings
listlockunspent
listreceivedbyaccount ( minconf includeempty includeWatchonly)
listreceivedbyaddress ( minconf includeempty includeWatchonly)
listsinceblock ( "blockhash" target-confirmations includeWatchonly)
listtransactions ( "account" count from includeWatchonly)
listunspent ( minconf maxconf  ["address",...] )
lockunspent unlock ([{"txid":"txid","vout":n},...])
move "fromaccount" "toaccount" amount ( minconf "comment" )
removeprunedfunds "txid"
sendfrom "fromaccount" "togroestlcoinaddress" amount ( minconf "comment" "comment-to" )
sendmany "fromaccount" {"address":amount,...} ( minconf "comment" ["address",...] )
sendtoaddress "groestlcoinaddress" amount ( "comment" "comment-to" subtractfeefromamount )
setaccount "groestlcoinaddress" "account"
settxfee amount
signmessage "groestlcoinaddress" "message"
walletlock
walletpassphrase "passphrase" timeout
walletpassphrasechange "oldpassphrase" "newpassphrase"