Готовый snap пакет для Viz

29.01.2019 06:47:21

Хотите запустить ноду Viz ? Нет ничего проще!

Здравствуйте. Хочу поделиться с вами хорошей новостью. Установка ноды Viz стала как никогда проще. Теперь установить ноду можно на любой Linux, который поддерживает Snappy, а это практически все ведущие дистрибутивы.

Если коротко то Snappy - система развёртки и управления пакетами, разработанная Canonical.

Узнать, установлен ли у вас Snappy, можно простой командой:

$ snap version
snap    2.36.3
snapd   2.36.3
series  16
neon    18.04
kernel  4.15.0-33-generic

Если Snappy не установлен, то нужно его установить (на примере ubuntu):

$ sudo add-apt-repository ppa:snappy-dev/tools
$ sudo apt-get install snapcraft

Ищем пакет vizd в магазине приложений SnapStore:

$ snap find vizd
Name  Version  Publisher          Notes  Summary
vizd  2.0.2.1  mad-max-traveller  -      Full node for VIZ network

Устанавливаем пакет vizd:

$ snap install vizd
Download snap "vizd" (1) from channel "stable"                                                                                                                                                   vizd 2.0.2.1 from (mad-max-traveller) installed

Запускаем vizd и после появления нижеследующего текста прерываем работу программы нажав Ctrl+C:

$ vizd
1313198ms th_0       plugin.cpp:379                plugin_initialize    ] json_rpc plugin: plugin_initialize() begin
1313198ms th_0       plugin.cpp:382                plugin_initialize    ] json_rpc plugin: plugin_initialize() end
1313224ms th_0       webserver_plugin.cpp:269      plugin_initialize    ] configured with 256 thread pool size
------------------------------------------------------

            STARTING VIZ NETWORK

------------------------------------------------------
initiator public key: VIZ6MyX5QiXAXRZk7SYCiqpi6Mtm8UbHWDFSV8HPpt7FJyahCnc2T
committee public key: VIZ6Yt7d6LsngBoXQr47aLv97bJVs7jyr7esZTM4UUSpLUf3nbRKS
chain id: 2040effda178d4fffff5eab7a915d4019879f5205cc5392e4bcced2b6edda0cd
blockchain version: 2.0.2
------------------------------------------------------
1313254ms th_0       main.cpp:132                  main                 ] Error parsing logging config
1313254ms th_0       plugin.cpp:386                plugin_startup       ] json_rpc plugin: plugin_startup() begin
1313254ms th_0       plugin.cpp:388                plugin_startup       ] json_rpc plugin: plugin_startup() end
1313254ms th_0       plugin.cpp:317                plugin_startup       ] Starting chain with shared_file_size: 2147483648 bytes
1313254ms th_0       plugin.cpp:322                plugin_startup       ] resync requested: deleting block log and shared memory
1313257ms th_0       plugin.cpp:349                plugin_startup       ] Opening shared memory from /home/mad_max/snap/vizd/1/witness_node_data_dir/blockchain
1313262ms th_0       database.cpp:207              open                 ] Start opening database. Please wait, don't break application...
1313277ms th_0       database.cpp:216              open                 ] Done opening database, elapsed time 0.01601200000000000 sec
1313277ms th_0       database.cpp:220              open                 ] Start opening block log. Please wait, don't break application...
1313323ms th_0       database.cpp:257              open                 ] Done opening block log, elapsed time 0.04607900000000000 sec
1313323ms th_0       plugin.cpp:388                plugin_startup       ] Started on blockchain with 0 blocks
^C

Это необходимо для создания в домашнем каталоге папки witness_node_data_dir в которой будут хранится конфигурационные файлы и файлы блокчейна:

/home/user/snap/vizd/current/witness_node_data_dir

Теперь в эту папку необходимо поместить файл snapshot.json и отредактировать под ваши нужды config.ini:

shared-file-dir = "blockchain"
shared-file-size = 2G
inc-shared-file-size = 2G
min-free-shared-file-size = 500M
block-num-check-free-size = 1000
single-write-thread = 0
clear-votes-before-block = 0
skip-virtual-ops = 0
enable-plugins-on-push-transaction = 0
follow-max-feed-size = 500
webserver-thread-pool-size = 256

#plugins
plugin = chain p2p json_rpc webserver network_broadcast_api witness test_api database_api private_message follow social_network tags account_by_key operation_history account_history block_info raw_block witness_api invite_api committee_api

#witness="login" + private-key
#witness = "user"
#private-key = user_key

p2p-seed-node = 172.104.132.57:9099
p2p-seed-node = 94.16.120.147:4248
p2p-seed-node = 142.93.228.7:2001
p2p-seed-node = 178.62.61.190:8099
p2p-seed-node = 13.81.61.249:2001
p2p-seed-node = 54.93.168.9:2001

p2p-endpoint = 0.0.0.0:8082

enable-stale-production = true
required-participation = 0

[log.console_appender.stderr]
stream = std_error

[log.file_appender.p2p]
filename = logs/p2p/p2p.log

[logger.default]
level = all
appenders = stderr

[logger.p2p]
level = all
appenders = p2p

На этом настройка закончена, можно смело запускать:

$ vizd

По мимо основной команды запуска предусмотрены еще несколько команд:

$ vizd - первоначальный запуск, начинает синхронизацию блокчейна с нуля.
$ vizd.vizd-rb - аналогичен запуску с флагом --replay-blockchain, когда нужно продолжить синхронизацию с уже существующей локальной базой бч.
$ vizd.vizd-rc - аналогичен запуску с флагом --replay-if-corrupted, когда необходимо восстановить поврежденную базу бч, если это возможно.

В целом, пакет работает стабильно. Я обкатывал его около месяца, и на данный момент есть только один нерешенный баг, который нужно править в коде самого Viz. К сожалению мы унаследовали от стима один трудноуловимый баг, который у меня проявляется при работе snap пакета vizd. Суть его примерно в следующем: config.ini считывает в двух разных местах в коде, что приводит к конфликтам в дальнейшей работе ноды. Именно поэтому в одном из последних релизов steem перешел на новый формат config.ini:

Config file changes

The logging config has always been a sore spot in the config file because of the number of options
available. It was so complex that it required a different parser. We have changed to using a json
format, which allows us to use only one parser. The default logging config is the following:

# Console appender definition json: {"appender", "stream"}
log-console-appender = {"appender":"stderr","stream":"std_error"}

# File appender definition json:  {"appender", "file"}
log-file-appender = {"appender":"p2p","file":"logs/p2p/p2p.log"}

# Logger definition json: {"name", "level", "appender"}
log-logger = {"name":"default","level":"debug","appender":"stderr"}
log-logger = {"name":"p2p","level":"debug","appender":"p2p"}

Этот баг приводит к тому, что не пишутся p2p логи ноды. Если для вас это критично пользуйтесь сборками Docker от сообщества или собирайте сами из исходных кодов.

Конфигурационный файл snapcraft.yaml для самостоятельной сборки snap пакета vizd в сборочной системе snapcraft.

Для вас старался mad-max.
Поддержать меня как делегата можно на этой странице.

PS: Если увидите ошибки, погрешности или неточности в описаниях, пишите, все исправлю.


1
10 Awards
1494.955082 SHARES
Show comment form
Comments

08.02.2019 09:21:57

Test