Exercise: Set Up a Regtest Node

And now, the moment we've all been waiting for: let's actually run Bitcoin! We've learned enough, and we're ready! In this exercise, we'll download, install, configure, and run the Bitcoin core implementation.

We'll walk through instructions for linux(Ubuntu) machines in this document, but you can find instructions for other operating systems in this link: https://bitcoin.org/en/full-node.

There are a variety of ways to install Bitcoin, but for simplicity here, let's download it from https://bitcoincore.org/en/download/.

Note: Were we downloading this with the intention of running a mainnet node, we would also want to verify the release signature. You can find those instructions here, https://bitcoin.org/en/full-node#linux-instructions

Move the file to your home directory, or wherever you'd like the bitcoin data to live and extract the file being careful to update these commands to find the version that you have downloaded.

$ tar xzf bitcoin-0.21.1-x86_64-linux-gnu.tar.gz


For Ubuntu or similar systems you'll want to install the contents of bitcoin's bin subdirectory into the /usr/local/bin directory using the install command. You can adjust the below command to suit the needs of your system.

$ sudo install -m 0755 -o root -g root -t /usr/local/bin bitcoin-0.21.1/bin/*


Now the Bitcoin daemon, bitcoind, is ready to run. But before we start it up, we need to let it know that we don't want to connect to the mainnet, or the testnet, but instead, want to run our own local network via regtest. So let's create a configuration file and add some values.

Create a hidden bitcoin directory.

$ mkdir .bitcoin


Create the configuration file inside that directory.

$ touch .bitcoin/bitcoin.conf
$ vim bitcoin.conf


While the only instructions we really need to give bitcoind right now is to run on a regtest network, let's get in a bit of practice configuring bitcoind by walking through some common configuration options. Let's add the below options…

# Run Bitcoin as in daemon mode without an interactive shell


# Tell Bitcoin where to put blockchain data


# Tell Bitcoin to run on a regtest network


Below are settings that we can skip for now, but that you'll want to be familiar with.

Remote Procedure Call, or RPC, https://en.wikipedia.org/wiki/Remote_procedure_call, is the way in which bitcoind interacts with other programs. To enable this interaction you'll need to set a password and turn on the RPC server.

# Set the RPC password


# Turn on the RPC server


ZeroMQ, or ZMQ, https://zeromq.org/, provides a method for bitcoind to share block and transaction information.

# Turn on ZMQ publishing


Once we get our configuration in place, let's start up bitcoind and check that it's working

$ bitcoind


We'll use the Bitcoin command line interface just as we did in the last exercise to talk to our Bitcoin regtest node.

$ bitcoin-cli -getinfo


If you get a response that looks like the below, then your regtest node is up and running and we'll try out some more commands in the next exercise!


"version": 210100,
"blocks": 0,
"headers": 0,
"verificationprogress": 1,
"timeoffset": 0,
"connections": {
		"in": 0,
	"out": 0,
	"total": 0
"proxy": "",
"difficulty": 4.656542373906925e-10,
"chain": "regtest",
"relayfee": 0.00001000,
"warnings": ""

Source: Saylor Academy
Creative Commons License This work is licensed under a Creative Commons Attribution 4.0 License.

Last modified: Tuesday, October 5, 2021, 4:31 PM