This is an Erlang application that is a Helium Blockchain node. It follows the blockchain and exposes functionality using a JSONRPC 2.0 API.
See API endpoint documentation (in markdown format).
-
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.
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.
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.
Update your /ets/security/limits.d
to increase your file limits. An
example of what to add can be seen
here.
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
make docker-build
make docker-start
Navigate to your copy of the blockchain-node
repository.
cd /path/to/blockchain-node
Stop the Node.
make docker-stop
Update the repository.
git pull
Remove the existing Docker container.
make docker-clean
Rebuild the Docker image.
make docker-build
Run the updated Docker container.
make docker-start
Log the Node output.
tail -f $HOME/node_data/log/console.log