NODES PLUS
Инструкция по запуску демонстрационной версии и развертыванию тестовой сети

=====================================================

1. Выполнить установку библиотек с учетом установленной ОС. Для debian/Ubuntu:

1.1. Обновить кэш apt-get
sudo apt-get update && sudo apt-get upgrade -y

1.2. Обновить компилятор (для Ubuntu 16.04 и ниже):
sudo apt-get autoremove gcc-5
sudo apt-get autoremove g++-5
apt-get install software-properties-common -y
sudo add-apt-repository ppa:jonathonf/gcc-7.3
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install g++-7 gcc-7 -y
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 60 \
                         --slave /usr/bin/g++ g++ /usr/bin/g++-7 
                         --slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-7 \ 
                         --slave /usr/bin/gcc-nm gcc-nm /usr/bin/gcc-nm-7 \ 
                         --slave --slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-7
sudo update-alternatives --config gcc
sudo apt-get install build-essential g++ python-dev autotools-dev libicu-dev build-essential libbz2-dev -y

1.3. Установить библиотеки:
sudo apt-get install libcurl4-openssl-dev libcrypto++-dev libssl-dev libevent-dev libkyotocabinet-dev libmaxminddb0 libmaxminddb-dev mmdb-bin libv8-dev libqrencode-dev libpng16-dev libkyotocabinet-dev nano -y

1.3. Установить рекомендуемую версию boost:
wget -O boost_1_65_1.tar.gz https://sourceforge.net/projects/boost/files/boost/1.65.1/boost_1_65_1.tar.gz/download
tar xzvf boost_1_65_1.tar.gz
cd boost_1_65_1/
./bootstrap.sh --prefix=/usr/
./b2
sudo ./b2 install

1.3. Обновить версию OpenSSL (для Ubuntu 16.04 и ниже)
openssl version
cd /usr/src
wget https://www.openssl.org/source/openssl-1.1.1-latest.tar.gz
tar -zxf openssl-1.1.1-latest.tar.gz
cd openssl-1.1.1
./config 
make
make test
make install
mv /usr/bin/openssl /root/
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
openssl version

2. Скопировать на сервер рабочий проект

3. Открыть директорию рабочего проекта и запустить команду make:
cd /path/to/npp/source/code/
make

Проект скомпилируется в директорию ./dist. После этого можно скопировать скомпилированный проект в любую директорию или оставить здесь же.

4. Перенести в папку с скомпилированным файлом проекта папку storage убедиться что в папке conf присутствуют файлы default_config.json и config.json. При необходимости изменить какие-либо параметры, необходимо перенести изменяемые строки из default_config.json в config.json и изменить значения

5. Убедиться что параметры IP/port root/our соответствуют действительности. В демонстрационной версии они меняются исключительно через файл конфигурации.

6. Открыть директорию с скомпилированным файлом и запустить проект:
cd /path/to/compiled/npp/with/storage/dir/
./enoded

7. При первом запуске любой ноды необходимо зарегистрировать пользователя, процедура возможна только из консоли:
[after ./enoded]
node.user.signin&login=root&pass=root

8. Для развертывания тестовой сети понадобится от 1 сервера, на которых могут быть одновременно запущены несколько нод. Требуется запустить следующие типы:

ROOT NODES - 1. Для этого в конфигурации указывается:
{ ... "VAR_MODE_OUR": "r", ... }

MASTER NODES - минимум 2 в конфигурации:
{ ... "VAR_MODE_OUR": "a", ... }

FULL NODES - минимум 1 в конфигурации:
{ ... "VAR_MODE_OUR": "f", ... }

USER NODES в конфигурации:
{ ... "VAR_MODE_OUR": "n", ... }

На тестовом эмитенте постоянный поток случайных транзакций запускаются командой :
USER TEST EMITENT в конфигурации:
{ ... "VAR_MODE_OUR": "e", ... }

далее в консоли
[after ./enoded]
transaction.rand

9. Настрофка интервала кэширования транзакций на полных нодах для увеличения производительности в конфигурации
{ ...  
	"VAR_RUN_SEND_BLOCK_RAW_TASK_FREQ": "1",
	"VAR_RUN_SEND_BLOCK_RAW_FULL_FREQ": "1000",
... }
VAR_RUN_SEND_BLOCK_RAW_TASK_FREQ - интервал кэширования в секундах
VAR_RUN_SEND_BLOCK_RAW_FULL_FREQ - интервал кэширования в миллисекундах