Iroha 1: how to just build on Linux (commands)
Sometimes You want to just build Iroha 1 on debian-based Linux. In official documentation there are instructions, but many new people are having problems with them. That is why I decided to put all commands with some modifications to fast build & run Iroha 1.
Those instructions are how to build Iroha inside docker instance of Ubuntu 22:04:
1. Running docker instance:
In terminal paste You can paste the code (of course first read description below the code where I explain arguments):
docker run \
-it \
--workdir /home \
--name='ubuntu_test' \
--network=host \
ubuntu:22.04
Where:
-it
- to run image with interactive console (input && output)--workdir /home
- is to set current directory in the docker instance--name='ubuntu_test'
- instance name- --network=host - it is option to make possible easy communication between host and guest inside machine (like virtuall another computer in local network)
ubuntu:22.04
- image from docker-hub "ubuntu" version "22.04"
After some time You should be inside docker instance.
2. Building Iroha 1 inside the docker instance of Ubuntu 22:04:
# update package manage cache:
apt-get update
# install dependencies to build iroha (more than in official documentation are required):
apt-get -y --no-install-recommends install \
build-essential ninja-build \
git ca-certificates tar curl unzip cmake \
pkg-config zip python3 python-is-python3 autoconf
# now we can clone iroha 1 from official repository (I need only last commit of branch main)
git clone https://github.com/hyperledger/iroha.git --depth=1
cd iroha
# build all dependencies for Iroha 1:
./vcpkg/build_iroha_deps.sh $PWD/vcpkg-build
# prepare configuration to build iroha 1 with ninja, not necessarily options are disabled (smart contracts, tests):
cmake -B build -DCMAKE_TOOLCHAIN_FILE=$PWD/vcpkg-build/scripts/buildsystems/vcpkg.cmake . -DCMAKE_BUILD_TYPE=RELEASE -GNinja -DUSE_BURROW=OFF -DUSE_URSA=OFF -DTESTING=OFF -DPACKAGE_DEB=OFF
# building program which works like blockchain node with ninja-build:
cmake --build ./build --target irohad
# you can check if the program was sucessfully build (the command needs more arguments to work):
./build/bin/irohad
3. Sample run of iroha node:
In the official Iroha repository You have sample configuration files, You can use them to run a node (here is: documentation of command line arguments). I suggest to read description below before running the command:
./build/bin/irohad \
--config $PWD/example/config.docker \
--keypair_name $PWD/example/node0 \
-genesis_block $PWD/example/genesis.block \
-reuse_state
#-overwrite_ledger -drop_state
Where:
--config
- path to config file, in the config postgres is choosen, so it must be running--keypair_name
- path to private and public keys of a the node-genesis_block
- path to genesis block (first block of network)-reuse_state
- not create network from beginning but use existing-overwrite_ledger -drop_state
- DANGEROUS - it will erase the network (both database and files)
To run irohad
with arguments as above You need first change something in config file or change config + have working postgres DB.
A) Using Iroha with postgres db:
I suggest to use docker instance. To create instance with user&&password compatible with sample config you need command (it needs to be run in host):
docker run --name postgres_tmp \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=mysecretpassword \
--network=host \
-d postgres \
-c 'max_prepared_transactions=100' \
-c 'port=5432'
Then you can just run irohad
command.
B) Using Iroha with RocksDB:
Instead of postgres you can use RocksDB. In example
directory there is sample config, which is using RocksDB, but path to database must be changed, e.g.:
sed -i 's_/path/to/wsv/folder_/home/rocksdb_g' example/config.sample
The next step is to use that config when running irohad
:
./build/bin/irohad \
--config $PWD/example/config.sample \
--keypair_name $PWD/example/node0 \
-genesis_block $PWD/example/genesis.block \
-reuse_state