Гайд для witness/seed ноды
Рекомендованные минимальные системные требования:
    8 Гб оперативной памяти и 80 Гб SSD накопителя
    Linux-система, напр. Ubuntu 16.04/18.04 + стабильный доступ к интернету

Устанавливаем Docker

1
sudo apt-get update
Copied!
1
sudo apt-get install -y \
2
apt-transport-https \
3
ca-certificates \
4
curl \
5
software-properties-common
Copied!
1
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Copied!
1
sudo add-apt-repository \
2
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
3
$(lsb_release -cs) \
4
stable"
Copied!
1
sudo apt-get update
Copied!
1
sudo apt-get install docker-ce -y
Copied!

Устанавливаем ноду

Скачиваем файл цепочки блоков (без него синхронизация от seed-нод занимает около 2 суток), либо полный бэкап (с ним запуск займёт менее часа). Только цепочка блоков (реплей займёт несколько часов):
Германия 1
Финляндия 1
Германия 2
Финляндия 2
1
wget -P ~/home/blockchain --user=u237308-sub1 --password=3oOk8579Ff8ceKdy https://u237308-sub1.your-storagebox.de/block_log.index https://u237308-sub1.your-storagebox.de/block_log
2
Copied!
1
wget -P ~/home/blockchain --user=u245960-sub1 --password=7USy9jS9GS2Yka3c https://u245960-sub1.your-storagebox.de/block_log.index https://u245960-sub1.your-storagebox.de/block_log
2
Copied!
1
wget -P ~/home/blockchain --user=u223265-sub1 --password=tXjXAmNBcu8PmmbQ https://u223265-sub1.your-storagebox.de/block_log.index https://u223265-sub1.your-storagebox.de/block_log
2
Copied!
1
wget -P ~/home/blockchain --user=u233417-sub1 --password=xCbthClwoWSVGIt1 https://u233417-sub1.your-storagebox.de/block_log.index https://u233417-sub1.your-storagebox.de/block_log
2
Copied!
Полный бэкап (реплей не требуется, менее часа):
Германия 1
Финляндия 1
Германия 2
Финляндия 2
1
wget -P ~/home/blockchain --user=u237308-sub1 --password=3oOk8579Ff8ceKdy https://u237308-sub1.your-storagebox.de/block_log.index https://u237308-sub1.your-storagebox.de/block_log https://u237308-sub1.your-storagebox.de/shared_memory.bin
2
Copied!
1
wget -P ~/home/blockchain --user=u245960-sub1 --password=7USy9jS9GS2Yka3c https://u245960-sub1.your-storagebox.de/block_log.index https://u245960-sub1.your-storagebox.de/block_log https://u245960-sub1.your-storagebox.de/shared_memory.bin
2
Copied!
1
wget -P ~/home/blockchain --user=u223265-sub1 --password=tXjXAmNBcu8PmmbQ https://u223265-sub1.your-storagebox.de/block_log.index https://u223265-sub1.your-storagebox.de/block_log https://u223265-sub1.your-storagebox.de/shared_memory.bin
2
Copied!
1
wget -P ~/home/blockchain --user=u233417-sub1 --password=xCbthClwoWSVGIt1 https://u233417-sub1.your-storagebox.de/block_log.index https://u233417-sub1.your-storagebox.de/block_log https://u233417-sub1.your-storagebox.de/shared_memory.bin
2
Copied!

Генерируем ключи

Для облегчения получения ключей, вместо запуска ноды без них, использования команды suggest_brain_key в cli-wallet для генерирования, правки конфига и перезапуска ноды, можно сразу сгенерировать их здесь, либо здесь.
Только в Public-key (публичном ключе) заменить три начальных символа VIZ на GLS. Этот ключ нам понадобится для объявления себя делегатом позднее, а Private-key (приватный ключ) уже на следующем шаге.

Загружаем конфиг

Предварительно заменив значения witness и private-key на свои. В качестве witness запишем логин без @ от своего аккаунта на Голосе, private-key тот что сгенерировали на шаге выше.
1
mkdir ~/config && echo 'p2p-endpoint = 0.0.0.0:4243
2
webserver-thread-pool-size = 1
3
webserver-http-endpoint = 0.0.0.0:8090
4
webserver-ws-endpoint = 0.0.0.0:8091
5
read-wait-micro = 500000
6
max-read-wait-retries = 2
7
write-wait-micro = 500000
8
max-write-wait-retries = 3
9
single-write-thread = true
10
enable-plugins-on-push-transaction = false
11
shared-file-size = 2G
12
min-free-shared-file-size = 500M
13
inc-shared-file-size = 2G
14
block-num-check-free-size = 1000
15
plugin = chain p2p json_rpc webserver network_broadcast_api witness database_api witness_api
16
clear-votes-before-block = 4294967295
17
store-account-metadata = false
18
store-memo-in-savings-withdraws = false
19
replay-if-corrupted = true
20
skip-virtual-ops = true
21
enable-stale-production = false
22
required-participation = 33
23
witness = "ЛОГИН-ДЕЛЕГАТА"
24
private-key = ПРИВАТНЫЙ-КЛЮЧ-НОДЫ
25
mining-threads = 0
26
[log.console_appender.stderr]
27
stream=std_error
28
[log.file_appender.p2p]
29
filename=logs/p2p/p2p.log
30
[logger.default]
31
level=debug
32
appenders=stderr
33
[logger.p2p]
34
level=none
35
appenders=stderr' | sudo tee -a ~/config/config.ini
Copied!

Использование Docker-Compose

Для тех кто разбирается, обратите внимание на этот пост.

Запускаем контейнер

1
sudo docker run -it \
2
-p 4243:4243 \
3
-v ~/config/config.ini:/etc/golosd/config.ini \
4
-v ~/home/blockchain:/var/lib/golosd/blockchain \
5
-v ~/wallet:/golosd \
6
--log-opt max-size=500m \
7
--name golosd golosblockchain/golos:latest
Copied!
Начнётся загрузка образа ноды и реплей (наполнение файла оперативных данных shared_memory.bin из блоков), который будет продолжаться от пары часов до суток (в зависимости от производительности вашего сервера).
Можно оставить окно терминала или закрыть его, подключившись позднее и зайдя в логи ноды командой:
1
sudo docker logs -f --tail 50 golosd
Copied!
С появлением в логах ноды подобных сообщений о получении блоков, окно терминала можно закрыть (всё в порядке).

Телеграм-бот о пропуске блоков

Для отслеживания работы делегатских нод и пропуска ими блоков можно использовать бот @golos_witness_monitor_bot

Работа с cli-wallet

Эти действия нужны лишь для первого запуска ноды.
Заходим в cli_wallet ноды.
1
sudo docker exec -it golosd cli_wallet \
2
-w /golosd/wallet.json \
3
-s ws://localhost:8091
Copied!
Добавляем свой пароль к cli_wallet (запишите его и сохраните):
1
set_password 123456789
Copied!
Разблокируем доступ:
1
unlock 123456789
Copied!
Импортируем в cli_wallet наш приватный активный ключ аккаунта-делегата (ключ, который смотреть тут https://golos.id/@lex/permissions, начинается с цифры 5).
1
import_key 5Js............
Copied!
Объявляем себя делегатом, с публичным ключом GLS (который мы сгенерировали ранее в паре к приватному ключу для конфига ноды).
Нужно заменить логин, ссылку на пост/аккаунт делегата + публичный ключ.
1
update_witness "ЛОГИН" "https://golos.id/@ЛОГИН" GLS............. true
Copied!
Публикуем свой первый прайс-фид, заменив на свой логин-делегата.
1
publish_feed ЛОГИН {"quote":"1.000 GOLOS", "base":"0.500 GBG"} true
Copied!
Для выхода из cli_wallet вводим команду:
1
quit
Copied!

Публикация прайсфидов

Запускаем в докере ещё один контейнер, подробнее об этом удобном скрипте можно прочитать здесь.
1
sudo docker run -it \
2
-e NODE=ws://localhost:8091 \
3
-e WITNESS=ЛОГИН-ДЕЛЕГАТА \
4
-e KEY=ПРИВАТНЫЙ-АКТИВНЫЙ-КЛЮЧ \
5
--log-opt max-size=500m \
6
--name feed --net=container:golosd vvk123/golos-witness-tools ./update_price_feed.py --monitor
Copied!
* нужно заменить логин и приватный активный ключ аккаунта-делегата на свои
Пример скриншота после выполнения команды:
После появления логов с калькуляцией курса GBG, закрываем окно терминала.

Изменения в конфиге

Заходим в конфиг командой:
1
sudo nano ~/config/config.ini
Copied!
Вносим нужные правки, нажимаем Ctrl+O, подтверждаем Enter, выходим Ctrl+X.
Перезапускаем контейнер ноды.
1
sudo docker restart golosd
Copied!

Делегатские параметры

Заходим на https://golos.id/~witnesses и напротив своего делегата в столбце “Параметры” нажимаем на значок настроек (описание каждого параметра возникает при наведении мышкой).
Подробнее о значении медианных параметров. Изменить параметры можно и через cli_wallet ноды, заменив логин и выполнив команду:
Базовые
19 ХФ
22 ХФ
23 ХФ
24 ХФ
26 ХФ
1
update_chain_properties ЛОГИН {"account_creation_fee":"1.000 GOLOS", "maximum_block_size":65536, "sbd_interest_rate":0, "create_account_min_golos_fee":"0.100 GOLOS", "create_account_min_delegation":"1.000 GOLOS", "create_account_delegation_time":2592000, "min_delegation":"1.000 GOLOS"} true
2
Copied!
1
update_chain_properties ЛОГИН {"max_referral_interest_rate":1000, "max_referral_term_sec":15552000, "min_referral_break_fee":"1.000 GOLOS", "max_referral_break_fee":"100.000 GOLOS", "posts_window":3, "posts_per_window":1, "comments_window":200, "comments_per_window":10, "votes_window":15, "votes_per_window":5, "auction_window_size":0, "max_delegated_vesting_interest_rate":8000, "custom_ops_bandwidth_multiplier":10, "min_curation_percent":7500, "max_curation_percent":7500, "curation_reward_curve":"square_root", "allow_distribute_auction_reward":true, "allow_return_auction_reward_to_fund":true} true
2
Copied!
1
update_chain_properties ЛОГИН {"worker_request_creation_fee":"100.000 GBG", "worker_request_approve_min_percent":1500, "sbd_debt_convert_rate":100, "vote_regeneration_per_day":10, "witness_skipping_reset_time":21600, "witness_idleness_time":7776000, "account_idleness_time":15552000} true
2
Copied!
1
update_chain_properties ЛОГИН {"claim_idleness_time":86400, "min_invite_balance":"10.000 GOLOS"} true
2
Copied!
1
update_chain_properties ЛОГИН {"asset_creation_fee":"2000.000 GBG", "invite_transfer_interval_sec":60} true
2
Copied!
1
update_chain_properties ЛОГИН {"worker_emission_percent":100, "vesting_of_remain_percent":8000, "convert_fee_percent":500, "min_golos_power_to_curate":"1000.000 GOLOS", "negrep_posting_window":1440, "negrep_posting_per_window":3} true
2
Copied!

Обновление ноды

Ставим “пустой ключ” для ноды чтобы приостановить подпись блоков через параметры на странице https://golos.id/@lex/witness (заменив на свой логин). Или через cli_wallet ноды командой
1
update_witness "ЛОГИН" "https://golos.id" GLS1111111111111111111111111111111114T1Anm true
Copied!
Останавливаем докер-контейнер ноды и удаляем его
1
sudo docker stop golosd && sudo docker rm golosd
Copied!
Если в анонсе обновления было указано что нужен реплей, удаляем файл shared_memory.bin
1
sudo rm ~/home/blockchain/shared_memory.bin
Copied!
Останавливаем докер-контейнер скрипта прайсфида и удаляем его
1
sudo docker stop feed && sudo docker rm feed
Copied!
Удаляем образы для ноды и скрипта прайсфида
1
sudo docker rmi golosblockchain/golos && sudo docker rmi vvk123/golos-witness-tools
Copied!
Запускаем контейнер с новой версией
1
sudo docker run -it \
2
-p 4243:4243 \
3
-v ~/config/config.ini:/etc/golosd/config.ini \
4
-v ~/home/blockchain:/var/lib/golosd/blockchain \
5
-v ~/wallet:/golosd \
6
--log-opt max-size=500m \
7
--name golosd golosblockchain/golos:latest
Copied!
После появления логов вида handle_block "Got 0 transactions on block 34563842 by ...", закрываем окно терминала.
Возвращаем публичный ключ ноды GLS.............. который ранее сбрасывали через параметры на странице https://golos.id/@lex/witness или через cli_wallet, заменив в команде ниже логин, ссылку на пост/аккаунт делегата + публичный ключ на свои:
1
update_witness "ЛОГИН" "https://golos.id/@ЛОГИН" GLS................. true
Copied!
Возвращаем докер-контейнер скрипта публикации прайсфида (заменив логин и приватный активный ключ аккаунта-делегата на свои)
1
sudo docker run -it \
2
-e NODE=ws://localhost:8091 \
3
-e WITNESS=ЛОГИН-ДЕЛЕГАТА \
4
-e KEY=ПРИВАТНЫЙ-АКТИВНЫЙ-КЛЮЧ \
5
--log-opt max-size=500m \
6
--name feed --net=container:golosd vvk123/golos-witness-tools ./update_price_feed.py --monitor
Copied!
После появления логов с калькуляцией курса GBG, закрываем окно терминала.

Есть вопросы?

Можно уточнить в чате делегатов https://t.me/golos_witnesses
Last modified 1mo ago