/blockchain-node

A Helum Blockchain Node

Primary LanguageErlangApache License 2.0Apache-2.0

blockchain-node

Build status

This is an Erlang application that is a Helium Blockchain node. It follows the blockchain and exposes functionality using a JSONRPC 2.0 API.

Documentation

See API endpoint documentation (in markdown format).

Developer Usage

  • Clone this repository

  • Run make && make release in the top level folder

  • Run make start to start the application. Logs will be at _build/dev/rel/blockchain_node/log/*.

Once started the application will start syncing the blockchain and loading blocks. If this is done from scratch it can take a number of days to download all blocks from the network and aobsorb them in the local ledger.

File Descriptors

The application uses a lot of file descriptors for network communication and local storage. If you see errors related to too many open files or nofile, stop the application and increase the file descriptor limit.

macOS

You may see an error similar to the following:

{error,"IO error: While open a file for appending: data/blockchain.db/020311.sst: Too many open files"}

Check this Superuser answer for a workaround.

Linux

Update your /ets/security/limits.d to increase your file limits. An example of what to add can be seen here.

Installing Ubuntu Required Packages

If running on Ubuntu, you will need the following packages installed before running make release:

wget https://packages.erlang-solutions.com/erlang-solutions_2.0_all.deb
sudo dpkg -i erlang-solutions_2.0_all.deb
sudo apt-get update
sudo apt install esl-erlang=1:22.3.4.1-1 cmake libsodium-dev libssl-dev build-essential
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh