-
Notifications
You must be signed in to change notification settings - Fork 4
Развертка witness node BitShares и CLI Wallet на linux машине из исходников
- Для начала подтянем исходники из репозитория на GitHub и все необходимые подмодули при помощи git.
git clone https://github.com/bitshares/bitshares-2 cd bitshares-2 git submodule update --init --recursive cd ..
- Далее понадобится установить все необходимые зависимости для чистой установки на Ubuntu 14.04 LTS.
sudo apt-get update sudo apt-get install gcc-4.9 g++-4.9 cmake make \ libbz2-dev libdb++-dev libdb-dev \ libssl-dev openssl libreadline-dev \ autoconf libtool git libcurl4-openssl-dev
- Для сборки ноды нам потребуется библиотека boost версии 1.57.0.
В связи с тем, что с Ubuntu 15.04 поставляется слишком старая версия данной библиотеки, её придется установить руками. Стоит заметить, что boost 1.58.0 требует C++14 в связи с чем не может быть собран на Ubuntu LTS.Командаexport BOOST_ROOT=$HOME/opt/boost_1_57_0 sudo apt-get update sudo apt-get install autotools-dev build-essential \ g++ libbz2-dev libicu-dev python-dev wget -c 'http://sourceforge.net/projects/boost/files/boost/1.57.0/boost_1_57_0.tar.bz2/download'\ -O boost_1_57_0.tar.bz2 sha256sum boost_1_57_0.tar.bz2 # "910c8c022a33ccec7f088bd65d4f14b466588dda94ba2124e78b8c57db264967" tar xjf boost_1_57_0.tar.bz2 cd boost_1_57_0/ ./bootstrap.sh "--prefix=$BOOST_ROOT" ./b2 install
sha256sum boost_1_57_0.tar.bz2
служит для проверки валидности скачанного архива, ее вывод должен совпадать с содержимым следующей закомментированной строки. - После установки всех зависимостей и загрузки исходников BitShares мы можем собрать ноду. Для этого нужно запустить cmake для конфигурации, а затем произвести сборку из исходников при помощи make. Если вам нужен только клиент кошелька, то следует пропустить команду
make witness_node
.Так же если вам понадобится использовать клиент-кошелек, собрать его можно следующей командой:cd ../bitshares-2 cmake -DBOOST_ROOT="$BOOST_ROOT" -DCMAKE_BUILD_TYPE=Release . make witness_node
Стоит отметить, что переменная окружения $BOOST_ROOT должна указывать ваш на путь установки boost в случае, если вы установили его самостоятельно.make cli_wallet
В связи с тем, что g++-4.9 не доступен на 14.04 LTS, сперва придется добавить репозиторий.
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
Если у вас проблемы в процессе сборки из-за несовместимости ABI, используйте gcc 4.9.
CC=gcc-4.9 CXX=g++-4.9 cmake .
Ubuntu 15.04 использует gcc 5, который имеет c++11 ABI по умолчанию, в то время как библиотека boost собрана с cxx11 ABI, что является проблемой на многих дистрибутивах. Если у вас проблемы в процессе сборки из-за несовместимости ABI, используйте gcc 4.9.
CC=gcc-4.9 CXX=g++-4.9 cmake .
Для того, чтобы обновить вашу ноду, нужно выполнить следующие команды (для обновления только клиента кошелька вам следует пропустить команду make witness_node
):
cd ~/bitshares-2
git fetch
git checkout <version>
git submodule update --init --recursive
cmake .
make witness_node
Так же если вам понадобится обновить клиент-кошелек, сделать это можно следующей командой:
make cli_wallet
cd ~/bitshares-2
может отличаться в зависимости от того, по какому пути вы собирали свою ноду.
Нода собрана, настало время запустить ее. Для того чтобы запустить полную ноду, к которой можно подключаться, нам нужно открыть RPC интерфейс.
./programs/witness_node/witness_node --rpc-endpoint="0.0.0.0:8090"
Мы открыли порт 8090 и теперь он доступен через Интернет (за исключением ситуаций, связанных с router/firewall). Это вполне безопасно до тех пор, пока ваши приватные ключи не задействованы в процессе работы ноды (пока ваша нода не производит блоки). Если все же вы хотите оставить RPC интерфейс доступным только локально с данной машины, следует использовать "localhost:8090"
.
Стоит учитывать, что понадобится некоторое время, чтобы ваша нода синхронизировалась с сетью.
Нода принимает дополнительный параметр –data-dir
для определения рабочей директории, где хранится конфигурация, блокчейн и локальные базы данных (по умолчанию это директория witness_node_data_dir
, которая будет автоматически создана со стандартным файлом конфигурации, если его нет).
Файл конфигурации лежит в рабочей директории и называется config.ini
, в нем можно задавать и переопределять параметры ноды, если стандартные вас не устраивают.
Стоит учитывать, что пути относительные от рабочей директории, из которой запускается нода.
Ноду рекомендуется запускать из под screen или tmux, чтобы она продолжала работать по завершению сессии. Но лучше всего доверить контроль над ней утилите supervisor.
Для начала следует установить ее:
sudo apt-get update
sudo apt-get install supervisor
Затем нужно добавить файл конфигурации supervisor для нашей ноды:
cd /etc/supervisor/conf.d
sudo nano sudo nano bitshares_node.conf
Файл следует дополнить следующим содержимым:
[program:bitshares_node]
command=/home/<user>/bitshares_witness_node/bitshares-2/programs/witness_node/witness_node --rpc-endpoint="0.0.0.0:8090"
directory=/home/<user>/bitshares_witness_node/bitshares-2
stdout_logfile=/var/log/supervisor/bitshares_node_out.log
stderr_logfile=/var/log/supervisor/bitshares_node_err.log
autostart=false
autorestart=true
numprocs=1
user=<user>
Стоит учитывать, что <user>
нужно заменить на имя пользователя, от которого собиралась нода. Если вы понимаете, что делаете, следует указать необходимого вам пользователя для запуска и корректные пути к собранной ноде. Также рекомендуется ознакомиться с документацией к supervisor и кастомизировать файл конфигурации под ваши цели.
После того, как файл конфигурации создан и корректно заполнен, следует сказать supervisor об этом:
sudo supervisorctl update
Далее мы можем запускать, проверять статус и останавливать ноду следующими командами:
sudo supervisorctl start bitshares_node
sudo supervisorctl status
sudo supervisorctl stop bitshares_node
Процесс развертки узла заметно упрощается при помощи Docker:
- Выкачиваем репозиторий с Dockerfile:
git clone https://github.com/u-tech-bitshares/dockerfiles.git
- Собираем image:
cd dockerfiles/bitshares-core docker build -t bitshares-2:ubuntu .
- Запускаем контейнер, закрыв RPC интерфейс от внешней сети:
Или оставив его открытым:
docker run --name bts-node -d -p 127.0.0.1:8090:8090 -p 9090:9090 bitshares-2:ubuntu
Для последующих остановки и запуска контейнера используйте команды:docker run --name bts-node -d -p 8090:8090 -p 9090:9090 bitshares-2:ubuntu
docker stop bts-node docker start bts-node
- Заворачиваем необходимые пути и порты через nginx на 127.0.0.1:8090 в случае, если RPC интерфейс закрыт от внешней сети и нужно его открыть.
Для того, чтобы нода могла генерировать блоки, нужно добавить два параметра в ее конфигурацию:
witness-id
-
private-key
- пара из публичного ключа и приватного ключа кошелька
Параметр witness-id
и публичный ключ можно получить из кошелька следующим образом:
>>> get_witness <accountname>
{
[...]
"id": "1.6.10",
"signing_key": "GPH7vQ7GmRSJfDHxKdBmWMeDMFENpmHWKn99J457BNApiX1T5TNM8",
[...]
}
Соответственно в конфигурации задается:
witness-id = "1.6.10"
Приватные ключи можно экспортировать из большинства кошельков (например dump_private_keys
), в конфигурации они выглядят примерно так:
private-key = ["BTS7vQ7GmRSJfDHxKdBmWMeDMFENpmHWKn99J457BNApiX1T5TNM8","5JGi7DM7J8fSTizZ4D9roNgd8dUc5pirUe9taxYCUUsnvQ4zCaQ"]
- When restarting the witness node, it may be required to append the –replay-blockchain parameter to regenerate the local (in-memory) blockchain state.