Фиксы и промежуточные итоги тестирования VIZ


Несмотря на то, что тестирование VIZ было запущено совсем недавно, обнаружились пара багов, которые было важно быстро исправить.

  • Исправлен баг деления на ноль в методе уменьшения энергии у пользователя при выводе долей в ликвидные токены или делегировании (в том или ином виде).
  • Исправлены фундаментальный момент, позволяющий запускать цепь без назначения genesis time в файле конфигурации. Это позволит форкать цепь под любые проекты без необходимости заранее планировать время запуска и инфраструктуру под это. Теперь genesis time записывается при создании (или синхронизации) нулевого блока.
  • Изменен механизм в плагине witness, для корректной обработки цикла подписи блоков, теперь он учитывает интервалы между блоками отличными от 3.

В рамках тестирования было также выявлены проблему с запуском сети при настройке интервала между блоками в 1 секунду. Такое возможно лишь при резервировании большой пропускной способности (больше 100 Мбит/сек) у делегатов, что накладывает большие ограничения на идею децентрализации и управление самой цепочкой сообществом. При желании форк VIZ может быть запущен с обсуждаемыми 1 блок в секунду на одном континенте или стране с развитой сетью (например, для ДАО с мажоритарием с нахождением в определенной стране или настройками допускающим только избранных делегатов до подписи блоков).

Исходя из вышеперечисленного тестнет был перезапущен и обновления залиты в master ветку.

Запуск ноды, рекомендации

Несмотря на обилие примеров по запуску нод для Steem или блокчейн Голос, стоит вынести инструкцию для самостоятельного запуска VIZ. На данный момент протокол Graphene использует lib boost 1.58, доступную в Ubuntu версии 16.4, поэтому устанавливать рекомендуется только на этот дистрибутив (в более свежих версиях Ubuntu в комплекте идет уже новая версия библиотеки boost, не совместимая со старой).

Если у вас сервер с малым количеством оперативной памяти, рекомендуем пользоваться VDS с SSD накопителями и формировать swap в 10-20 Гигабайт для корректной работы на год-два вперед. Это можно сделать выполнив следующие команды:

fallocate -l 10G /swapfile
ls -lh /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
swapon --show

mount -o remount,size=10G /dev/shm
mount -l | grep "/dev/shm"

free -h
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
cat /etc/fstab

sysctl vm.swappiness=80
sysctl vm.vfs_cache_pressure=50
echo "vm.swappiness=80" >> /etc/sysctl.conf
echo "vm.vfs_cache_pressure=50" >> /etc/sysctl.conf
tail /etc/sysctl.conf

Обновление пакетов и установка необходимых библиотек для сборки VIZ:

apt-get update
DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
apt-get install -y build-essential
sudo apt-get install -y autoconf automake cmake g++ git libssl-dev libtool make pkg-config python3 python3-jinja2
sudo apt-get install -y libboost-chrono-dev libboost-context-dev libboost-coroutine-dev libboost-date-time-dev libboost-filesystem-dev libboost-iostreams-dev libboost-locale-dev libboost-program-options-dev libboost-serialization-dev libboost-signals-dev libboost-system-dev libboost-test-dev libboost-thread-dev
sudo apt-get install -y doxygen libncurses5-dev libreadline-dev perl

Внимание! Обязательно перезапустите сервер после вышеперечисленных команд.

Установка ноды:

mkdir /viz
cd /viz
git clone https://github.com/VIZ-World/viz-world.git
cd /viz/viz-world
git checkout master
git submodule update --init --recursive -f
mkdir /viz/viz-world/build
cd /viz/viz-world/build && cmake -DCMAKE_BUILD_TYPE=Release ..
cd /viz/viz-world/build/ && nohup make -j$(nproc) vizd > buildlog_vizd.txt
cd /viz/viz-world/build/ && nohup make -j$(nproc) cli_wallet > buildlog_cli_wallet.txt

Первый запуск:

cd /viz/viz-world/build/programs/vizd/ && rm -f screenlog.0 && screen -dmLS vizd /viz/viz-world/build/programs/vizd/vizd --resync && screen -x vizd

Нажмите Ctrl+C, чтобы завершить сессию screen vizd. После первого запуска будет создан каталог и конфигурационный файл, в него-то и необходимо внести изменения:

nano /viz/viz-world/build/programs/vizd/witness_node_data_dir/config.ini

Пока сеть публично не запущена, вы можете указать seednode для тестнета:

p2p-seed-node = 140.82.37.172:8082 # testnet

Если вы запускаете публичную seednode, то вам потребуется открыть tcp порт 8082 через iptables:

iptables -I INPUT -p tcp -m tcp --dport 8082 -j ACCEPT

А также указать в config.ini желаемый порт для входящих подключений:

p2p-endpoint = 0.0.0.0:8082

Все, теперь вы можете включить ноду для синхронизации:

cd /viz/viz-world/build/programs/vizd/ && rm -f screenlog.0 && screen -dmLS vizd /viz/viz-world/build/programs/vizd/vizd --resync && screen -x vizd

Чтобы свернуть сессию, нажмите Ctrl+A+D, это позволит вам завершить сеанс, а для того чтобы вернуться в него, выполните команду: screen -x vizd, завершение сеанса: Ctrl+C.

Всем спасибо за внимание и до новых встреч!


Комментарии 7


Анатолий, а сложно ли вынести в конфигурацию параметр, который будет устанавливать раз в сколько секунд подписывать блок? Или это не имеет смысла и породит коллизии?

06.09.2018 11:55
0
0

Пожалуйста: https://github.com/VIZ-World/viz-world/blob/master/libraries/protocol/include/graphene/protocol/config.hpp#L24

Ниже строчка с очередью блоков у каждого делегата. Стандартный вариант 3-1, тестировал 1-3. Коллизии происходят из-за того, что пропускной способности и latency между нодами делегатов не успевали согласовывать блок и транзакции именно в переходный момент между одним делегатом к другому за 1 секунду при максимальном удалении серверов друг от друга (на разных континентах). Если делегаты находятся на одном континенте и сервера обеспечены гарантированной пропускной способностью от 500 Мбит в секунду, то никаких проблем нет поставить 1 сек между блоками.

06.09.2018 12:00
0
0

@viz.world

В рамках тестирования было также выявлены проблему с запуском сети при настройке интервала между блоками в 1 секунду.

Вот, что хрень какая. Уже понадеялся на блок в секунду, а тут опять 3, как надопотопном голосе.

Срочно созываем адский дискорд с @muhazokotuha !

06.09.2018 12:46
0
0

@litrbooh да, зови. пусть взглянут, как у некоторых не за зарплату и в одно лицо живенько получается. без ресеча и прототипов.

06.09.2018 15:28
0
0

@viz.world я ваш подписчик, голосую за ваши посты, надеюсь на взаимность

06.09.2018 16:09
0
0

@viz.world Интересный пост! Поддержим автора лайками!

06.09.2018 16:28
0
1

Заглянув в инструкцию для сборки ноды со смартфона я испугался увидев сколько нужно шаманить. А потом включит ПК и увидел что все стандартно :)

08.09.2018 18:57
0
1
Моя страницаНастройкиВыход
Отмена Подтверждаю
100%
Отмена Подтверждаю
Отмена Подтверждаю