Итак, ваша команда завершила альфа-версию вашего блокчейна, и пришло время запустить тестовую сеть, а затем основную сеть.
У вас есть настоящий блокчейн с независимыми участниками, хорошая экономическая модель, безопасность, вы разработали систему управления, и теперь пришло время попробовать все это в действии.
В идеальном криптоанархическом мире вы кладете генезис-блок в сеть, финальный код ноды и валидаторы сами все запускают, поднимают все вспомогательные сервисы, и все происходит само собой.
Но это в вымышленном мире, а в реальном команде необходимо подготовить достаточно много вспомогательного ПО и различных манипуляций, чтобы помочь валидаторам запустить стабильную сеть.
Вот о чем эта статья.
Запуск сетей на основе консенсусов типа «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 #правление #игра ставок
-
Компьютерщик Отправляется В Путь
19 Oct, 24 -
Почему Кофе Легче Пролить, Чем Пиво?
19 Oct, 24 -
2R2L-Кэширование
19 Oct, 24 -
Ищем Быстрое Локальное Хранилище
19 Oct, 24 -
Ускорение Opera Mobile 8.65
19 Oct, 24 -
Iphone 3G Подорожал В Четыре Раза
19 Oct, 24 -
«Как» Против «Как Сделать»
19 Oct, 24