Какво е валидаторска игра или „как да стартирам блокчейн с доказателство за залог“

И така, вашият екип завърши алфа версията на вашия блокчейн и е време да стартирате testnet и след това mainnet. Имате истински блокчейн, с независими участници, добър икономически модел, сигурност, проектирали сте управление и сега е време да опитате всичко това в действие. В един идеален крипто-анархичен свят вие поставяте генезисния блок в мрежата, крайният код на възела и самите валидатори стартират всичко, повдигат всички спомагателни услуги и всичко се случва от само себе си. Но това е в един измислен свят, но в реалния свят екипът трябва да подготви доста спомагателен софтуер и различни манипулации, за да помогне на валидаторите да стартират стабилна мрежа. За това е тази статия.

Стартирането на мрежи, базирани на консенсуси от типа „доказателство за дял“, където валидаторите се определят от гласовете на притежателите на системни токени, е доста специфично събитие, тъй като дори стартирането на традиционни, централно управлявани системи с десетки и стотици сървъри не е лесно задача сама по себе си и блокчейнът трябва да бъде стартиран с усилия на лоялни, но независими участници. И ако в една корпорация, при стартиране, администраторите имат пълен достъп до всички машини, регистрационни файлове, общ мониторинг, тогава валидаторите няма да позволят на никого достъп до техните сървъри и най-вероятно ще предпочетат да изградят своята инфраструктура независимо, защото контролира достъпа към основните активи на валидатора - залози гласоподаватели. Именно това поведение прави възможно изграждането на разпределени защитени мрежи - независимостта на използваните облачни доставчици, виртуални и "голи" сървъри, различни операционни системи, всичко това ви позволява да направите атаките срещу такава мрежа изключително неефективни - твърде много различни използва се софтуер. Например, Ethereum използва две основни реализации на възел, в Go и в Rust, и атака, която е ефективна за едната реализация, не работи за другата.

Следователно всички процеси за стартиране и работа на блокчейни трябва да бъдат организирани по такъв начин, че всеки валидатор или дори малка група валидатори да може по всяко време да изхвърли компютрите си през прозореца и да си тръгне, докато нищо не трябва да се счупи и останалите валидатори трябва продължават ефективно да поддържат оперативната мрежа и да свързват нови валидатори. При стартиране на мрежа, когато един валидатор е в Европа, вторият в Южна Америка и третият в Азия, е доста трудно да се постигне координирана работа на няколко десетки независими групи и да ги заинтересува в резултат.

Валидатори

Нека си представим стартирането на хипотетичен модерен блокчейн (повечето от описаното е подходящо за блокчейни, базирани на всяко модерно семейство блокчейни: Ethereum, EOS, Polkadot, Cosmos и други, които осигуряват консенсус за доказателство за дял. Основните герои на такива блокчейни са екипи за валидатори, ангажирани с инсталирането на свои собствени независими сървъри, които валидират и произвеждат нови блокове, и получават награди, осигурени от мрежата за тези, които участват в консенсуса.За да стартирате нови мрежи, са необходими няколко дузини валидатори (толкова много вече могат повече или по-малко ефективно постигат консенсус за секунди), така че проектът обявява регистрация, при която валидаторите споделят публична информация за себе си с потребителите, убеждавайки ги, че ще предоставят висококачествена услуга на стартираната мрежа.

Валидирането е бизнес, който ви позволява изключително точно да оцените потенциалния доход на валидатора, бързо да прехвърляте мощност между проекти и ако избраната от него мрежа е успешна, валидаторът може, като пълноправен участник в DAO и отговорно лице, разработете проекта или просто осигурете отлично техническо обслужване за напълно прозрачни, честно спечелени пари. Когато изчисляват възнаграждението за валидатори, проектите се опитват да вземат предвид разходите за валидатори и да направят възнаграждението за блокове така, че този бизнес да е печеливш, но в същото време да не позволяват на валидаторите да съборят икономиката, като ги наводнят с пари и лишавайки другите потребители на мрежата от него.

Бизнесът с валидатори изисква осигуряване на висока отказоустойчивост на услугите, което означава високо ниво на обучение за devops и разработчици и скъпи компютърни ресурси. Дори и без да е необходимо да копаете хешове в мрежи с доказателство за работа, блокчейн възелът е голяма услуга, която заема много памет, консумира много изчисления, валидира, записва на диск и изпраща големи количества данни към мрежата . За да съхранявате регистрационни файлове на транзакции и блокови вериги за блокчейн с няколко хиляди малки транзакции в блок, сега се изисква съхранение от 50 Gb или повече, а за блокове трябва да е SSD. Държавната база данни на блокчейни с поддръжка на интелигентни договори вече може да надвишава 64 Gb RAM. Сървърите с необходимите характеристики са доста скъпи; Ethereum или EOS възел може да струва от 100 до 200 $/месец. Добавете към това увеличените заплати за денонощната работа на разработчиците и devops, които по време на периода на стартиране решават проблеми дори през нощта, тъй като някои валидатори могат лесно да бъдат разположени в друго полукълбо. Въпреки това, в правилните моменти, притежаването на валидиращ възел може да донесе сериозен доход (в случай на EOS, до $10 000 на ден).

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

Проблеми при стартиране на блокчейн

Отвореността на блокчейна, която дава възможност на компютри от всяка страна да участват свободно в мрежата и лесното свързване на всяко скриптово дете към мрежата според инструкциите на GitHub, не винаги е предимство. Преследването на нов токен често принуждава валидаторите да „копаят нова монета в началото“ с надеждата, че процентът ще се повиши и възможността бързо да изхвърлят печалбите си. Освен това това означава, че вашият валидатор може да бъде всеки, дори анонимен човек, можете да гласувате за него по същия начин, както за другите валидатори (обаче ще бъде трудно за анонимен човек да събере гласовете на заинтересованите страни за себе си, така че ние ще оставя страшните истории за анонимни криптовалути на политиците) . въпреки това

Екипът на проекта има задача - по някакъв начин да влезе в своята мрежа онези, които в бъдеще са в състояние да осигурят стабилна работа на възли, разбират сигурността, знаят как бързо да решават проблеми, да си сътрудничат с други валидатори и да действат заедно - качеството на това Много нещо зависи изцяло от тези качества на токен, в който участниците в мрежата ще инвестират своето време и ресурси. Адекватните основатели, когато оценяват рисковете, разбират добре, че при стартиране на софтуер с такъв размер определено ще трябва да срещнете грешки в кода и конфигурацията на възлите и че стабилността на мрежата зависи от това колко добре разработчиците и валидаторите ще решат съвместно такива проблеми.

Екипът е готов да гласува в основната мрежа за всякакви валидатори, само за да знае кои, кои са добри? Най-голямото портфолио? Вече почти никой не го има. Въз основа на профилите на отбора в Linkedin? Опитни разработчици или специалисти по сигурността няма да ви дадат профили в Linkedin. Според изявления в чат, публикации и помощ на другите по време на подготвителната фаза? Добре, но субективно и неточно.

В такива условия остава едно нещо - нещо, което решава добре проблемите на всички - игра, в която ще бъде възможно да изберете най-добрите валидатори, но основното е да тествате блокчейна за здравина и да проведете пълномащабен боен тест на блокчейн в условия на активна употреба, промени в консенсуса, поява и коригиране на грешки. Тази процедура беше представена за първи път като игра от момчетата от проекта Cosmos и тази идея несъмнено е отличен начин да подготвите мрежата за стартирането на надеждна и устойчива на грешки основна мрежа

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

Ще опиша играта на валидатори, както я проектирахме за блокчейна DAO.Casino (DAOBet), базиран на EOS форка, който се нарича Haya и има подобен механизъм за управление - валидаторите се избират чрез гласуване от всеки акаунт, в който част от балансът, използван за гласуване за валидатора, е замразен. Всеки акаунт, който има основен BET токен в баланса си, може да гласува за избрания валидатор с всяка част от баланса си. Гласовете се сумират и най-добрите валидатори се изграждат въз основа на резултатите. В различните блокчейни този процес е организиран по различен начин и обикновено именно в тази част новата блокчейн се различава от родителската и трябва да кажа, че в нашия случай EOS напълно оправдава „OS“ в името си, ние наистина използваме 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, XNUMX, XNUMX в различен ред, поддържайки стабилността на мрежата
  • изчакайте последния блок, завършете играта, пребройте VP

Трябва да се каже, че играта на валидатори е нова история и е извършена само няколко пъти, така че не трябва да приемате този текст като готово ръководство. Няма аналози в съвременния ИТ бизнес – представете си, че банките, преди да пуснат система за разплащане, се състезават помежду си кой ще е най-добър в извършването на клиентски транзакции. Традиционните подходи едва ли ще ви помогнат да създадете големи децентрализирани мрежи, така че овладейте нови бизнес модели, стартирайте игрите си, идентифицирайте достойните, възнаградете ги и поддържайте вашите разпределени системи да работят бързо и стабилно.

Източник: www.habr.com

Добавяне на нов коментар