Golos Blockchain
  • База знаний Golos
  • ПОЛЬЗОВАТЕЛЯМ
    • Способы регистрации
    • Старт на Golos Блоги
      • Кошелёк
    • Вопросы и ответы
    • Полезные статьи
    • Обновления на Голосе
  • Разработчикам
    • Основы
      • Операции и их типы
      • Объекты и структуры
      • Состояние (стэйт) системы
      • Плагины и их API
      • Библиотеки для работы
      • Примеры кода
      • Формирование транзакций
      • Пропускная способность
      • Тестнет (ноды для тестов)
    • API-документация
      • API part 1
      • API part 2
      • API part 3
      • API part 4
      • Cli-wallet API
    • Обновления (HardForks)
      • HF18: Данные по установке
      • HF18: Новые возможности
      • HF18: Изменения в API
      • HF18: Изменения в cli_wallet
      • SF18.4: Новые функции
      • HF19: Новые возможности
      • HF20: Устранение бага
      • HF22: Новые возможности
      • HF23: Новые возможности
      • HF24: Новые возможности
      • HF25: Новые возможности
      • HF26: Новые возможности
      • HF27: Новые возможности
      • HF28: Новые возможности
    • Руководства (HowTo)
      • Скрипт регистрации аккаунтов
      • Операции на бирже
      • Как использовать мультиподписи
      • Как объединять операции в одну транзакцию
      • Пример запуска тестнета
  • Делегатам
    • Делегатство и роли нод
    • Установка ноды
      • Гайд для witness/seed ноды
      • Настройка для API-ноды
      • Настройка ноды для бирж
      • Настройка ElasticSearch
      • Нода с отладкой GDB
    • Медианные параметры
    • Скрипты для price feed
Powered by GitBook
On this page
  • Устанавливаем Docker
  • Устанавливаем ноду
  • Генерируем ключи
  • Загружаем конфиг
  • Использование Docker-Compose
  • Запускаем контейнер
  • Телеграм-бот о пропуске блоков
  • Работа с cli-wallet
  • Публикация прайсфидов
  • Изменения в конфиге
  • Делегатские параметры
  • Обновление ноды
  • Есть вопросы?
  1. Делегатам
  2. Установка ноды

Гайд для witness/seed ноды

Рекомендованные (минимальные) системные требования:

  • 4 Гб оперативной памяти и 80 Гб SSD накопителя

  • Linux-система, напр. Ubuntu 18.04/20.04 + стабильный интернет

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

sudo apt-get update && 
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update && 
sudo apt-get install docker-ce docker-ce-cli containerd.io -y

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

Скачиваем файл цепочки блоков only block_log (без него синхронизация от сети seed-нод занимает около 2-3 суток), либо полный backup witness node (с ним запуск займёт около часа).

only block_log
rsync --progress -e 'ssh -p23' --recursive u379169-sub1@u379169-sub1.your-storagebox.de:block_log ~/home/blockchain/
backup witness node
rsync --progress -e 'ssh -p23' --recursive u379169-sub1@u379169-sub1.your-storagebox.de: ~/home/blockchain/
password
veAujuuVZtivnUj7
only block_log
rsync --progress -e 'ssh -p23' --recursive u379085-sub1@u379085-sub1.your-storagebox.de:block_log ~/home/blockchain/
backup witness node
rsync --progress -e 'ssh -p23' --recursive u379085-sub1@u379085-sub1.your-storagebox.de: ~/home/blockchain/
password
dg8NrzpYZ3gMiU7t
only block_log
rsync --progress -e 'ssh -p23' --recursive u379178-sub1@u379178-sub1.your-storagebox.de:block_log ~/home/blockchain/
backup witness node
rsync --progress -e 'ssh -p23' --recursive u379178-sub1@u379178-sub1.your-storagebox.de: ~/home/blockchain/
password
Z8iSXLhyXsCBGqeL
only block_log
rsync --progress -e 'ssh -p23' --recursive u378847-sub1@u378847-sub1.your-storagebox.de:block_log ~/home/blockchain/
backup witness node
rsync --progress -e 'ssh -p23' --recursive u378847-sub1@u378847-sub1.your-storagebox.de: ~/home/blockchain/
password
db3YNrkPtrdyF6id

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

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

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

Предварительно заменив значения witness и private-key на свои. В качестве witness запишем логин без @ от своего аккаунта на Голосе, private-key тот что сгенерировали на шаге выше.

mkdir ~/config && echo 'p2p-endpoint = 0.0.0.0:4243
webserver-thread-pool-size = 4
webserver-http-endpoint = 0.0.0.0:8090
webserver-ws-endpoint = 0.0.0.0:8091
read-wait-micro = 500000
max-read-wait-retries = 2
write-wait-micro = 500000
max-write-wait-retries = 3
single-write-thread = true
enable-plugins-on-push-transaction = false
block-num-check-free-size = 7200
plugin = chain p2p json_rpc webserver network_broadcast_api witness database_api witness_api
clear-votes-before-block = 4294967295
store-account-metadata = false
store-memo-in-savings-withdraws = false
store-comment-extras = false
skip-virtual-ops = true
enable-stale-production = false
required-participation = 33
witness = "ЛОГИН-ДЕЛЕГАТА"
private-key = ПРИВАТНЫЙ-КЛЮЧ-НОДЫ
[log.console_appender.stderr]
stream=std_error
[log.file_appender.p2p]
filename=logs/p2p/p2p.log
[logger.default]
level=debug
appenders=stderr
[logger.p2p]
level=none
appenders=stderr' | sudo tee -a ~/config/config.ini

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

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

sudo docker run -it \
    -p 4243:4243 \
    -v ~/config/config.ini:/etc/golosd/config.ini \
    -v ~/home/blockchain:/var/lib/golosd/blockchain \
    -v ~/wallet:/golosd \
    --log-opt max-size=500m \
    --name golosd golosblockchain/golos:latest

Начнётся загрузка образа ноды и реплей (наполнение файла оперативных данных shared_memory.bin из блоков), который будет продолжаться от пары часов до суток (в зависимости от производительности вашего сервера).

Можно оставить окно терминала или закрыть его, подключившись позднее и зайдя в логи ноды командой:

sudo docker logs -f --tail 50 golosd

С появлением в логах ноды подобных сообщений о получении блоков, окно терминала можно закрыть (всё в порядке).

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

Работа с cli-wallet

Эти действия нужны лишь для первого запуска ноды.

Заходим в cli_wallet ноды.

sudo docker exec -it golosd cli_wallet \
    -w /golosd/wallet.json \
    -s ws://localhost:8091

Добавляем свой пароль к cli_wallet (запишите его и сохраните):

set_password 123456789

Разблокируем доступ:

unlock 123456789
import_key 5Js............

Объявляем себя делегатом, с публичным ключом GLS (который мы сгенерировали ранее в паре к приватному ключу для конфига ноды).

Нужно заменить логин, ссылку на пост/аккаунт делегата + публичный ключ.

update_witness "ЛОГИН" "https://golos.id/@ЛОГИН" GLS............. true

Публикуем свой первый прайс-фид, заменив на свой логин-делегата.

publish_feed ЛОГИН {"quote":"1.000 GOLOS", "base":"0.500 GBG"} true

Для выхода из cli_wallet вводим команду:

quit

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

sudo docker run -it \
    -e NODE=ws://localhost:8091 \
    -e WITNESS=ЛОГИН-ДЕЛЕГАТА \
    -e KEY=ПРИВАТНЫЙ-АКТИВНЫЙ-КЛЮЧ \
    --log-opt max-size=500m \
    --name feed --net=container:golosd vvk123/golos-witness-tools ./update_price_feed.py --monitor

* нужно заменить логин и приватный активный ключ аккаунта-делегата на свои

Пример скриншота после выполнения команды:

После появления логов с калькуляцией курса GBG, закрываем окно терминала.

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

Заходим в конфиг командой:

sudo nano ~/config/config.ini

Вносим нужные правки, нажимаем Ctrl+O, подтверждаем Enter, выходим Ctrl+X.

Перезапускаем контейнер ноды.

sudo docker restart golosd

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

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
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, "max_delegated_vesting_interest_rate":8000, "custom_ops_bandwidth_multiplier":10, "min_curation_percent":7500, "max_curation_percent":7500, "curation_reward_curve":"square_root"} true
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
update_chain_properties ЛОГИН {"min_invite_balance":"10.000 GOLOS"} true
update_chain_properties ЛОГИН {"asset_creation_fee":"500.000 GBG", "invite_transfer_interval_sec":60} true
update_chain_properties ЛОГИН {"worker_emission_percent":100, "vesting_of_remain_percent":8000, "convert_fee_percent":500, "min_golos_power_to_curate":"1000.000 GBG"} true
update_chain_properties ЛОГИН {"unwanted_operation_cost":"100.000 GOLOS", "unlimit_operation_cost":"10.000 GOLOS"} true
update_chain_properties ЛОГИН {"min_golos_power_to_emission":"2000.000 GBG"} true

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

update_witness "ЛОГИН" "https://golos.id" GLS1111111111111111111111111111111114T1Anm true

Останавливаем докер-контейнер ноды и удаляем его

sudo docker stop golosd && sudo docker rm golosd

Если в анонсе обновления было указано что нужен реплей, удаляем файл shared_memory.bin

sudo rm ~/home/blockchain/shared_memory.bin

Останавливаем докер-контейнер скрипта прайсфида и удаляем его

sudo docker stop feed && sudo docker rm feed

Удаляем образы для ноды и скрипта прайсфида

sudo docker rmi golosblockchain/golos && sudo docker rmi vvk123/golos-witness-tools

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

sudo docker run -it \
    -p 4243:4243 \
    -v ~/config/config.ini:/etc/golosd/config.ini \
    -v ~/home/blockchain:/var/lib/golosd/blockchain \
    -v ~/wallet:/golosd \
    --log-opt max-size=500m \
    --name golosd golosblockchain/golos:latest

После появления логов вида handle_block "Got 0 transactions on block 34563842 by ...", закрываем окно терминала.

update_witness "ЛОГИН" "https://golos.id/@ЛОГИН" GLS................. true

Возвращаем докер-контейнер скрипта публикации прайсфида (заменив логин и приватный активный ключ аккаунта-делегата на свои)

sudo docker run -it \
    -e NODE=ws://localhost:8091 \
    -e WITNESS=ЛОГИН-ДЕЛЕГАТА \
    -e KEY=ПРИВАТНЫЙ-АКТИВНЫЙ-КЛЮЧ \
    --log-opt max-size=500m \
    --name feed --net=container:golosd vvk123/golos-witness-tools ./update_price_feed.py --monitor

После появления логов с калькуляцией курса GBG, закрываем окно терминала.

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

PreviousУстановка нодыNextНастройка для API-ноды

Last updated 1 year ago

Для облегчения получения ключей, вместо запуска ноды без них, использования команды suggest_brain_key в cli-wallet для генерирования, правки конфига и перезапуска ноды, можно сразу сгенерировать их , или на / .

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

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

Импортируем в cli_wallet наш приватный активный ключ аккаунта-делегата (ключ, который смотреть тут , начинается с цифры 5).

Запускаем в докере ещё один контейнер, подробнее об этом скрипте можно прочитать .

Заходим на и напротив своего делегата в столбце “Параметры” нажимаем на значок настроек (описание каждого параметра возникает при наведении мышкой).

о значении медианных параметров. Изменить параметры можно и через ноды, заменив логин и выполнив команду. Параметры в порядке появления в хардфорках блокчейна:

Ставим “пустой ключ” для ноды чтобы приостановить подпись блоков через параметры на странице (заменив на свой логин). Или через ноды командой

Возвращаем публичный ключ ноды GLS.............. который ранее сбрасывали через параметры на странице или через , заменив в команде ниже логин, ссылку на пост/аккаунт делегата + публичный ключ на свои:

Можно уточнить в чате делегатов

здесь
раз
два
этот пост
@golos_witness_monitor_bot
https://golos.id/@lex/permissions
здесь
https://golos.id/~witnesses
https://t.me/golos_witnesses
Подробнее
cli_wallet
https://golos.id/@lex/witness
cli_wallet
https://golos.id/@lex/witness
cli_wallet