DEV Community

Cover image for How to Setup Bitcoin Core and Lightning Network Node Developer Environment
Peter Tyonum
Peter Tyonum

Posted on

How to Setup Bitcoin Core and Lightning Network Node Developer Environment

Like any other developer environment, for one to build on Bitcoin Core and Lightning Network, you need to setup their (development) environments.

Note: This writeup is based on implementation on macOS. If you need help setting up for another platform, please reach out and I will be happy to assist.

Prerequisites:

Please check that you have the following softwares installed on your computer:

  • Git
  • python
  • Home Brew
  • Sqlite

We are going to start with Bitcoin. To build on Bitcoin, we are going to setup its client software called Bitcoin Core. Bitcoin Core consists of a full-node software for fully validating the blockchain as well as a bitcoin wallet. We will clone their Github repository and compile.

Required Dependencies

We will be following instructions found in the ‘doc’ directory of the repository to install all the required dependencies. Install the following dependencies:

  • install Xcode: xcode-select -—install
  • using home-brew, install automate, lib tool, boost, png-config, and libevent by running: brew install automake libtool boost pkg-config libevent
  • Ensuring that python is installed, you can install the deploy dependencies by running: pip3 install ds_store mac_alias.

Optional Dependencies

  • install berkeley-db@4 if you want to support legacy wallets brew install berkeley-db@4
  • install qt@5 if you intend to compile GUI: brew install qt@5
  • To build in QR support for the GUI, install qrencode: brew install qrencode
  • to support UPnP port mapping, install miniupnpc: brew install miniupnpc
  • to support NAT-PMP port mapping, install libnatpmp: brew install libnatpmp
  • to support for ZMQ notifications, install ZMQ: brew install zeromq

Building Bitcoin Core

Navigate to where you want to compile bitcoin core and clone the repo:

git clone https://github.com/bitcoin/bitcoin.git

Configure Bitcoin Core:
We will be configuring our Bitcoin Core to support Wallet (BDB + SQlite) without a GUI. cd into bitcoin, and run the following commands:

./autogen.sh
./configure --with-gui=no
Enter fullscreen mode Exit fullscreen mode

Please note that, if you did not install berkeley-db@4 stated above, kindly install before running the above command to avoid errors.

Compile Bitcoin Core:
Inside the same directory, run the following commands:

- make
- make check (to run tests)
Enter fullscreen mode Exit fullscreen mode

Setting up Bitcoin Core to use Regtest

If you are setting up Bitcoin core primarily for development, there is no need to connect to mainnet and download the entire block. Therefore, we will be configuring ours to use regtest.

Run the below commands to create Bitcoin directory, its configuration file bitcoin.conf and grant appropriate permissions.

mkdir -p "/Users/${USER}/Library/Application Support/Bitcoin"

touch "/Users/${USER}/Library/Application Support/Bitcoin/bitcoin.conf"

chmod 600 "/Users/${USER}/Library/Application Support/Bitcoin/bitcoin.conf"

Enter fullscreen mode Exit fullscreen mode

open the Bitcoin configuration file in your editor and add the following:

# Daemon Options
server=1
daemon=1
fallbackfee=0.00072
txconfirmtarget=6
# Network Options
regtest=1
#signet=1
#testnet=1
[regtest]
# RPC Options
rpcport=18443
rpcuser=bitcoin
rpcpassword=bitcoin
# ZMQ Options
zmqpubrawblock=tcp://127.0.0.1:28332
zmqpubrawtx=tcp://127.0.0.1:28333
zmqpubhashtx=tcp://127.0.0.1:28332
zmqpubhashblock=tcp://127.0.0.1:28332
Enter fullscreen mode Exit fullscreen mode

save and close the above configuration. With the above in place, you can now run your bitcoin core with:

bitcoind

Next, we will be setting up our lightning network

Similar to Bitcoin, we are going to setup Lightning network node using Lightning Network Daemon (lnd). LND has several pluggable back-end chain services including btcd (a full-node), bitcoind, and neutrino (a new experimental light client). 

Requirements:

install Go using home-brew brew install go

Navigate to any directory where you want to setup LND and clone the repo:

git clone https://github.com/lightningnetwork/lnd

cd lnd

make install
Enter fullscreen mode Exit fullscreen mode

To check that lnd was installed properly run the following command:

  make check
Enter fullscreen mode Exit fullscreen mode

Similar to our bitcoin core installation, we want to configure lnd to use regtest and connect to our Bitcoin core, so we'll create it's config file in the following directory with the below configuration:

mkdir -p "/Users/${USER}/Library/Application Support/Lnd"

touch "/Users/${USER}/Library/Application Support/Lnd/lnd.conf"

chmod 600 "/Users/${USER}/Library/Application Support/Lnd/lnd.conf"

Enter fullscreen mode Exit fullscreen mode

paste the following configuration details in the configuration file:

[Application Options]
debuglevel=trace
maxpendingchannels=10

[Bitcoin]
bitcoin.active=1
bitcoin.node=bitcoind
bitcoin.regtest=1     
Enter fullscreen mode Exit fullscreen mode

Creating a wallet
In one of the terminal tab, run the command

lnd
Enter fullscreen mode Exit fullscreen mode

and in another tab, create a new wallet with:

lncli create
Enter fullscreen mode Exit fullscreen mode

This will prompt for a wallet password, and optionally a cipher seed passphrase.
lnd will then print a 24 word cipher seed mnemonic, which can be used to recover the wallet in case of data loss. The user should write this down and keep in a safe place.

If you encounter errors at any point during your setup or have any comments, kindly share in the comments section and I will be happy to reply. Thank you for reading.

Top comments (1)

Collapse
 
sunfarms profile image
Sunny Awa Okoro

Great article, I never knew lnd creates the 12 seed phrase words for you.

I don't think this is done with Core-Lightning implementations, I will need to confirm that.

Good job.