Setup Gridcoin Research Client on Ubuntu

Introduction

Gridcoin is cryptocurrency that rewards computation using a Distributed-Proof-of-Research (DPOR) reward mechanism. DPOR is a combination of two other mechanisms: Proof-of-BOINC (POB) and Proof-of-Stake (POS). This means Gridcoin rewards users based on work completed for BOINC, and for having stake in Gridcoin by holding Gridcoins in a wallet (earning interest). POS is used in other coins as well, such as Peercoin, Nxt, and BitShares. On the other hand, Bitcoin uses a Proof-of-Work (POW) mechanism, which rewards users based solely on their hashing power (this process is called mining).

It is important to determine if you’ll be mining or staking. Mining uses the work completed by BIONC to earn Gridcoins. Staking, however, doesn’t require BOINC, as you only earn interest on coins you hold (no need for BOINC to do work).

Setup BOINC

Install BOINC

There are plenty of tutorials online, and Gridcoin offers instructions as well. I won’t go over how to setup BOINC in detail, since I covered it in a previous post.

Choose and setup projects

You’ll need to select a project from the Gridcoin whitelist. In addition, the project you select must match your machine capabilities. In my case, I’m choosing a CPU-based project (in particular, Citizen Science Grid). Once you’ve decided on a project, sign up for it (either through the BOINC client or online). Again, I covered signing up for a project in a previous post.

Join the Gridcoin team

After you’re signed up, you need to join the Gridcoin team, as described below.

  1. Navigate to your project’s website and login
  2. Click on the Find a team link
  3. Search for “gridcoin”
  4. Click on team Gridcoin
  5. Click on the Join this team link

Setup Gridcoin Research Client

Install Gridcoin Research Client

If you’re working on Ubuntu, you have three possible way to install the Gridcoin Research Client.

  1. clone git repository and compile manually
  2. install a pre-compiled DEB package (using dpkg)
  3. add a PPA

I’m going to be using option 3, since it’s the easiest to install and keep up-to-date.

sudo add-apt-repository ppa:gridcoin/gridcoin-stable
sudo apt-get update && sudo apt-get install gridcoinresearchd

Now is a good time to open port 32749 in your firewall (the example below uses ufw) and start the Gridcoin Research Client.

sudo ufw allow 32749/tcp
sudo gridcoinresearchd

Setup config file

Next, you’ll need to create an empty configuration file for the Gridcoin client.

sudo mkdir ~/.GridcoinResearch
sudo touch ~/.GridcoinResearch/gridcoinresearch.conf

I highly recommend you encrypt your wallet (especially if it will be stored on a public server). If you lose/forget this passphrase, your Gridcoins will be lost forever. Do this at your own risk, I’m not responsible for anything you break 🙂

sudo gridcoinresearchd encryptwallet wallet_passphrase_here

Then, start the Gridcoin client again.

sudo gridcoinresearchd

Next, you’ll need to create a hashed passphrase so your wallet can be automatically unlocked by the Gridcoin client. We’re doing this because if we don’t, you’ll need to type your passphrase into the shell every time you need to unlock your wallet (and risk it possibly falling into the wrong hands).

sudo gridcoinresearchd execute encrypt wallet_passphrase_here

The information it returns will look something like the example below. Copy the passphrase between the quotation marks.

[
    {
        "Command" : "encrypt"
    },
    {
        "Passphrase" : "WcR1aNeBCcr4hsfs6WV/EQ==",
        "[Specify in config file] autounlock=" : "WcR1aNeBCcr4hsfs6WV/EQ=="
    }
]

Note – The passphrase is generated from certain attributes of the CPU and hard drive, then run through the MD5 algorithm. The procedure above will need to be repeated if the machine configuration (hardware) changes.

Populate the previous created configuration file with the necessary options. My file is below.

email=email@host.com #this has to match your BOINC project's email
server=1
daemon=1
rpcallowip=127.0.0.1
cpumining=true
rpcuser=<rpc_username>
rpcpassword=<rpc_password>
autounlock=WcR1aNeBCcr4hsfs6WV/EQ==
addnode=node.gridcoin.us
addnode=gridcoin.asia
addnode=nyc.grcnode.co.uk
addnode=sf.grcnode.co.uk
addnode=texas.grcnode.co.uk
addnode=frankfurt.grcnode.co.uk
addnode=london.grcnode.co.uk
addnode=amsterdam.grcnode.co.uk
addnode=sf.grcnode.co.uk
addnode=sepulcher.wha.la
addnode=typh00n.net
addnode=grc.z9.de
addnode=gridcoin.fr
addnode=hk.grcnode.co.uk

Now, restart the Gridcoin client.

sudo gridcoinresearchd stop
sudo gridcoinresearchd

Sync client and acquire Gridcoin

Sync blockchain

After starting the Gridcoin client, it will start to sync the blockchain. I recommend skipping this (since it takes 24-48hrs) and downloading the blockchain manually. This isn’t the entire blockchain, but a snapshot that is about 90% complete.

sudo gridcoinresearchd stop
cd ~/.GridcoinResearch/
sudo wget http://download.gridcoin.us/download/downloadstake/signed/snapshot.zip
sudo unzip snapshot.zip
sudo rm snapshot.zip

Then, restart the Gridcoin client.

sudo gridcoinresearchd

After a few minutes you should be able to see the latest block you downloaded.

sudo gridcoinresearchd getinfo

The information it returns will look something like the example below. Make note of the blocks entry.

{
    "version" : "v3.5.5.9-g-research",
    "minor_version" : 317,
    "protocolversion" : 180318,
    "walletversion" : 60000,
    "balance" : 0.00000000,
    "newmint" : 0.00000000,
    "stake" : 0.00000000,
    "blocks" : 493927,
    "timeoffset" : 0,
    "moneysupply" : 374056065.89554965,
    "connections" : 0,
    "proxy" : "",
    "ip" : "xx.xx.xx.xx",
    "difficulty" : {
        "proof-of-work" : 8.23948943,
        "proof-of-stake" : 33.94235633
    },
    "testnet" : false,
    "keypoololdest" : 1458591784,
    "keypoolsize" : 101,
    "paytxfee" : 0.00010000,
    "tally" : "",
    "mininput" : 0.00000000,
    "errors" : ""
}

To make sure the last 10% of blocks are downloading, check the latest block from a known working node. Then, repeat the command above to check the latest block you’ve downloaded. It may take a few hours to download the last blocks.

Acquire Gridcoin

You’ll need to acquire some starter Gridcoin in order to earn interest on it (you can’t earn interest on nothing). To get a new address, use the command below.

sudo gridcoinresearchd getnewaddress

Next, you’ll need to use free or paid methods to receive some starter Gridcoin.

Free methods

Earn Gridcoin

At this point, you’ll need to make sure your BOINC client is performing work and your Gridcoin balance is positive. If those are both true, you’ll just need to sit back and earn Gridcoin! In the meantime, here are some helpful commands for both the BOINC client and the Gridcoin Research Client.

Command Description
boinccmd --help Shows all possible commands
boinccmd --create_account <URL> <email> <password> Create account
boinccmd --lookup_account <URL> <email> <password> Lookup account key
boinccmd --project_attach <URL> <account_key> Attach to a project
boinccmd --project <URL> detach Detach from a project
boinccmd --project <URL> update Update project (pulls preferences from website settings)
boinccmd --get_host_info Show system information about the host where the BOINC client is running
boinccmd --get_disk_usage Show disk usage of all projects
boinccmd --get_file_transfers Show all current file transfers
boinccmd --get_project_status Show status of all projects
boinccmd --get_tasks Show all tasks of the client
boinccmd --get_simple_gui_info Show status of projects and active tasks (same as get_tasks and get_project_status)
boinccmd --get_daily_xfer_history Show network traffic history of the BOINC client
boinccmd --get_state Show complete client state

 

Command Description
sudo gridcoinresearchd help Shows all possible commands
sudo gridcoinresearchd help <command> Shows help for a specific command
sudo gridcoinresearchd Start Gridcoin Research Client
sudo gridcoinresearchd stop Stop Gridcoin Research Client
sudo gridcoinresearchd encryptwallet <wallet_passphrase_here> Encrypt the Gridcoin wallet (only required once)
sudo gridcoinresearchd execute encrypt <wallet_passphrase_here> Generate a hash of the wallet passphrase (only required once)
sudo gridcoinresearchd getinfo Display general info about the Gridcoin client and its status
sudo gridcoinresearchd getmininginfo Display mining info about the Gridcoin client and its status
sudo gridcoinresearchd getstakinginfo Display staking info about the Gridcoin client and its status
sudo gridcoinresearchd getblockcount Display the number of blocks in the chain
sudo gridcoinresearchd getnewaddress Generate a new address for receiving payments
sudo gridcoinresearchd dumpprivkey <gridcoin_address>
Reveals the private key corresponding to a Gridcoin address
sudo gridcoinresearchd getbalance Display balance for all accounts
sudo gridcoinresearchd backupwallet <location> Backup wallet to a specified location
sudo gridcoinresearchd listreceivedbyaddress Show all addresses and their balance
sudo gridcoinresearchd listreceivedbyaddress 0 true Show all addresses and their balance (where confirmations can be zero and include empty addresses)
sudo gridcoinresearchd checkwallet Check wallet for integrity
sudo gridcoinresearchd repairwallet Repair wallet if checkwallet reports any problems

 

I’ll end this by saying that Gridcoin probably won’t make you rich. If you’re already donating resources to BOINC, this is a nice way to earn some beer money.

Logan

8 thoughts on “Setup Gridcoin Research Client on Ubuntu

    • Just a heads up – it appears I was using the “gridcoin-daily” PPA, which runs on the testnet (see this comment). If you’re still using gridcoin, please switch to the “gridcoin-stable” PPA to use mainnet gridcoin.

    • Just a heads up – it appears I was using the “gridcoin-daily” PPA, which runs on the testnet (see this comment). If you’re still using gridcoin, please switch to the “gridcoin-stable” PPA to use mainnet gridcoin.

  1. Hey Logan, you should not use gridcoin-daily on the main network. Gridcoin-daily builds the testnet clients that are very often not compatible with what the rest of the network is doing. Use the gridcoin-stable ppa for the current release mainnet client.
    Also, if you do want to participate in testnet with gridcoin-daily, you should launc the client with the testnet flag.

    • Wow, didn’t know that. Just Googled to confirm it. Thank you for telling me, I updated the guide and replied to the commenters here to do the same!

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.