Нет блокчейна без блоков. И нет блоков без делегатов. Нет делегатов без скриптов.
Предлагаю вниманию делегатов пакет скриптов.
Основной обязанностью делегатов блокчейна Golos является создание и подписание блоков делегатской нодой. Второй обязанностью - регулярное установление прайс-фида. Про третью обязанность, установку делегатских параметров, недавно в своём блоге писал @lex, поэтому не буду на этом задерживаться. :-)
Начну со второй. Всё течёт, всё меняется. Со временем перестали работать скрипты автообновления прайс-фидов от @asuleymanov, @vvk, @ropox...
В основном из-за смены и закрытия источников информации для определения курса.
@vvk недавно обновил свой скрипт, но для работы его надо запускать в докере,
что не всем хочется делать и некоторые делегаты предпочитают просто время от времени обновлять прайс-фид руками, что стало доступно через интерфейс golos.id.
Для тех, кто обновляет таким образом, могу предложить получать его по ссылке
https://expertgroup.org/get_feed.php
Результат отдаётся в формате json, так что эту информацию можно использовать и считывать в своих скриптах. Таким образом данный прайс-фид будет альтернативным. Если же все делегаты безальтернативно установят один и тот же скрипт, то проще, однако, внести получение непосредственно в код блокчейна, чтобы не заморачиваться с этим. :-)
Также можно взять сам скрипт отсюда: https://github.com/jackvote/price_feed и подправить расчёт через пары GLS_USDT или GLS_BTC и разместить на своём хостинге.
Также можно запустить на своём серевере простой скрипт на node-js (https://github.com/jackvote/setfeed), который будет автоматически получать от вышеуказанного информацию и периодически публиковать её в автоматическом режиме. Скрипт не требует докера и прост в запуске.
Теперь перейдём к основному. Проблема пропуска блоков.
Иметь идеальную ноду, вообще не пропускающую блоков - нереально. На это сказывается много факторов. Обычно проблемы с каналами связи. В меньшей степени проблемы хостинга. Но в любом случае, невозможность создать и подписать блок, приводит к проблемам в работе блокчейна.
На блокчейне VIZ данная проблема решается пессимизацией веса отданных за делегата голосов. За каждый пропущенный блок вес уменьшается на 1% на сутки. При этом при большом количестве пропущенных блоков, делегат может выпасть из топа, тем самым уменьшая вероятность попадания в очередь и увеличивая стабильность работы чейна.
В небезызвестном CyberWay пошли по более жёсткому пути:
В случае ошибок/нарушений (напр. пропуск блоков) со стороны БП (блок-продюссеров) предусмотрено сжигание части застейканных токенов, стейкхолдеры несут ответственность за выбранных БП.
Но данный путь не приводит к стабилизации подписи блоков до полного сжигания застейканных токенов...
На блокчейне GOLOS имеется только watch-мониторы, которые раз в несколько минут просто сообщают о пропусе блоков.
На что бывает проблематично своевременно отреагировать.
В связи с этим я предлагаю воспользоваться нижеследующими скриптами, которые используютестирую уже более полугода.
Если у делегата имеется несколько серверов, например, на одном из которых установлена делегатская нода, на другом апи-нода или просто крутятся какие-то скрипты, то отдельно от делегатской ноды можно установить скрипт https://github.com/jackvote/GolosCheckMissed
В случае обнаружения пропуска блока делегатской нодой, скрипт отправляет в блокчейн ключ деактивации ноды.
По истечению заданного времени снова активирует делегата. В случае, если проблема с нодой не разрешилась и в течение очередного раунда снова был пропущен блок, то нода отключается на срок вдвое больший. И так по кругу. Таким образом при случайном сбое/потере связи скрипт подстраховывает делегата и в случае серьёзного сбоя даёт ему время для действий.
Если же проблема разрешилась сама, то подписание блоков будет активировано без каких-либо действий со стороны делегата.
Также этот скрипт может периодически публиковать прайс-фид.
Для лиц, которые держат несколько делегатских нод или дополнительно к делегатской ещё и майнеров, предлагается аналогичный скрипт, но в котором можно прописать любое количество делегатов: https://github.com/jackvote/GolosCheckMissedMulty.
При размещении нод на разных серверах можно использовать скрипт перекрёстно, при этом подключаясь локально к собственной ноде, а не к паблик-ноде.
В отличии от первого скрипта, подразумевается, что мультиноды стоят на более стабильных серверах, поэтому отсутствует удвоение времени отключения при пропуске блоков. Но можно выставить большую задержку до активации. Деактивация и задержка до активации по каждой ноде учитывается отдельно.
Установка прайс-фид в данном скрипте не предусмотрена.
При наличии положительных отзывов и востребованности, планируется на базе GolosCheckMissedMulty сделать GolosCheckMissedPro с установкой прайс-фида и отправки сообщений о состоянии нод в персонального telegram-бота.
И, наконец, для делегатов, которым проблематично разбираться с запуском скриптов в докере, с установкой nodejs и npm, не хочется арендовать под это дело дополнительные VPS, предлагается скрипт для размещения на любом недорогом виртуальном хостинге с поддержкой PHP и Cron (я знаю хостинг за 365 р/год).
https://github.com/jackvote/GolosCheckMissedWeb
Для размещения не требуется даже приобретение домена, можно использовать технический домен хостера.
Скрипт так же "наблюдает" за пропуском блоков, согласно cron (желательно *) и автоматически деактивирует/активирует делегата. Можно скопировать кусок кода с примером и вставить любое разумное количество делегатов для проверки.
Плюсом данного скрипта является возможность ручной активации/деактивации делегата, навпример, практически в любое время со смартфона, запустив его по ссылке с сайта/хостинга.
Можно просто разместить скрипт на хостинге, не прописывая запуск его в cron, только для ручных стоп/старт. Учтывая, что при использовании его параллельно с вышеописанными скриптами, последние, обнаружив, что пропуски блоков отсутствуют, автоматически активируют делегата через заданный период. Опять же, при востребованности, могу доработать их, чтобы проверялся флаг ручной деактивации делегата на хостинге.
Голосуйте за делегата @jackvote
Жду отзывов. Данный пост можно рассматривать как заявку воркера.
Проголосовать не только за пост, но и за заявку можно здесь: https://golos.id/workers/created/@jackvote/paket-dlya-delegatov
Удачи!
@jackvote, а ссылка на заявку где, плиз плиз
нашла, все норм
@ladyzarulem, когда пост писал, заявки ещё и в планах не было. :-) Как и наличных на покупку gbg для взноса. @retroscope спонсировал. Сейчас в пост добавлю.
@jackvote, да, я читала про гбг, я вот тоже свои поменяла на голоса не вовремя))
Спасибо всем, кто проапвотил и задонатил этот пост!
В связи с тем, что в момент написания поста заявка воркера ещё и не планировалась, в посте не было ссылки на неё.
Поэтому большая просьба проголосовать и за заявку:
https://golos.id/workers/created/@jackvote/paket-dlya-delegatov
@jackvote, готово! ;)
@jackvote, а где выставлять фид на golos.id. Потыкался и не нашел.
@bitwheeze, https://golos.id/~witnesses
Только два раза подряд одинаковые значения в интерфейсе не сохраняются.
Если хочется обновить время публикации фида, то изменить ни любой, потом поставить нужный (тот же). Скрипты же не проверяют значение, а пишут поверх, обновляя дату.
@jackvote, ура, осилил, спасибо 😂
@jackvote, Единственный момент... BTS же уже не актуален, т.к. Rudex переехал на GPH, а значит и GOLOS там торгуется...
Актуально думаю получать инфу к RUDEX.USDT, RUDEX.BTS, GPH... Хотя может и не прав...
@denis-skripnik, возможно, но тут нет gph: https://ticker.rudex.org/api/v1/ticker
Ясно
@denis-skripnik, почему не актуален? Вроде там активности больше, чем на rudex.org.
Сам GOLOS шлюз переехал вместе с Rudex на GPH.
@jackvote, Круто. Благодарю.