Hive Developer logo

Hive Developer Portal

Seed Node

Setting up a seed node.

Intro

This tutorial will show how to setup the lowest possible resource seed node.

Sections

Minimum Requirements

This tutorial assumes Ubuntu Server 18.04 LTS 8GB RAM and 500GB SSD/HDD.

Building hived

sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install autoconf automake autotools-dev bsdmainutils \
  build-essential cmake doxygen gdb libboost-all-dev libreadline-dev \
  libssl-dev libtool liblz4-tool ncurses-dev pkg-config python3-dev \
  python3-pip nginx fcgiwrap awscli gdb libgflags-dev libsnappy-dev zlib1g-dev \
  libbz2-dev liblz4-dev libzstd-dev
mkdir -p ~/src
cd ~/src
git clone --branch master https://gitlab.syncad.com/hive/hive.git
cd hive
git submodule update --init --recursive
mkdir -p build
cd build
cmake \
  -DCMAKE_BUILD_TYPE=Release \
  -DLOW_MEMORY_NODE=ON \
  -DCLEAR_VOTES=ON \
  -DSKIP_BY_TX_ID=ON \
  -DHIVE_LINT_LEVEL=OFF \
  -DENABLE_MIRA=OFF \
  ..
make -j$(nproc)
sudo make install

Configure Node

mkdir -p ~/hive_data
cd ~/hive_data
hived --data-dir=.

At the startup banner, press ^C (Ctrl+C) to exit hived. As a side effect, a default data-dir is created. Now we can purge the empty blockchain and create config.ini as follows:

rm -Rf blockchain
nano config.ini

Then make the following changes to the generated config.ini:

To summarize, the changed values are:

plugin = p2p
p2p-endpoint = 0.0.0.0:2001

Save config.ini.

Latest Block Log

Download the block log (optional but recommended).

cd ~/hive_data
mkdir -p blockchain
wget -O blockchain/block_log https://gtg.openhive.network/get/blockchain/block_log
hived --data-dir=. --replay-blockchain

Sync Node

If you did not download the latest block log:

cd ~/hive_data
hived --data-dir=. --resync-blockchain

After replay or resync is complete, the console will display Got ## transactions from .... It’s possible to close hived with ^C (Ctrl+C). Then, to start the node again:

cd ~/hive_data
hived --data-dir=.

Troubleshooting

Problem: Got an error while trying to compile hived:

c++: internal compiler error: Killed (program cc1plus)

Solution: Add more memory or enable swap.

To enable swap (do not enable swap on a VPS like Digital Ocean):

sudo dd if=/dev/zero of=/var/swap.img bs=1024k count=4000
sudo chmod 600 /var/swap.img
sudo mkswap /var/swap.img
sudo swapon /var/swap.img

Problem: Got an error while replaying:

IO error: While open a file for appending: /root/hive_data/./blockchain/rocksdb_witness_object/012590.sst: Too many open files

Solution: You’re using MIRA, but this tutorial recommends not to (-DENABLE_MIRA=OFF). If you really intend to try MIRA, you will need to set higher limits. Note, if you are also running hived as root (not recommended), you must explicitly set hard/soft nofile/nproc lines for root instead of * in /etc/security/limits.conf.

To set the open file limit …

sudo nano /etc/security/limits.conf

Add the following lines:

*      hard    nofile     94000
*      soft    nofile     94000
*      hard    nproc      64000
*      soft    nproc      64000

To set the fs.file-max limit …

sudo nano /etc/sysctl.conf

Add the following line:

fs.file-max = 2097152

Load the new settings:

sudo sysctl -p

Once you save these files, you may need to logout and login again.