Building from source and run a Groestlcoin node (cli only) under Ubuntu 22.04 LTS

Author:

It was a bit while after the Building from source a Groestlcoin node (cli only) under Ubuntu 16 LTS. So after 6 years is it the same procedure or there are additional or simplified steps (to build) and run a cryptocurrency Groestlcoin node? The GRS price seems the same as it was 6 years ago, but there are some new things in the software.

main menu
groestlcoin-cli getblockchaininfo

The first step is to build the software and it is one of the most important steps – download the source code ONLY from the official source, check the official site https://www.groestlcoin.org/groestlcoin-core-wallet/ where the source code could be downloaded or to see where is the official place for the source code – https://github.com/Groestlcoin/groestlcoin. Check the links yourself! The https://github.com/Groestlcoin/groestlcoin git link will be used to download the latest stable version of the code and to build a Groestlcoin node, which may or may not include wallet capabilities. Building the Groestlcoin core package from the source you’ll have your private and secure Groestlcoin node (and wallet), which could be used to make secure transactions and receive funds in the Groestlcoin network and a lot more! DO IT YOURSELF – the most secure way of generating a Groestlcoin wallet address, making transactions such as sending and receiving coins, and storing your wallets.

STEP 1) Update your system and install dependencies

Update your system and install the needed additional binaries and libraries to build and run the Groestlcoin core package. These dependencies include the ones needed to build the Groestcoin wallet functionality! By default, many Linux systems won’t include dependencies needed to build the wallet.

main menu
sudo apt install groestlcoin dependencies

sudo apt -y update
sudo apt -y upgrade
sudo apt install build-essential libssl-dev libboost-all-dev libtool automake libevent-dev bsdmainutils git make g++ gcc autoconf cpp ngrep iftop sysstat autotools-dev pkg-config libminiupnpc-dev libzmq3-dev libdb-dev libdb5.3++-dev sqlite3 libsqlite3-dev

An additional 722 Mbytes will be occupied.

0 upgraded, 217 newly installed, 0 to remove and 5 not upgraded.
Need to get 138 MB of archives.
After this operation, 722 MB of additional disk space will be used.
main menu
dependencies additional disk space

STEP 2) Get the “Groestlcoin Core” code and compile it

The git may be used to download the latest source code. Or the user may choose to download the latest stable tag (release). At present, the latest stable release is 25.0 – https://github.com/Groestlcoin/groestlcoin/archive/refs/tags/v25.0.tar.gz. Download it and unpack it.

wget https://github.com/Groestlcoin/groestlcoin/archive/refs/tags/v25.0.tar.gz
tar xf v25.0.tar.gz
cd groestlcoin-25.0/
export CFLAGS="-march=native -O2 -msse3 -fomit-frame-pointer -pipe"
export CXXFLAGS="${CFLAGS}"
export CHOST="x86_64-pc-linux-gnu"
./autogen.sh
./configure --prefix=/home/myuser/groestlcoin-core --enable-util-wallet --with-utils
make -j 8
make install

Change the directory name “/home/myuser/groestlcoin-core” to something meaningful for the current setup or more generic and global for the system such as “/usr/local/groestlcoin-core” (and “sudo make install” after the compiling process). It is a good idea to install and run it from an ordinary user, not a root or an administrative user.
Check out the last screen after the configure command:

......
......
Options used to compile and link:
  external signer = yes
  multiprocess    = no
  with experimental syscall sandbox support = yes
  with libs       = yes
  with wallet     = yes
    with sqlite   = yes
    with bdb      = yes
  with gui / qt   = no
  with zmq        = yes
  with test       = no
  with fuzz binary = yes
  with bench      = no
  with upnp       = yes
  with natpmp     = no
  use asm         = yes
  USDT tracing    = no
  sanitizers      = 
  debug enabled   = no
  gprof enabled   = no
  werror          = no
  LTO             = no

  target os       = linux-gnu
  build os        = linux-gnu

  CC              = gcc
  CFLAGS          = -pthread -march=native -O2 -msse3 -fomit-frame-pointer -pipe
  CPPFLAGS        =   -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3  -DHAVE_BUILD_INFO -DPROVIDE_FUZZ_MAIN_FUNCTION 
  CXX             = g++ -std=c++17
  CXXFLAGS        =    -fstack-reuse=none -Wstack-protector -fstack-protector-all -fcf-protection=full -fstack-clash-protection      -fno-extended-identifiers -march=native -O2 -msse3 -fomit-frame-pointer -pipe
  LDFLAGS         =  -lpthread  -Wl,-z,relro -Wl,-z,now -Wl,-z,separate-code -pie   
  AR              = /usr/bin/ar
  ARFLAGS         = cr

It reports the features and libs, which going to be built in the compiled software. As the options for the wallet were enabled, the configure reports the build script will build wallet functionality, too. In fact, if sqlite and bdb libraries are missing, the wallet won’t be built even if it was included in the configure script options. So check the last screen of the configure script (the output of the ./configure command above). The GUI won’t be built (with gui / qt = no), because there missing libraries, and this article is only a command line online.
The building of the Groestlcoin Core with the wallet is relatively fast on 4-8 cores and after a few minutes, the software is ready to be installed on the configured path and to be used.

STEP 3) Run the Groestlcoin node.

Check everything is OK and then run the groestlcoind daemon, which will connect to the network and will save the blockchain in home directory/.groestlcoin/ (in the current set up under /home/myuser/.groestlcoin/).
ls command shows the additional programs in the package.

myuser@mydesktop:~/groestlcoin-core/bin$ cd /home/myuser/groestlcoin-core/bin/
myuser@mydesktop:~/groestlcoin-core/bin$ ls -al
total 25388
drwxrwxr-x 2 myuser myuser     4096 Aug 17 14:29 .
drwxrwxr-x 6 myuser myuser     4096 Aug 17 14:29 ..
-rwxr-xr-x 1 myuser myuser  1085888 Aug 17 14:29 groestlcoin-cli
-rwxr-xr-x 1 myuser myuser 13260936 Aug 17 14:29 groestlcoind
-rwxr-xr-x 1 myuser myuser  3268464 Aug 17 14:29 groestlcoin-tx
-rwxr-xr-x 1 myuser myuser  1116416 Aug 17 14:29 groestlcoin-util
-rwxr-xr-x 1 myuser myuser  7249704 Aug 17 14:29 groestlcoin-wallet
myuser@mydesktop:~/groestlcoin-core/bin$  ./groestlcoind --version
Groestlcoin Core version v25.0.0
Copyright (C) 2014-2023 The Groestlcoin Core developers
Copyright (C) 2009-2023 The Bitcoin Core developers

Please contribute if you find Groestlcoin Core useful. Visit
<https://groestlcoin.org/> for further information about the software.
The source code is available from <https://github.com/Groestlcoin/groestlcoin>.

This is experimental software.
Distributed under the MIT software license, see the accompanying file COPYING
or <https://opensource.org/licenses/MIT>

Most used programs are groestlcoind and groestlcoin-cli, which offers a command line management of a Groestlcoin wallet addresses.

Run the Groestlcoin daemon with

myuser@mydesktop:~/groestlcoin-core/bin$ #./groestlcoind &> ./groestlcoind.log

The output will be redirected to the ./groestlcoind.log and it starts with the following:

myuser@mydesktop:~/groestlcoin-core/bin$ cat ./groestlcoind.log
2023-08-17T12:06:48Z Groestlcoin Core version v25.0.0 (release build)
2023-08-17T12:06:48Z Using the 'sse4(1way),sse41(4way),avx2(8way)' SHA256 implementation
2023-08-17T12:06:48Z Using RdSeed as an additional entropy source
2023-08-17T12:06:48Z Using RdRand as an additional entropy source
2023-08-17T12:06:48Z Default data directory /home/myuser/.groestlcoin
2023-08-17T12:06:48Z Using data directory /home/myuser/.groestlcoin
2023-08-17T12:06:48Z Config file: /home/myuser/.groestlcoin/groestlcoin.conf (not found, skipping)
2023-08-17T12:06:48Z Using at most 125 automatic connections (1024 file descriptors available)
2023-08-17T12:06:48Z Using 16 MiB out of 16 MiB requested for signature cache, able to store 524288 elements
2023-08-17T12:06:48Z Using 16 MiB out of 16 MiB requested for script execution cache, able to store 524288 elements
2023-08-17T12:06:48Z Script verification uses 1 additional threads
2023-08-17T12:06:48Z scheduler thread start
2023-08-17T12:06:48Z Binding RPC on address ::1 port 1441
2023-08-17T12:06:48Z Binding RPC on address 127.0.0.1 port 1441
2023-08-17T12:06:48Z [http] creating work queue of depth 16
2023-08-17T12:06:48Z Using random cookie authentication.
2023-08-17T12:06:48Z Generated RPC authentication cookie /home/myuser/.groestlcoin/.cookie
2023-08-17T12:06:48Z [http] starting 4 worker threads
2023-08-17T12:06:48Z Using wallet directory /home/myuser/.groestlcoin/wallets
2023-08-17T12:06:48Z init message: Verifying wallet(s)…
2023-08-17T12:06:48Z Using /16 prefix for IP bucketing
2023-08-17T12:06:48Z init message: Loading P2P addresses…
2023-08-17T12:06:48Z Creating peers.dat because the file was not found ("/home/myuser/.groestlcoin/peers.dat")
2023-08-17T12:06:48Z init message: Loading banlist…
2023-08-17T12:06:48Z Recreating the banlist database
2023-08-17T12:06:48Z SetNetworkActive: true
2023-08-17T12:06:48Z Failed to read fee estimates from /home/myuser/.groestlcoin/fee_estimates.dat. Continue anyway.
2023-08-17T12:06:48Z Cache configuration:
2023-08-17T12:06:48Z * Using 2.0 MiB for block index database
2023-08-17T12:06:48Z * Using 8.0 MiB for chain state database
2023-08-17T12:06:48Z * Using 440.0 MiB for in-memory UTXO set (plus up to 286.1 MiB of unused mempool space)
2023-08-17T12:06:48Z init message: Loading block index…
2023-08-17T12:06:48Z Assuming ancestors of block 0000000000000a9dfdf648ef3ff356d06e6145baae1d7b9d333a47e5445c55c8 have valid signatures.
2023-08-17T12:06:48Z Setting nMinimumChainWork=00000000000000000000000000000000000000000000015afedaa4b53f69802c
2023-08-17T12:06:48Z Opening LevelDB in /home/myuser/.groestlcoin/blocks/index
2023-08-17T12:06:48Z Opened LevelDB successfully
2023-08-17T12:06:48Z Using obfuscation key for /home/myuser/.groestlcoin/blocks/index: 0000000000000000
2023-08-17T12:06:48Z LoadBlockIndexDB: last block file = 0
2023-08-17T12:06:48Z LoadBlockIndexDB: last block file info: CBlockFileInfo(blocks=0, size=0, heights=0...0, time=1970-01-01...1970-01-01)
2023-08-17T12:06:48Z Checking all blk files are present...
2023-08-17T12:06:48Z Initializing databases...
2023-08-17T12:06:48Z Initializing chainstate Chainstate [ibd] @ height -1 (null)
2023-08-17T12:06:48Z Opening LevelDB in /home/myuser/.groestlcoin/chainstate
2023-08-17T12:06:48Z Opened LevelDB successfully
2023-08-17T12:06:48Z Wrote new obfuscate key for /home/myuser/.groestlcoin/chainstate: cd5ae8554cabd618
2023-08-17T12:06:48Z Using obfuscation key for /home/myuser/.groestlcoin/chainstate: cd5ae8554cabd618
2023-08-17T12:06:48Z [snapshot] allocating all cache to the IBD chainstate
2023-08-17T12:06:48Z Opening LevelDB in /home/myuser/.groestlcoin/chainstate
2023-08-17T12:06:48Z Opened LevelDB successfully
2023-08-17T12:06:48Z Using obfuscation key for /home/myuser/.groestlcoin/chainstate: cd5ae8554cabd618
2023-08-17T12:06:48Z [Chainstate [ibd] @ height -1 (null)] resized coinsdb cache to 8.0 MiB
2023-08-17T12:06:48Z [Chainstate [ibd] @ height -1 (null)] resized coinstip cache to 440.0 MiB
2023-08-17T12:06:48Z init message: Verifying blocks…
2023-08-17T12:06:48Z  block index              55ms
2023-08-17T12:06:48Z Setting NODE_NETWORK on non-prune mode
2023-08-17T12:06:48Z loadblk thread start
2023-08-17T12:06:48Z UpdateTip: new best=00000ac5927c594d49cc0bdb81759d0da8297eb614683d3acb62f0703b639023 height=0 version=0x00000070 log2_work=20.000001 tx=1 date='2014-03-20T19:13:49Z' progress=0.000000 cache=0.0MiB(0txo)
2023-08-17T12:06:48Z block tree size = 1
2023-08-17T12:06:48Z nBestHeight = 0
2023-08-17T12:06:48Z Failed to open mempool file from disk. Continuing anyway.
2023-08-17T12:06:48Z loadblk thread exit
2023-08-17T12:06:48Z torcontrol thread start
2023-08-17T12:06:48Z Bound to 127.0.0.1:1444
2023-08-17T12:06:48Z Bound to [::]:1331
2023-08-17T12:06:48Z Bound to 0.0.0.0:1331
2023-08-17T12:06:48Z 0 block-relay-only anchors will be tried for connections.
2023-08-17T12:06:48Z init message: Starting network threads…
2023-08-17T12:06:48Z net thread start
2023-08-17T12:06:48Z init message: Done loading
2023-08-17T12:06:48Z addcon thread start
2023-08-17T12:06:48Z msghand thread start
2023-08-17T12:06:48Z dnsseed thread start
2023-08-17T12:06:48Z Loading addresses from DNS seed dnsseed4.groestlcoin.org.
2023-08-17T12:06:48Z opencon thread start
2023-08-17T12:06:48Z Loading addresses from DNS seed dnsseed1.groestlcoin.org.
2023-08-17T12:06:48Z Loading addresses from DNS seed dnsseed3.groestlcoin.org.
2023-08-17T12:06:48Z Loading addresses from DNS seed dnsseed2.groestlcoin.org.
2023-08-17T12:06:48Z 49 addresses found from DNS seeds
2023-08-17T12:06:48Z dnsseed thread exit
2023-08-17T12:06:49Z New outbound peer connected: version: 70016, blocks=4717740, peer=0 (outbound-full-relay)
2023-08-17T12:06:50Z Pre-synchronizing blockheaders, height: 2000 (~0.04%)
2023-08-17T12:06:50Z Pre-synchronizing blockheaders, height: 4000 (~0.08%)
2023-08-17T12:06:51Z Pre-synchronizing blockheaders, height: 6000 (~0.12%)
2023-08-17T12:06:52Z Pre-synchronizing blockheaders, height: 8000 (~0.16%)
2023-08-17T12:06:53Z Pre-synchronizing blockheaders, height: 10000 (~0.20%)
2023-08-17T12:06:54Z Pre-synchronizing blockheaders, height: 12000 (~0.24%)
2023-08-17T12:06:54Z Pre-synchronizing blockheaders, height: 14000 (~0.28%)
2023-08-17T12:06:55Z Pre-synchronizing blockheaders, height: 16000 (~0.32%)
2023-08-17T12:06:56Z Pre-synchronizing blockheaders, height: 18000 (~0.36%)
2023-08-17T12:06:56Z New outbound peer connected: version: 70016, blocks=4717740, peer=2 (outbound-full-relay)
2023-08-17T12:06:57Z Pre-synchronizing blockheaders, height: 20000 (~0.40%)
2023-08-17T12:06:57Z Pre-synchronizing blockheaders, height: 22000 (~0.44%)
2023-08-17T12:06:58Z Pre-synchronizing blockheaders, height: 24000 (~0.49%)
2023-08-17T12:06:58Z New outbound peer connected: version: 70016, blocks=4717740, peer=3 (outbound-full-relay)
2023-08-17T12:06:58Z Pre-synchronizing blockheaders, height: 26000 (~0.53%)
2023-08-17T12:06:59Z New outbound peer connected: version: 70016, blocks=4717740, peer=4 (outbound-full-relay)
2023-08-17T12:06:59Z Pre-synchronizing blockheaders, height: 28000 (~0.57%)
2023-08-17T12:07:00Z Pre-synchronizing blockheaders, height: 30000 (~0.61%)
2023-08-17T12:07:00Z New outbound peer connected: version: 70016, blocks=4717740, peer=5 (outbound-full-relay)
2023-08-17T12:07:00Z New outbound peer connected: version: 70016, blocks=4717740, peer=6 (outbound-full-relay)
2023-08-17T12:07:00Z Pre-synchronizing blockheaders, height: 32000 (~0.65%)
......
......
2023-08-17T12:12:13Z Pre-synchronizing blockheaders, height: 2998000 (~62.39%)
2023-08-17T12:12:14Z Pre-synchronizing blockheaders, height: 3000000 (~62.43%)
2023-08-17T12:12:14Z Pre-synchronizing blockheaders, height: 3002000 (~62.47%)
2023-08-17T12:12:15Z Pre-synchronizing blockheaders, height: 3004000 (~62.52%)
2023-08-17T12:12:15Z Pre-synchronizing blockheaders, height: 3006000 (~62.56%)
2023-08-17T12:12:16Z Pre-synchronizing blockheaders, height: 3008000 (~62.60%)
2023-08-17T12:12:16Z Pre-synchronizing blockheaders, height: 3010000 (~62.64%)
2023-08-17T12:12:16Z Pre-synchronizing blockheaders, height: 3012000 (~62.69%)
2023-08-17T12:12:17Z Pre-synchronizing blockheaders, height: 3014000 (~62.73%)
2023-08-17T12:12:17Z Pre-synchronizing blockheaders, height: 3016000 (~62.77%)
2023-08-17T12:12:17Z Pre-synchronizing blockheaders, height: 3018000 (~62.82%)
......
......
2023-08-17T12:16:28Z Pre-synchronizing blockheaders, height: 4546000 (~96.18%)
2023-08-17T12:16:29Z Pre-synchronizing blockheaders, height: 4548000 (~96.23%)
2023-08-17T12:16:29Z Pre-synchronizing blockheaders, height: 4550000 (~96.27%)
2023-08-17T12:16:29Z Pre-synchronizing blockheaders, height: 4552000 (~96.31%)
2023-08-17T12:16:30Z Pre-synchronizing blockheaders, height: 4554000 (~96.36%)
2023-08-17T12:16:33Z Synchronizing blockheaders, height: 41 (~0.00%)
2023-08-17T12:16:33Z Synchronizing blockheaders, height: 2041 (~0.04%)
2023-08-17T12:16:34Z Synchronizing blockheaders, height: 4041 (~0.08%)
2023-08-17T12:16:34Z Synchronizing blockheaders, height: 6041 (~0.12%)
2023-08-17T12:16:35Z Synchronizing blockheaders, height: 8041 (~0.16%)
2023-08-17T12:16:35Z Synchronizing blockheaders, height: 10041 (~0.20%)
2023-08-17T12:16:35Z Synchronizing blockheaders, height: 12041 (~0.24%)
2023-08-17T12:16:35Z Synchronizing blockheaders, height: 14041 (~0.28%)
2023-08-17T12:16:36Z Synchronizing blockheaders, height: 16041 (~0.32%)
......
......
2023-08-17T12:18:02Z Synchronizing blockheaders, height: 252041 (~5.09%)
2023-08-17T12:18:03Z Potential stale tip detected, will try using extra outbound peer (last tip update: 675 seconds ago)
2023-08-17T12:18:04Z Synchronizing blockheaders, height: 254041 (~5.13%)
2023-08-17T12:18:05Z Synchronizing blockheaders, height: 256041 (~5.17%)
2023-08-17T12:18:06Z Synchronizing blockheaders, height: 258041 (~5.21%)
2023-08-17T12:18:06Z New outbound peer connected: version: 70016, blocks=4717752, peer=15 (outbound-full-relay)
2023-08-17T12:18:07Z Synchronizing blockheaders, height: 260041 (~5.25%)
2023-08-17T12:18:08Z Synchronizing blockheaders, height: 262041 (~5.29%)
2023-08-17T12:18:09Z Synchronizing blockheaders, height: 264041 (~5.33%)
2023-08-17T12:18:10Z Synchronizing blockheaders, height: 266041 (~5.37%)
......
......

So now, the node is up and running, but still copies the blocks from the network. So, the node is still in synchronizing state. After a couple of minutes of “Pre-synchronizing” state, it will begin the real synchronizing stage.

With “groestlcoin-cli” we can check the process of synchronization.
At first, when the pre-synchronizing is working. The blocks and headers are both 0.

myuser@mydesktop:~/groestlcoin-core/bin$ ./groestlcoin-cli getblockchaininfo
{
  "chain": "main",
  "blocks": 0,
  "headers": 0,
  "bestblockhash": "00000ac5927c594d49cc0bdb81759d0da8297eb614683d3acb62f0703b639023",
  "difficulty": 0.0002441371325370145,
  "time": 1395342829,
  "mediantime": 1395342829,
  "verificationprogress": 1.649850751462372e-07,
  "initialblockdownload": true,
  "chainwork": "0000000000000000000000000000000000000000000000000000000000100001",
  "size_on_disk": 274,
  "pruned": false,
  "warnings": ""
}
myuser@mydesktop:~/groestlcoin-core/bin$ tail -n 10 ./groestlcoind.log
2023-08-17T12:58:07Z Pre-synchronizing blockheaders, height: 836000 (~16.98%)
2023-08-17T12:58:08Z Pre-synchronizing blockheaders, height: 840000 (~17.06%)
2023-08-17T12:58:08Z Pre-synchronizing blockheaders, height: 844000 (~17.15%)
2023-08-17T12:58:08Z Pre-synchronizing blockheaders, height: 848000 (~17.23%)
2023-08-17T12:58:08Z Pre-synchronizing blockheaders, height: 852000 (~17.31%)
2023-08-17T12:58:09Z Pre-synchronizing blockheaders, height: 856000 (~17.39%)
2023-08-17T12:58:09Z Pre-synchronizing blockheaders, height: 860000 (~17.47%)
2023-08-17T12:58:09Z Pre-synchronizing blockheaders, height: 864000 (~17.56%)
2023-08-17T12:58:10Z Pre-synchronizing blockheaders, height: 868000 (~17.64%)
2023-08-17T12:58:10Z Pre-synchronizing blockheaders, height: 872000 (~17.72%)

Second, when the synchronizing of the headers stage is on. The headers are increasing while the blocks stay 0.

myuser@mydesktop:~/groestlcoin-core/bin$ ./groestlcoin-cli getblockchaininfo
{
  "chain": "main",
  "blocks": 0,
  "headers": 278041,
  "bestblockhash": "00000ac5927c594d49cc0bdb81759d0da8297eb614683d3acb62f0703b639023",
  "difficulty": 0.0002441371325370145,
  "time": 1395342829,
  "mediantime": 1395342829,
  "verificationprogress": 1.649849661224583e-07,
  "initialblockdownload": true,
  "chainwork": "0000000000000000000000000000000000000000000000000000000000100001",
  "size_on_disk": 274,
  "pruned": false,
  "warnings": ""
}
myuser@mydesktop:~/groestlcoin-core/bin$ tail -n 10 ./groestlcoind.log
2023-08-17T13:01:39Z Synchronizing blockheaders, height: 274041 (~5.53%)
2023-08-17T13:01:40Z Synchronizing blockheaders, height: 276041 (~5.57%)
2023-08-17T13:01:40Z Synchronizing blockheaders, height: 278041 (~5.61%)
2023-08-17T13:01:41Z Synchronizing blockheaders, height: 280041 (~5.66%)
2023-08-17T13:01:42Z Synchronizing blockheaders, height: 282041 (~5.70%)
2023-08-17T13:01:42Z Synchronizing blockheaders, height: 284041 (~5.74%)
2023-08-17T13:01:43Z Synchronizing blockheaders, height: 286041 (~5.78%)
2023-08-17T13:01:44Z Synchronizing blockheaders, height: 288041 (~5.82%)
2023-08-17T13:01:44Z Synchronizing blockheaders, height: 290041 (~5.86%)
2023-08-17T13:01:45Z Synchronizing blockheaders, height: 292041 (~5.90%)

And the third stage, when the blocks are updated and saved in the nodes. The headers and blocks are advancing.

myuser@mydesktop:~/groestlcoin-core/bin$ ./groestlcoin-cli getblockchaininfo
{
  "chain": "main",
  "blocks": 612559,
  "headers": 4717828,
  "bestblockhash": "0000000004ee88e0bd762d022869ec6d2aea4808cd318daef3a68e3544ee54d8",
  "difficulty": 8.460137363468579,
  "time": 1432960532,
  "mediantime": 1432960367,
  "verificationprogress": 0.1660944777126042,
  "initialblockdownload": true,
  "chainwork": "000000000000000000000000000000000000000000000000018807cf12356542",
  "size_on_disk": 465450292,
  "pruned": false,
  "warnings": ""
}
myuser@mydesktop:~/groestlcoin-core/bin$ tail -n 10 ./groestlcoind.log
2023-08-17T13:45:49Z UpdateTip: new best=00000000057ef4db3267767975d368222b1923285960b1603aa8d0072c8b28d3 height=615657 version=0x00000070 log2_work=56.616541 tx=1010047 date='2015-06-01T10:47:49Z' progress=0.166641 cache=105.9MiB(946095txo)
2023-08-17T13:45:49Z UpdateTip: new best=000000000f02f08d7bf6a2f72ecb8e51cf2f249058603a59a244bb00f49f00c1 height=615658 version=0x00000070 log2_work=56.616541 tx=1010048 date='2015-06-01T10:48:14Z' progress=0.166641 cache=105.9MiB(946096txo)
2023-08-17T13:45:49Z UpdateTip: new best=000000000d08c01a8b13f35d2a9d58158c25219c026a0cc4dc40d07cf6e83316 height=615659 version=0x00000070 log2_work=56.616542 tx=1010050 date='2015-06-01T10:51:17Z' progress=0.166642 cache=105.9MiB(946098txo)
2023-08-17T13:45:49Z UpdateTip: new best=0000000006de31b2ffab022949f067728a24690a2b87d19bcf911c437f182715 height=615660 version=0x00000070 log2_work=56.616543 tx=1010051 date='2015-06-01T10:51:21Z' progress=0.166642 cache=105.9MiB(946099txo)
2023-08-17T13:45:49Z UpdateTip: new best=000000001250e96ce32f7e7fd8b59ae0a9de970edbbf0cf320d5b1c7e462ab1c height=615661 version=0x00000070 log2_work=56.616543 tx=1010052 date='2015-06-01T10:51:45Z' progress=0.166642 cache=105.9MiB(946100txo)
2023-08-17T13:45:49Z UpdateTip: new best=000000000be4992fc393ded06111c33d6efdd1372ae0a8e783622594a3d18409 height=615662 version=0x00000070 log2_work=56.616544 tx=1010053 date='2015-06-01T10:53:56Z' progress=0.166642 cache=105.9MiB(946101txo)
2023-08-17T13:45:49Z UpdateTip: new best=0000000013b739bc8f2fdf28318d800d4f5df359c9e69dd4b041389b4c5d670d height=615663 version=0x00000070 log2_work=56.616545 tx=1010054 date='2015-06-01T10:54:31Z' progress=0.166642 cache=105.9MiB(946102txo)
2023-08-17T13:45:49Z UpdateTip: new best=00000000034daa9493447c9f1d83e3bd23fbaffde2bf3b96bff0fb4221a89ca2 height=615664 version=0x00000070 log2_work=56.616545 tx=1010055 date='2015-06-01T10:54:38Z' progress=0.166643 cache=105.9MiB(946103txo)
2023-08-17T13:45:49Z UpdateTip: new best=000000000e7328264cd0c0b9da1a2e4b976d136d2d41a1ac53fe1d759b9a821f height=615665 version=0x00000070 log2_work=56.616546 tx=1010056 date='2015-06-01T10:54:44Z' progress=0.166643 cache=105.9MiB(946104txo)
2023-08-17T13:45:49Z UpdateTip: new best=000000000d1d2426de2b9c4b57151c93d77a85e6aaca2ade5cfc8db635af513f height=615666 version=0x00000070 log2_work=56.616547 tx=1010059 date='2015-06-01T11:02:56Z' progress=0.166643 cache=105.9MiB(946110txo)

The “blocks” are 612559 the total of 4717828. When “blocks” count equalize with the “headers” your Groestlcoin (wallet) node is synchronized successfully and the debug.log will just only output a couple of lines every minutes:

myuser@mydesktop:~/groestlcoin-core/bin$ ./groestlcoin-cli getblockchaininfo
{
  "chain": "main",
  "blocks": 4717996,
  "headers": 4717996,
  "bestblockhash": "0000000000002de0cd048ca43a1da0d0b74f4e572c14154158a1c93b82800d50",
  "difficulty": 358681.8878206132,
  "time": 1692290299,
  "mediantime": 1692289731,
  "verificationprogress": 0.9999990843266201,
  "initialblockdownload": false,
  "chainwork": "00000000000000000000000000000000000000000000016d1dc217abbe9e09e4",
  "size_on_disk": 3030844527,
  "pruned": false,
  "warnings": ""
}
myuser@mydesktop:~/groestlcoin-core/bin$ tail groestlcoind.log 
2023-08-17T16:37:22Z Saw new header hash=000000000000134b02314a120250641a9afe06991728600a2d013a654dff8fd8 height=4717994
2023-08-17T16:37:22Z [net] Saw new cmpctblock header hash=000000000000134b02314a120250641a9afe06991728600a2d013a654dff8fd8 peer=9
2023-08-17T16:37:22Z UpdateTip: new best=000000000000134b02314a120250641a9afe06991728600a2d013a654dff8fd8 height=4717994 version=0x20000000 log2_work=72.512211 tx=6059565 date='2023-08-17T16:37:09Z' progress=1.000000 cache=569.1MiB(5274018txo)
2023-08-17T16:38:19Z Saw new header hash=000000000000180519a1696fa1d2cc68d80a10a6577a2a201c091c52bffcb2d2 height=4717995
2023-08-17T16:38:19Z UpdateTip: new best=000000000000180519a1696fa1d2cc68d80a10a6577a2a201c091c52bffcb2d2 height=4717995 version=0x20000000 log2_work=72.512212 tx=6059567 date='2023-08-17T16:38:03Z' progress=1.000000 cache=569.1MiB(5274020txo)
2023-08-17T16:38:38Z Saw new header hash=0000000000002de0cd048ca43a1da0d0b74f4e572c14154158a1c93b82800d50 height=4717996
2023-08-17T16:38:38Z [net] Saw new cmpctblock header hash=0000000000002de0cd048ca43a1da0d0b74f4e572c14154158a1c93b82800d50 peer=9
2023-08-17T16:38:38Z UpdateTip: new best=0000000000002de0cd048ca43a1da0d0b74f4e572c14154158a1c93b82800d50 height=4717996 version=0x20000000 log2_work=72.512212 tx=6059568 date='2023-08-17T16:38:19Z' progress=1.000000 cache=569.1MiB(5274021txo)
2023-08-17T16:43:21Z Saw new header hash=0000000000002263320bc904a381b428502f99b684188c6f15baf82a4e54faa3 height=4717997
2023-08-17T16:43:21Z UpdateTip: new best=0000000000002263320bc904a381b428502f99b684188c6f15baf82a4e54faa3 height=4717997 version=0x20000000 log2_work=72.512212 tx=6059571 date='2023-08-17T16:43:14Z' progress=1.000000 cache=569.1MiB(5274018txo)

The starting date of the line will differ with a couple of seconds of the date in the transaction – the “date=” after the “tx=”.
Now the user can use this Groestlcoin (wallet) node for transactions.

main menu
groestlcoin-cli getblockchaininfo network synchronized

At present, with SSD and 8G RAM on a intel i7 processor and a fast Internet connection 1000Mbps the full synchronization took about 90 minutes and 3.6G of storage space (without the logs space).

myuser@mydesktop:~/.groestlcoin$ ls -altrh blocks/
total 2.9G
-rw------- 1 ubuntu ubuntu 128M Aug 17 13:38 blk00000.dat
-rw------- 1 ubuntu ubuntu  22M Aug 17 13:38 rev00000.dat
-rw------- 1 ubuntu ubuntu 128M Aug 17 13:42 blk00001.dat
-rw------- 1 ubuntu ubuntu  24M Aug 17 13:42 rev00001.dat
-rw------- 1 ubuntu ubuntu 128M Aug 17 13:46 blk00002.dat
-rw------- 1 ubuntu ubuntu  25M Aug 17 13:46 rev00002.dat
-rw------- 1 ubuntu ubuntu 128M Aug 17 13:49 blk00003.dat
-rw------- 1 ubuntu ubuntu  26M Aug 17 13:49 rev00003.dat
-rw------- 1 ubuntu ubuntu 128M Aug 17 13:53 blk00004.dat
-rw------- 1 ubuntu ubuntu  26M Aug 17 13:53 rev00004.dat
-rw------- 1 ubuntu ubuntu 128M Aug 17 13:58 blk00005.dat
-rw------- 1 ubuntu ubuntu  25M Aug 17 13:58 rev00005.dat
-rw------- 1 ubuntu ubuntu 128M Aug 17 14:00 blk00006.dat
-rw------- 1 ubuntu ubuntu  21M Aug 17 14:00 rev00006.dat
-rw------- 1 ubuntu ubuntu 128M Aug 17 14:02 blk00007.dat
-rw------- 1 ubuntu ubuntu  22M Aug 17 14:02 rev00007.dat
-rw------- 1 ubuntu ubuntu 128M Aug 17 14:05 blk00008.dat
-rw------- 1 ubuntu ubuntu  20M Aug 17 14:05 rev00008.dat
-rw------- 1 ubuntu ubuntu 128M Aug 17 14:08 blk00009.dat
-rw------- 1 ubuntu ubuntu  20M Aug 17 14:08 rev00009.dat
-rw------- 1 ubuntu ubuntu 128M Aug 17 14:10 blk00010.dat
-rw------- 1 ubuntu ubuntu  21M Aug 17 14:10 rev00010.dat
-rw------- 1 ubuntu ubuntu 128M Aug 17 14:13 blk00011.dat
-rw------- 1 ubuntu ubuntu  21M Aug 17 14:13 rev00011.dat
-rw------- 1 ubuntu ubuntu 128M Aug 17 14:15 blk00012.dat
-rw------- 1 ubuntu ubuntu  20M Aug 17 14:15 rev00012.dat
-rw------- 1 ubuntu ubuntu 128M Aug 17 14:18 blk00013.dat
-rw------- 1 ubuntu ubuntu  20M Aug 17 14:18 rev00013.dat
-rw------- 1 ubuntu ubuntu 128M Aug 17 14:21 blk00014.dat
-rw------- 1 ubuntu ubuntu  20M Aug 17 14:21 rev00014.dat
-rw------- 1 ubuntu ubuntu 128M Aug 17 14:24 blk00015.dat
-rw------- 1 ubuntu ubuntu  21M Aug 17 14:24 rev00015.dat
-rw------- 1 ubuntu ubuntu 128M Aug 17 14:26 blk00016.dat
-rw------- 1 ubuntu ubuntu  20M Aug 17 14:26 rev00016.dat
-rw------- 1 ubuntu ubuntu 128M Aug 17 14:29 blk00017.dat
-rw------- 1 ubuntu ubuntu  20M Aug 17 14:29 rev00017.dat
-rw------- 1 ubuntu ubuntu 128M Aug 17 14:32 blk00018.dat
drwx------ 3 ubuntu ubuntu 4.0K Aug 17 14:32 .
-rw------- 1 ubuntu ubuntu  20M Aug 17 14:32 rev00018.dat
drwx------ 2 ubuntu ubuntu  20K Aug 17 15:57 index
drwx------ 5 ubuntu ubuntu 4.0K Aug 17 16:42 ..
-rw------- 1 ubuntu ubuntu 8.0M Aug 17 16:53 rev00019.dat
-rw------- 1 ubuntu ubuntu  48M Aug 17 16:53 blk00019.dat

You are ready to use “groestlcoin-cli” or the others program to manage your funds – for example, send, receive, and check the balance of your funds.
If you stop and start the program it will start the synchronization from the point you stopped.

Groestlcoin cli (groestlcoin-cli) utility

Here is the help command with the full list of available commands, which could be executed by the Groestlcoin cli.

myuser@mydesktop:~/groestlcoin-core/bin$ ./groestlcoin-cli help
== Blockchain ==
getbestblockhash
getblock "blockhash" ( verbosity )
getblockchaininfo
getblockcount
getblockfilter "blockhash" ( "filtertype" )
getblockfrompeer "blockhash" peer_id
getblockhash height
getblockheader "blockhash" ( verbose )
getblockstats hash_or_height ( stats )
getchaintips
getchaintxstats ( nblocks "blockhash" )
getdeploymentinfo ( "blockhash" )
getdifficulty
getmempoolancestors "txid" ( verbose )
getmempooldescendants "txid" ( verbose )
getmempoolentry "txid"
getmempoolinfo
getrawmempool ( verbose mempool_sequence )
gettxout "txid" n ( include_mempool )
gettxoutproof ["txid",...] ( "blockhash" )
gettxoutsetinfo ( "hash_type" hash_or_height use_index )
gettxspendingprevout [{"txid":"hex","vout":n},...]
preciousblock "blockhash"
pruneblockchain height
savemempool
scanblocks "action" ( [scanobjects,...] start_height stop_height "filtertype" "options" )
scantxoutset "action" ( [scanobjects,...] )
verifychain ( checklevel nblocks )
verifytxoutproof "proof"

== Control ==
getmemoryinfo ( "mode" )
getrpcinfo
help ( "command" )
logging ( ["include_category",...] ["exclude_category",...] )
stop
uptime

== Mining ==
getblocktemplate ( "template_request" )
getmininginfo
getnetworkhashps ( nblocks height )
prioritisetransaction "txid" ( dummy ) fee_delta
submitblock "hexdata" ( "dummy" )
submitheader "hexdata"

== Network ==
addnode "node" "command"
clearbanned
disconnectnode ( "address" nodeid )
getaddednodeinfo ( "node" )
getconnectioncount
getnettotals
getnetworkinfo
getnodeaddresses ( count "network" )
getpeerinfo
listbanned
ping
setban "subnet" "command" ( bantime absolute )
setnetworkactive state

== Rawtransactions ==
analyzepsbt "psbt"
combinepsbt ["psbt",...]
combinerawtransaction ["hexstring",...]
converttopsbt "hexstring" ( permitsigdata iswitness )
createpsbt [{"txid":"hex","vout":n,"sequence":n},...] [{"address":amount,...},{"data":"hex"},...] ( locktime replaceable )
createrawtransaction [{"txid":"hex","vout":n,"sequence":n},...] [{"address":amount,...},{"data":"hex"},...] ( locktime replaceable )
decodepsbt "psbt"
decoderawtransaction "hexstring" ( iswitness )
decodescript "hexstring"
finalizepsbt "psbt" ( extract )
fundrawtransaction "hexstring" ( options iswitness )
getrawtransaction "txid" ( verbosity "blockhash" )
joinpsbts ["psbt",...]
sendrawtransaction "hexstring" ( maxfeerate maxburnamount )
signrawtransactionwithkey "hexstring" ["privatekey",...] ( [{"txid":"hex","vout":n,"scriptPubKey":"hex","redeemScript":"hex","witnessScript":"hex","amount":amount},...] "sighashtype" )
testmempoolaccept ["rawtx",...] ( maxfeerate )
utxoupdatepsbt "psbt" ( ["",{"desc":"str","range":n or [n,n]},...] )

== Signer ==
enumeratesigners

== Util ==
createmultisig nrequired ["key",...] ( "address_type" )
deriveaddresses "descriptor" ( range )
estimatesmartfee conf_target ( "estimate_mode" )
getdescriptorinfo "descriptor"
getindexinfo ( "index_name" )
signmessagewithprivkey "privkey" "message"
validateaddress "address"
verifymessage "address" "signature" "message"

== Wallet ==
abandontransaction "txid"
abortrescan
addmultisigaddress nrequired ["key",...] ( "label" "address_type" )
backupwallet "destination"
bumpfee "txid" ( options )
createwallet "wallet_name" ( disable_private_keys blank "passphrase" avoid_reuse descriptors load_on_startup external_signer )
dumpprivkey "address"
dumpwallet "filename"
encryptwallet "passphrase"
getaddressesbylabel "label"
getaddressinfo "address"
getbalance ( "dummy" minconf include_watchonly avoid_reuse )
getbalances
getnewaddress ( "label" "address_type" )
getrawchangeaddress ( "address_type" )
getreceivedbyaddress "address" ( minconf include_immature_coinbase )
getreceivedbylabel "label" ( minconf include_immature_coinbase )
gettransaction "txid" ( include_watchonly verbose )
getunconfirmedbalance
getwalletinfo
importaddress "address" ( "label" rescan p2sh )
importdescriptors "requests"
importmulti "requests" ( "options" )
importprivkey "privkey" ( "label" rescan )
importprunedfunds "rawtransaction" "txoutproof"
importpubkey "pubkey" ( "label" rescan )
importwallet "filename"
keypoolrefill ( newsize )
listaddressgroupings
listdescriptors ( private )
listlabels ( "purpose" )
listlockunspent
listreceivedbyaddress ( minconf include_empty include_watchonly "address_filter" include_immature_coinbase )
listreceivedbylabel ( minconf include_empty include_watchonly include_immature_coinbase )
listsinceblock ( "blockhash" target_confirmations include_watchonly include_removed include_change "label" )
listtransactions ( "label" count skip include_watchonly )
listunspent ( minconf maxconf ["address",...] include_unsafe query_options )
listwalletdir
listwallets
loadwallet "filename" ( load_on_startup )
lockunspent unlock ( [{"txid":"hex","vout":n},...] persistent )
migratewallet ( "wallet_name" "passphrase" )
newkeypool
psbtbumpfee "txid" ( options )
removeprunedfunds "txid"
rescanblockchain ( start_height stop_height )
restorewallet "wallet_name" "backup_file" ( load_on_startup )
send [{"address":amount,...},{"data":"hex"},...] ( conf_target "estimate_mode" fee_rate options )
sendall ["address",{"address":amount,...},...] ( conf_target "estimate_mode" fee_rate options )
sendmany ( "" ) {"address":amount,...} ( minconf "comment" ["address",...] replaceable conf_target "estimate_mode" fee_rate verbose )
sendtoaddress "address" amount ( "comment" "comment_to" subtractfeefromamount replaceable conf_target "estimate_mode" avoid_reuse fee_rate verbose )
sethdseed ( newkeypool "seed" )
setlabel "address" "label"
settxfee amount
setwalletflag "flag" ( value )
signmessage "address" "message"
signrawtransactionwithwallet "hexstring" ( [{"txid":"hex","vout":n,"scriptPubKey":"hex","redeemScript":"hex","witnessScript":"hex","amount":amount},...] "sighashtype" )
simulaterawtransaction ( ["rawtx",...] {"include_watchonly":bool,...} )
unloadwallet ( "wallet_name" load_on_startup )
upgradewallet ( version )
walletcreatefundedpsbt ( [{"txid":"hex","vout":n,"sequence":n,"weight":n},...] ) [{"address":amount,...},{"data":"hex"},...] ( locktime options bip32derivs )
walletdisplayaddress "address"
walletlock
walletpassphrase "passphrase" timeout
walletpassphrasechange "oldpassphrase" "newpassphrase"
walletprocesspsbt "psbt" ( sign "sighashtype" bip32derivs finalize )

== Zmq ==
getzmqnotifications

In addition to the help command, there are options, which can be seen with “-h”:

myuser@mydesktop:~/groestlcoin-core/bin$ ./groestlcoin-cli -h
Groestlcoin Core RPC client version v25.0.0

Usage:  groestlcoin-cli [options] <command> [params]  Send command to Groestlcoin Core
or:     groestlcoin-cli [options] -named <command> [name=value]...  Send command to Groestlcoin Core (with named arguments)
or:     groestlcoin-cli [options] help                List commands
or:     groestlcoin-cli [options] help <command>      Get help for a command

Options:

  -?
       Print this help message and exit

  -addrinfo
       Get the number of addresses known to the node, per network and total,
       after filtering for quality and recency. The total number of
       addresses known to the node may be higher.

  -color=<when>
       Color setting for CLI output (default: auto). Valid values: always, auto
       (add color codes when standard output is connected to a terminal
       and OS is not WIN32), never.

  -conf=<file>
       Specify configuration file. Relative paths will be prefixed by datadir
       location. (default: groestlcoin.conf)

  -datadir=<dir>
       Specify data directory

  -generate
       Generate blocks, equivalent to RPC getnewaddress followed by RPC
       generatetoaddress. Optional positional integer arguments are
       number of blocks to generate (default: 1) and maximum iterations
       to try (default: 100000000), equivalent to RPC generatetoaddress
       nblocks and maxtries arguments. Example: groestlcoin-cli
       -generate 4 1000000

  -getinfo
       Get general information from the remote server. Note that unlike
       server-side RPC calls, the output of -getinfo is the result of
       multiple non-atomic requests. Some entries in the output may
       represent results from different states (e.g. wallet balance may
       be as of a different block from the chain state reported)

  -named
       Pass named instead of positional arguments (default: false)

  -netinfo
       Get network peer connection information from the remote server. An
       optional integer argument from 0 to 4 can be passed for different
       peers listings (default: 0). Pass "help" for detailed help
       documentation.

  -rpcclienttimeout=<n>
       Timeout in seconds during HTTP requests, or 0 for no timeout. (default:
       900)

  -rpcconnect=<ip>
       Send commands to node running on <ip> (default: 127.0.0.1)

  -rpccookiefile=<loc>
       Location of the auth cookie. Relative paths will be prefixed by a
       net-specific datadir location. (default: data dir)

  -rpcpassword=<pw>
       Password for JSON-RPC connections

  -rpcport=<port>
       Connect to JSON-RPC on <port> (default: 1441, testnet: 17766, signet:
       31441, regtest: 18443)

  -rpcuser=<user>
       Username for JSON-RPC connections

  -rpcwait
       Wait for RPC server to start

  -rpcwaittimeout=<n>
       Timeout in seconds to wait for the RPC server to start, or 0 for no
       timeout. (default: 0)

  -rpcwallet=<walletname>
       Send RPC for non-default wallet on RPC server (needs to exactly match
       corresponding -wallet option passed to groestlcoind). This
       changes the RPC endpoint used, e.g.
       http://127.0.0.1:1441/wallet/<walletname>

  -stdin
       Read extra arguments from standard input, one per line until EOF/Ctrl-D
       (recommended for sensitive information such as passphrases). When
       combined with -stdinrpcpass, the first line from standard input
       is used for the RPC password.

  -stdinrpcpass
       Read RPC password from standard input as a single line. When combined
       with -stdin, the first line from standard input is used for the
       RPC password. When combined with -stdinwalletpassphrase,
       -stdinrpcpass consumes the first line, and -stdinwalletpassphrase
       consumes the second.

  -stdinwalletpassphrase
       Read wallet passphrase from standard input as a single line. When
       combined with -stdin, the first line from standard input is used
       for the wallet passphrase.

  -version
       Print version and exit

Debugging/Testing options:

Chain selection options:

  -chain=<chain>
       Use the chain <chain> (default: main). Allowed values: main, test,
       signet, regtest

  -signet
       Use the signet chain. Equivalent to -chain=signet. Note that the network
       is defined by the -signetchallenge parameter

  -signetchallenge
       Blocks must satisfy the given script to be considered valid (only for
       signet networks; defaults to the global default signet test
       network challenge)

  -signetseednode
       Specify a seed node for the signet network, in the hostname[:port]
       format, e.g. sig.net:1234 (may be used multiple times to specify
       multiple seed nodes; defaults to the global default signet test
       network seed node(s))

  -testnet
 

Leave a Reply

Your email address will not be published. Required fields are marked *