Installing your own Bitcoin node

From Bisq Wiki
Jump to navigation Jump to search

It is best practice that any Bitcoin user installs his own node, to send and verify his own transactions; moreover, if you use Bisq consistently, you are strongly encouraged to do so, as it will make the bitcoin network connection much more stable, and especially reduce the risk of needing SPV resync on a wallet that contains many transactions. Even when a SPV resync is needed, it will be much painless if done while connected to your own node.

Hardware requirements

The most demanding part of a full Bitcoin node is disk space: 1TB is considered the bare minimum (2TB is better for future proofing your node), and a SSD is recommended, as the constant write operations would risk damaging the average mechanical disk. There are pruned nodes that will only keep the very last blocks of the blockchain in order to save on disk space, but as Bisq needs a fully verifying node, we will only be examining this case in the present guide.

The following are viable hardware options to host the node:

  • refurbished laptop with at least 8GB of RAM
    • pros: comes with display, keyboard, and basic storage (existing storage will need to be replaced or expanded), can run multiple services and act as a full fledged home server, has builtin UPS
    • cons: drains more power and is more expensive than a Raspberry Pi 3, takes up more space on your shelf
  • dedicated Raspberry Pi 3
    • pros: very small, low power, completely silent
    • cons: no builtin display, keyboard nor storage, very low performance, needs more initial maintenance
  • your daily driver machine
    • pros: no need to source additional hardware (except the additional storage if it's not enough), will likely not suffer from the limited additional overhead of a Bitcoin node while you use it normally
    • cons: you either have to leave it always running, to keep updated with blocks as soon as they are mined, or will have to wait a variable amount of time for it to catch up to the current block height each time you turn it on, before you can use Bisq

Installing the software

When installing the Bitcoin node software, you will be either working on a graphical user interface, or on a system that only operates via command line (most likely the Raspberry).

Systems with graphical interface

Unless you want to install a leaner daemon setup and follow the command-line steps below, installing directly on a graphical interface is the easier path, as you can download and verify the files as per the instructions on https://bitcoincore.org/en/download/ and then install the software as you normally would on your operating system, making sure you point it to the 1TB drive to save the blockchain.

Systems with command line interface

You may choose to run a dedicated refurbished laptop on Linux and without a desktop environment, and it would be a wise choice; regarding a Raspberry, while you could install a graphical desktop environment on a Pi 3, it is absolutely not recommended to do so, because it will be a self-contained system that will only cater to the task of running the node software, and any additional load, like keeping the graphical interface in memory, will degrade its performance.

There is a well known step-by-step guide that will illustrate how to install a full Bitcoin Node on a Raspberry, called the RaspiBolt Guide, plus its amd64/desktop counterpart, directed at laptops/PCs, called MiniBolt. They both include a section dedicated to installing software for a Lightning Network node, but you will only need to follow the guide for your system up to the configuration of the Bitcoin client.

Caveats

There have been multiple reports about the Ronin node package not allowing Bisq to connect (after the first time), and we know no tested solution for this issue, so it is recommended using the steps above to obtain the Bitcoin node software.

Common steps

No matter the path you chose above, you will have to wait a considerable amount of time after installing the node.

The initial block download will have your Bitcoin client fetch from the p2p network, and verify one by one, all the blocks since the genesis, which at the time of writing amounts to 570GB of data, so expect from 2 to 10 days of uninterrupted CPU and network activity, depending on the connection (whether clearnet or Tor) and the performance of the hardware (a faster machine will complete the block verification and writing to disk in less time)

Setup the node to accept connections from Bisq

For the bitcoin connection on Bisq to be effective, you will need to make sure the node's configuration is correct. If you installed the client via command line interface following the guides linked above, you will probably have a working config file already, but in case you installed the GUI client, you will have to manually edit the bitcoin.conf file from within the settings, and make sure it contains the following:

server=1
prune=0
peerbloomfilters=1

which in turn:

  • enable the block server mode
  • disable the pruning of old blocks
  • allow Bisq to run SPV queries on the node

If the node is running on a separate machine, but on the same local network, it needs to listen for connections from external clients as well, and the easiest way of doing this is to add the following to the config file:

bind=0.0.0.0

No need for the above if the node runs on a different network, and you will connect to it via Tor.

After any change to the bitcoin.conf file, the bitcoin client needs to be restarted.

If, on the same remote machine running the node, you installed ufw as the Bolt guides suggest, you have to allow incoming connections on port 8333 (edit the local network base address as needed):

sudo ufw allow from 10.0.0.0/24 to any port 8333 comment 'Bitcoin p2p'

Setup the connection from Bisq to the node

The following will change depending on where the node is located respectively to Bisq.

Connecting to a node on the same PC

If the Bitcoin node is installed on the same machine as Bisq, the latter will automatically connect to it without the need to edit anything. Considering how Bisq will only run on amd64 architecture, you can achieve this with either your daily driver, or a dedicated laptop/desktop through direct or remote access (for example via xpra).

Make sure no other Bitcoin-based altcoin nodes (like LTC) are running while starting Bisq.

Connecting to a Bitcoin node on the same local network

After setting the config file to accept connections from external machines, as explained above, you will have to setup Bisq to connect to the remote node. This should be achieved by launching Bisq with the following command-line parameters (as an example, the node on the local network is at 10.0.0.21, edit the command to match your situation):

Bisq -btcNodes=10.0.0.21:8333 -useTorForBtc=false

Once Bisq has started, you should verify under Settings > Network, that these settings are replicated, in particular you should see that the node's IP:port is filled in the address field, and the "Use Tor for Bitcoin Network" checkbox is disabled.

Connecting to a remote node through the Tor Network

If you installed the node software on a machine that is geographically separate from your local network, and you followed the Bolt guides, it will be already connecting to the internet through Tor, so you can point Bisq to its onion address.

On the node's machine's shell, run

bitcoin-cli getnetworkinfo | grep address.*onion

to obtain your onion address, copy it to the clipboard and paste it in Bisq under Settings > Network > Use Custom Bitcoin Core nodes

Bisq will offer to restart, thus connecting to the custom remote node.

Verify the connection

Once you connect to your own node, Bisq will show Bitcoin network peers: 1 in the bottom right corner, and under Settings > Network you will notice the node is the only one listed under "Bitcoin network".

Troubleshooting

If you get into a state where Bisq is unable to connect, you can revert to a provided node as follows.

For MacOS:

Bisq -btcNodes=devinbtctu7uctl7hly2juu3thbgeivfnvw3ckj3phy6nyvpnx66yeyd.onion:8333 -useTorForBtc=true 

For Linux:

/opt/bisq/bin/Bisq -btcNodes=devinbtctu7uctl7hly2juu3thbgeivfnvw3ckj3phy6nyvpnx66yeyd.onion:8333 -useTorForBtc=true 

For Windows:

C:\Users\your-username-here\AppData\Local\Bisq\Bisq.exe -btcNodes=devinbtctu7uctl7hly2juu3thbgeivfnvw3ckj3phy6nyvpnx66yeyd.onion:8333 -useTorForBtc=true 

Contributor nodes can be seen in the Bisq code.

More info on running from the command line.

More info on command line options.