Что Такое Игра-Валидатор Или «Как Запустить Блокчейн С Доказательством Доли»

Итак, ваша команда завершила альфа-версию вашего блокчейна, и пришло время запустить тестовую сеть, а затем основную сеть.

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

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

Но это в вымышленном мире, а в реальном команде необходимо подготовить достаточно много вспомогательного ПО и различных манипуляций, чтобы помочь валидаторам запустить стабильную сеть.

Вот о чем эта статья.

Запуск сетей на основе консенсусов типа «proof-of-stake», где валидаторы определяются голосами держателей системных токенов, — достаточно специфическое мероприятие, поскольку даже запуск традиционных, централизованно управляемых систем с десятками и сотнями серверов — задача непростая.

Задача сама по себе, и блокчейн нужно запускать усилиями лояльных, но независимых участников.

И, если в корпорации администраторы при запуске имеют полный доступ ко всем машинам, журналам, общему мониторингу, то валидаторы никому не дадут доступ к своим серверам и, скорее всего, предпочтут строить свою инфраструктуру самостоятельно, потому что она контролирует доступ.

к основным активам валидатора — ставкам избирателей.

Именно такое поведение позволяет строить распределенные защищенные сети – независимость используемых облачных провайдеров, виртуальные и «голые» серверы, разные операционные системы, все это позволяет делать атаки на такую сеть крайне неэффективными – слишком много разных используется программное обеспечение.

Например, Ethereum использует две реализации основных узлов — на Go и на Rust, и атака, эффективная для одной реализации, не работает для другой.

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

При запуске сети, когда один валидатор находится в Европе, второй в Южной Америке, а третий в Азии, довольно сложно добиться слаженной работы нескольких десятков независимых групп и заинтересовать их в результате.



Валидаторы

Представим себе запуск гипотетического современного блокчейна (большая часть описанного подходит для блокчейнов на базе любого современного семейства блокчейнов: Ethereum, EOS, Polkadot, Cosmos и других, обеспечивающих консенсус PoS. Главные герои такие блокчейны представляют собой команды валидаторов, занимающиеся установкой собственных независимых серверов, которые проверяют и производят новые блоки, а также получают вознаграждения, предоставляемые сетью тем, кто участвует в консенсусе.

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

более-менее эффективно достигают консенсуса за секунды), поэтому проект объявляет регистрацию, при которой валидаторы делятся публичной информацией о себе с пользователями, убеждая их, что они собираются предоставить качественный сервис запущенной сети.

Валидация — это бизнес, который позволяет предельно точно оценить потенциальный доход валидатора, быстро передавать полномочия между проектами, а в случае успеха выбранной им сети валидатор может как полноправный участник DAO и ответственное лицо: развивать проект или просто предоставлять отличный технический сервис за абсолютно прозрачные, честно заработанные деньги.

деньги.

При расчете вознаграждения валидаторам проекты стараются учитывать затраты валидаторов и сделать вознаграждение за блоки таким, чтобы этот бизнес был прибыльным, но в то же время не позволял валидаторам обрушивать экономику, заливая ее деньгами и лишая этого других пользователей сети.

Бизнес валидаторов требует обеспечения высокой отказоустойчивости сервисов, а это означает высокий уровень подготовки DevOps и разработчиков и дорогостоящие вычислительные ресурсы.

Даже без необходимости майнинга хэшей в сетях доказательства работы узел блокчейна представляет собой большой сервис, который занимает много памяти, потребляет много вычислений, проверяет, записывает на диск и отправляет большие объемы данных в сеть.

.

Для хранения журналов транзакций и цепочек блоков для блокчейна с несколькими тысячами мелких транзакций в блоке теперь требуется хранилище объемом 50 Гб и более, а для блоков это должен быть SSD. Государственная база данных блокчейнов с поддержкой смарт-контрактов уже может превышать 64 ГБ оперативной памяти.

Серверы с необходимыми характеристиками стоят достаточно дорого; Узел Ethereum или EOS может стоить от 100 до 200 долларов в месяц.

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

Однако в нужные моменты владение узлом-валидатором может принести серьезный доход (в случае с EOS — до $10 000 в день).

Валидация — это лишь одна из новых потенциальных ролей ИТ для предпринимателей и компаний; по мере того, как программисты придумывают все более сложные алгоритмы, вознаграждающие за честность и наказывающие мошенничество и кражу, появляются сервисы, выполняющие функции публикации важных данных (оракулы), осуществляющие надзор (снижение депозитов и наказание мошенников путем публикации доказательств обмана), разрешение споров услуги, страховка и опции, даже сбор мусора — это потенциально большой рынок в системах смарт-контрактов, где за хранение данных необходимо платить.



Проблемы запуска блокчейна

Открытость блокчейна, позволившая компьютерам из любой страны свободно участвовать в сети и простота подключения к сети любого скрипт-кидди по инструкции на GitHub, не всегда является преимуществом.

Погоня за новым токеном зачастую вынуждает валидаторов «майнить новую монету на старте» в надежде на рост курса и возможность побыстрее скинуть заработок.

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

Тем не менее Перед командой проекта стоит задача — каким-то образом попасть в свою сеть тех, кто в будущем способен обеспечить стабильную работу узлов, разбирается в безопасности, умеет быстро решать проблемы, сотрудничать с другими валидаторами и действовать сообща — качество От этих качеств проекта полностью зависит сам токен, в который участники сети собираются вкладывать свое время и ресурсы.

Адекватные фаундеры, оценивая риски, хорошо понимают, что при запуске ПО такого размера обязательно придется столкнуться с ошибками в коде и конфигурации узлов, и что от того, насколько хорошо разработчики и валидаторы будут совместно решать проблемы, зависит стабильность работы сети.

такие проблемы.

Команда готова голосовать в сети за любых валидаторов, просто чтобы знать, какие из них хорошие? Самое большое портфолио? Его сейчас почти ни у кого нет. На основе профилей команды в Linkedin? Опытные специалисты по DevOps или безопасности не предоставят вам никаких профилей Linkedin. Судя по заявлениям в чате, публикациям и помощи другим на этапе подготовки? Хорошо, но субъективно и неточно.

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

Эту процедуру впервые представили в виде игры ребята из проекта Cosmos, и эта идея, несомненно, является отличным способом подготовить сеть к запуску надежного и отказоустойчивого мэйннета.



Игра Валидаторов

Я опишу игру валидаторов так, как мы разработали ее для блокчейна DAO.Casino (DAOBet) на базе форка EOS, который называется Haya и имеет аналогичный механизм управления – валидаторы выбираются голосованием с любого аккаунта, в котором часть баланс, использованный для голосования за валидатора, замораживается.

Любой аккаунт, на балансе которого имеется основной токен BET, может проголосовать за выбранного валидатора любой частью своего баланса.

Голоса суммируются и по результатам формируется топ валидаторов.

В разных блокчейнах этот процесс организован по-разному, и обычно именно в этой части новый блокчейн отличается от родительского, и надо сказать, что в нашем случае EOS полностью оправдывает «ОС» в своем названии, мы действительно используем EOS. в качестве базовой операционной системы для развертывания модифицированной версии блокчейна для задач DAOBet. Я опишу отдельные проблемы и способы их решения в рамках игры.

Представим себе сеть, в которой ваш сервер может быть открыто атакован, где для поддержания позиции валидатора вам необходимо постоянно взаимодействовать с сетью, продвигая свой валидатор и следя за тем, чтобы он производил блоки и доставлял их другим валидаторам по сети.

время, иначе валидатор будет выброшен из списка.



Как выбрать лучших победителей?

Основным техническим требованием к игре является возможность публичной проверки ее результатов.

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

В централизованной системе мы могли бы измерять «время безотказной работы» каждого валидатора и вознаграждать тех, кто находился в сети больше всего или пропускал максимальный сетевой трафик.

Вы можете собрать данные о загрузке процессора и памяти и наградить тех, кто хорошо поработал.

Но любой такой сбор метрик означает наличие центра сбора, а узлы все независимы и могут вести себя так, как хотят, и отправлять любые данные.

Поэтому естественным решением является то, что победителей следует определять на основе данных из блокчейна, поскольку с их помощью можно увидеть, какой валидатор какой блок произвел и какие транзакции в него вошли.

Мы назвали это число Validator Points (VP), и заработать их — основная цель валидаторов в игре.

В нашем случае самой простой, легко публично проверяемой и эффективной метрикой «полезности» валидатора является VP = количество блоков, созданных валидатором за определенный период времени.

Этот простой выбор обусловлен тем, что управление в EOS уже предусматривает множество возникающих проблем, поскольку EOS является наследником трех поколений реально работающих блокчейнов с большим опытом сложного управления сетями и практически любыми проблемами валидатора с сетью, процессором, диск приводит только к одной проблеме — он подписывает меньше блоков, получает меньшую оплату за работу, что опять же приводит нас просто к количеству подписанных блоков — для EOS это отличный и простой вариант. Для других блокчейнов способ расчета очков валидатора может отличаться, например, для консенсусов на основе pBFT (Tendermint/Cosmos, консенсус Aura от Parity Substrate), где каждый блок должен быть подписан несколькими валидаторами, имеет смысл учитывать отдельных валидаторов.

подписи, а не блоки.

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



Как смоделировать реальные условия эксплуатации

Задача основателей — протестировать валидаторы в условиях, приближенных к реальным, без какого-либо централизованного контроля.

Эту проблему можно решить с помощью контракта крана, который распределяет равное количество основного токена валидаторам и всем остальным.

Чтобы получить токены на свой баланс, вам необходимо создать транзакцию и убедиться, что сеть включила ее в блок.

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

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

Поэтому заранее спланируйте контракт крана как важный инструмент запуска сети и заранее начните подбирать его параметры.

Запрос токенов из крана и валидация голосов по-прежнему не полностью эмулирует работу боеголовки, особенно в экстремально нагруженных режимах.

Поэтому команде блокчейна все равно придется так или иначе писать дополнительные тесты для загрузки сети.

Особую роль в этом играют специально созданные смарт-контракты, позволяющие тестировать отдельную подсистему.

Для тестирования хранилища контракт хранит случайные данные в блокчейне, а для тестирования сетевых ресурсов тестовый контракт требует большого количества входных данных, тем самым раздувая объем транзакций — запуская поток таких транзакций в произвольные моменты времени.

команда одновременно тестирует стабильность кода и силу валидаторов.

Отдельный вопрос — обновление кода нод и проведение хардфорков.

Требуется, чтобы на случай ошибки, уязвимости или сговора злонамеренных валидаторов у валидаторов был план действий, уже отработанный в игре валидаторов.

Здесь можно придумать схемы начисления VP за быстрое проведение хардфорка, например, оштрафовав всех валидаторов, которые еще не выкатили новую версию кода ноды, но это сложно реализовать и усложняет расчет. Ситуацию экстренного использования хардфорка можно смоделировать, искусственно «сломав» блокчейн на заданном блоке.

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



Как информировать участников о состоянии сети и исправлять ошибки

Несмотря на недоверие между валидаторами, своевременное получение актуальной информации о состоянии сети выгодно всем для более быстрого принятия решений, поэтому команда проекта поднимает сервис по сбору и визуализации множества метрик с серверов валидаторов, что позволяет видеть ситуацию одновременно по всей сети, позволяя быстро определить, что происходит. Также и валидаторам, и проекту выгодно, чтобы команда проекта быстро исправляла найденные ошибки, поэтому помимо сбора метрик имеет смысл сразу начать собирать логи и данные об ошибках с машин валидаторов на машине, доступной для блокчейна.

Разработчики.

Здесь никому не выгодно искажать информацию, поэтому эти сервисы разработаны командой проекта и им можно доверять.

Имеет смысл собирать системные метрики от валидаторов, и, конечно, самые важные метрики самого блокчейна — для DAOBet — это время финализации и лаг последнего финализированного блока.

Благодаря этому команда видит увеличение потребления памяти на узлах при запуске бенчмарка, проблемы с отдельными валидаторами.



Важные моменты для проведения игры-валидатора

Оказывается, если вы хотите официально разрешить валидаторам атаковать машины друг друга (неофициально они и так могут это делать), вам нужно отдельно юридически сформулировать это как тестирование безопасности, так как по законам некоторых стран DDoS или сетевые атаки могут быть наказан.

Еще один важный вопрос — как вознаграждать валидаторов.

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

  • Распределите весь призовой фонд в соответствии с заработанными VP.
    • это очень демократично и позволяет заработать деньги каждому, кто вложил время и ресурсы в игру-валидатор.

    • но привлекает в игру случайных людей без подготовленной инфраструктуры
  • Распределить призовой фонд топ-N валидаторам по результатам игры
    • Победителями, скорее всего, станут валидаторы, которые наиболее стабильно держались в течение игры и очень твердо настроены на победу.

    • некоторые валидаторы не захотят участвовать, низко оценивая свои шансы на победу, особенно если среди участников есть маститые валидаторы
Какой вариант выбрать – решать вам Есть еще один момент - совсем не факт, что десятки валидаторов по вашему зову бросятся участвовать в игре, а из тех, кто решит попробовать, не все даже установят и запустят ноду - обычно, на этом этапе проекты имеют довольно скудную документацию, встречаются ошибки, а разработчики, работающие в условиях цейтнота, не очень быстро отвечают на вопросы.

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

В этом случае на старте игры недостающие валидаторы запускаются командой проекта, участвуют в консенсусе, но не могут быть победителями.



Заключение

В заключение я попытался составить из вышеизложенного список того, что необходимо придумать, сделать и запустить для эффективного проведения игры-валидатора.

Что нужно сделать, чтобы запустить настоящую игру-валидатор: разработать свой собственный блокчейн :)

  • сделать и поднять веб-интерфейс и предоставить CLI для голосования за валидаторов
  • убедиться, что метрики с работающего узла валидатора можно отправить в централизованный сервис (например, Prometheus)
  • поднять сервер сбора метрик (Prometheus + Grafana) для игры-валидатора
  • выяснить, как будут рассчитываться баллы валидатора (VP)
  • разработать публичный скрипт, который рассчитывает VP валидатора на основе данных из блокчейна
  • разработать веб-интерфейс для отображения топовых валидаторов, а также игрового статуса валидаторов (сколько времени осталось до конца, у кого сколько VP и т.д.)
  • разработать и автоматизировать запуск произвольного количества собственных нод, спроектировать процесс подключения валидаторов к игре (когда и как отключать свои ноды, подавать и снимать за них голоса)
  • рассчитать, сколько токенов необходимо выпустить и разработать контракт крана
  • создать тестовый сценарий (передача токенов, массовое использование хранилища, массовое использование сети)
  • собрать всех участников в одном чате для быстрого общения
  • запустить блокчейн немного раньше начала игры
  • дождитесь стартового блока, запустите игру
  • протестировать сеть с несколькими типами транзакций
  • провести хард-форк
  • изменить список валидаторов
  • повторите шаги 13, 14, 15 в разном порядке, сохраняя стабильность сети
  • дождитесь финального блока, завершите игру, посчитайте ПО
Надо сказать, что игра валидаторов — это новая история, и она проводилась всего пару раз, поэтому не стоит воспринимать этот текст как готовое руководство.

Аналогов в современном ИТ-бизнесе нет — представьте, что банки перед запуском платежной системы соревнуются друг с другом, кто лучше всех проведет транзакции с клиентами.

Традиционные подходы вряд ли помогут вам создать большие децентрализованные сети, поэтому осваивайте новые бизнес-модели, запускайте свои игры, выявляйте достойных, вознаграждайте их и поддерживайте быструю и стабильную работу своих распределенных систем.

Теги: #информационная безопасность #блокчейн #Децентрализованные сети #криптовалюты #смарт-контракты #proof-of-stake #правление #игра ставок

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

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