Што такое гульня валідатараў ці "як запусціць proof-of-stake блокчейн"

Такім чынам, ваша каманда скончыла alpha-версію вашага блокчейна, і нетутэйша час запускаць testnet, а затым і mainnet. У вас сапраўдны блокчэйн, з незалежнымі ўдзельнікамі, добрай эканамічнай мадэллю, бяспекай, вы спраектавалі governance і зараз пара б паспрабаваць усё гэта ў справе. У ідэальным крыптаанархічным свеце, вы выкладваеце ў сетку genesis block, канчатковы код ноды і валідатары самі ўсё запускаюць, паднімаюць усе дапаможныя сэрвісы і ўсё здараецца само сабой. Але гэта ў выдуманым свеце, а ў рэальным, каманда павінна падрыхтаваць даволі шмат дапаможнага софту і розных маніпуляцый, каб дапамагчы валідатарам запусціць устойлівую сетку. Пра гэта дадзены артыкул.

Запуск сетак на базе кансэнсусаў тыпу "proof-of-stake", дзе валідатары вызначаюцца галасамі трымальнікаў токенаў сістэмы з'яўляецца даволі спецыфічным мерапрыемствам, бо нават запуск традыцыйных, цэнтралізавана кіраваных сістэм з дзясяткамі і сотнямі сервераў сама па сабе няпростая задача, а блокчейн трэба стартаваць намаганнямі лаяльных, але незалежных удзельнікаў. І, калі ў карпарацыі, пры запуску адміністратары маюць поўны доступ да ўсіх машын, логам, агульнаму маніторынгу, то валідатары нікога не падпусцяць да сваіх сервераў і, хутчэй за ўсё, упадабаюць будаваць сваю інфраструктуру самастойна, бо яна кантралюе доступ да асноўных актываў валідатара - стэйкам. галасуючых. Менавіта такія паводзіны дазваляе будаваць размеркаваныя бяспечныя сеткі - незалежнасць выкарыстоўваных хмарных правайдэраў, віртуальных і "baremetal" сервераў, розныя аперацыйныя сістэмы, усё гэта дазваляе зрабіць напады такой сеткі вельмі неэфектыўнымі - занадта шмат рознага софту выкарыстоўваецца. Напрыклад у Ethereum выкарыстоўваецца дзве асноўных имплементации ноды, на Go і на Rust, і напад, эфектыўная для адной имплементации не працуе для іншай.

Таму ўсе працэсы запуску і эксплуатацыі блокчейнов павінны быць арганізаваны так, каб любы валідатар, ці нават невялікая група валідатараў, маглі б у любы момант выкінуць свае кампутары ў акно, і сысці, пры гэтым нічога не павінна зламацца і пакінутыя валідатары павінны працягваць эфектыўна падтрымліваць працу сеткі і падключаць новых валідатараў. Пры запуску сеткі, калі адзін валідатар у Еўропе, другі ў Паўднёвай Амерыцы, а трэці ў Азіі, дамагчыся ўзгодненай працы некалькіх дзясяткаў незалежных груп і зацікавіць іх у выніку даволі складана.

Валідатары

Давайце ўявім сабе запуск гіпатэтычнага сучаснага блокчейна (вялікая частка апісванага падыходзіць для блокчейнов на базе любога сучаснага сямейства блокчейнов: Ethereum, EOS, Polkadot, Cosmos і іншых, у якіх прадугледжаны кансенсус proof-of-stake. Галоўнымі дзеючымі асобамі такіх блокчеданов з'яўляюцца камандамі , якія займаюцца ўсталяваннем уласных незалежных сервераў, якія валідуюць і вырабляюць новыя блокі, і атрымліваюць узнагароды прадугледжаныя сеткай для тых, хто ўдзельнічае ў кансэнсусе.Для запуску новых сетак патрабуецца некалькі дзясяткаў валідатараў (столькі цяпер могуць больш-менш эфектыўна дасягаць кансенсусу за секунды), таму праект аб'яўляе рэгістрацыю, пры якой валідатары дзеляцца публічнай інфармацыяй аб сабе з карыстальнікамі, пераконваючы іх у тым, што збіраюцца якасна абслугоўваць сетку, якая запускаецца.

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

Бізнес валідатараў патрабуе забеспячэння высокай адмоваўстойлівасці сэрвісаў, а значыць — высокага ўзроўню падрыхтоўкі дэвапсаў і распрацоўшчыкаў і нятанных вылічальных рэсурсаў. Нават без неабходнасці майніць хэшы ў proof-of-work сетках, блокчейн нода - гэта вялікі сэрвіс які займае шмат памяці, які спажывае шмат вылічэнняў, які валідуе, запісвае на дыск і які аддае ў сетку вялікія аб'ёмы дадзеных. Для захоўвання лога транзакцый і ланцужкоў блокаў для блокчейна з некалькімі тысячамі невялікіх транзакцый у блоку зараз патрабуецца storage ад 50 Gb і больш, і для блокаў гэта павінен быць SSD. State database блокчейнов з падтрымкай смарт-кантрактаў ужо можа перавышаць 64Gb аператыўнай памяці. Сервера з патрабаванымі характарыстыкамі з'яўляюцца даволі дарагімі, нода Ethereum ці EOS можа абыходзіцца ў ад 100 да 200 $/month. Дадайце да гэтага павялічаную аплату працы за кругласутачную працу распрацоўнікаў і дэвопса, якія ў перыяд запуску вырашаюць праблемы нават уначы, бо частка валідатараў лёгка можа знаходзіцца ў іншым паўшар'і. Тым не менш, ва ўдалыя моманты валоданне нодай-валідатарам можа прыносіць сур'ёзны даход (у выпадку EOS – да 10 000 $ per day).

Валідатарства - толькі адна з новых патэнцыйных IT-роляў для прадпрымальнікаў і кампаній, па меры прыдумлення праграмістамі ўсё больш выдасканаленых алгарытмаў, якія дазваляюць узнагароджваць сумленнасць і караць падман і крадзеж, з'яўляюцца сэрвісы, якія выконваюць функцыі публікацыі важных дадзеных (аракулаў), якія выконваюць нагляд (слэшинг і пакаранне ашуканцаў шляхам публікацыі доказы падману), сэрвісы вырашэння спрэчак, страховак і апцыён, нават garbage collection з'яўляецца патэнцыйна вялікім рынкам у сістэмах смарт-кантрактаў, дзе неабходна плаціць за захоўванне дадзеных.

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

Адкрытасць блокчейна, якая зрабіла магчымым вольны ўдзел у працы сеткі кампутараў з любых краін і прастата падлучэння да сеткі любога script kiddie па інструкцыі на GitHub не заўсёды з'яўляецца перавагай. Пагоня за новым такенам часта прымушае валідатараў "памайніць новую манетку на старце", у надзеі на рост курсу і магчымасць хутка скінуць заробленае. Таксама, гэта азначае, што вашым валідатарам можа быць хто заўгодна, нават ананім, за яго можна гэтак жа галасаваць, як і за іншых валідатараў (праўда, ананіму будзе цяжкавата сабраць за сябе галасы стэйкхолдэраў, так што страшныя казкі пра ананімныя крыптавалюты пакінем палітыкам) . Тым не менш

У каманды праекта ёсць задача - як-небудзь займець у сваю сетку тых, хто ў будучыні здольны забяспечыць стабільную працу нод, разбіраецца ў бяспецы, умее хутка вырашаць праблемы, кааперавацца з іншымі валідатарамі і дзейнічаць сумесна - ад гэтых якасцяў у поўнай меры залежыць якасць таго самага. токена, у які сабраліся ўкласці свой час і рэсурсы ўдзельнікі сеткі. Адэкватныя фаўндэры, ацэньваючы рызыкі, добра разумеюць, што пры запуску ПЗ такога аб'ёму абавязкова давядзецца сутыкнуцца з памылкамі ў кодзе, канфігурацыі нод, і што стабільнасць сеткі залежыць ад таго, наколькі добра распрацоўшчыкі і валідатары сумесна будуць вырашаць падобныя праблемы.

Каманда гатова галасаваць у mainnet за любых валідатараў, вось толькі ведаць бы за якіх, якія добрыя? Самым вялікім партфоліё? Яго зараз амаль ні ў кога няма. Па профілях каманды ў Linkedin? Доследных дэвапсы або бяспечнікі не будуць вам даваць ніякія профілі ў Linkedin. Па заявах у чаце, пастам і дапамозе іншым на этапе падрыхтоўкі? Добра, але суб'ектыўна і недакладна.

У такіх умовах застаецца адно - тое, што добра вырашае праблемы ўсіх - гульню, у якой можна будзе выбраць лепшых валідатараў, але галоўнае - праверыць блокчейн на трываласць і правесці поўнамаштабны баявы тэст блокчейна ва ўмовах актыўнага выкарыстання, змен у кансэнсусе, з'яўленні і выпраўленні памылак . Упершыню гэтую працэдуру падалі як гульню хлопцы з праекта Cosmos, і гэтая ідэя несумненна з'яўляецца выдатным спосабам падрыхтоўкі сеткі да запуску надзейнага і абароненай ад збояў mainnet

Game of Validators

Я апішу гульню валідатараў так, як мы праектавалі яе для блокчейна DAO.Casino (DAOBet) на аснове форка EOS, які называецца Haya і мае блізкі механізм governance - валідатары выбіраюцца галасаваннямі з любога акаўнта, пры якім частка балансу, якім галасуюць за валідатара замарожваецца. Любы акаўнт, які мае на балансе асноўны токен BET, можа прагаласаваць за выбранага валідатара любой часткай свайго балансу. Галасы сумуюцца і па выніках будуецца top валідатараў. У розных блокчейнах гэты працэс арганізаваны па-рознаму, і звычайна менавіта ў гэтай частцы новы блокчейн адрозніваецца ад бацькоўскага, і, трэба сказаць, што ў нашым кейсе EOS цалкам апраўдвае "OS" у сваёй назве, мы сапраўды выкарыстоўваем EOS як базавую аперацыйную сістэму для разгортвання мадыфікаванай версіі блокчейна пад задачы DAOBet.

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

Як абраць top пераможцаў?

Галоўнае тэхнічнае патрабаванне да гульні - каб яе вынікі былі публічна правяраюцца. Гэта азначае, што вынікі гульні: TOP пераможцаў, павінен быць сфарміраваны строга на аснове дадзеных, якія можа праверыць любы ўдзельнік. У цэнтралізаванай сістэме мы маглі б вымяраць "uptime" кожнага валідатара і ўзнагароджваць тых, хто больш быў online або прапусціў праз сябе максімум сеткавага трафіку. Можна збіраць дадзеныя аб загрузцы працэсара, памяці і ўзнагародзіць тых, хто годна працаваў. Але любы такі збор метрык азначае існаванне цэнтра збору, ды і ноды ўсё незалежныя і могуць паводзіць сябе як жадаюць і адпраўляць любыя дадзеныя.

Таму натуральнае рашэнне - пераможцы павінны вызначацца па дадзеных з блокчейна, бо па ім можна ўбачыць хто з валідатараў які блок зрабіў і якія транзакцыі ў яго былі ўключаны. Мы назвалі гэты лік Validator Points (VP), і іх зараблянне і ёсць асноўная мэта валідатараў у гульні. У нашым выпадку, самай простай, лёгка публічна правяранай і эфектыўнай метрыкай "карыснасці" валідатара з'яўляецца VP = лік вырабленых валідатарам блокаў за зададзены часавы перыяд.

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

У іншых блокчейнов, спосаб падліку Validator Points можа адрознівацца, да прыкладу для pBFT-based кансэнсусаў(Tendermint/Cosmos, кансэнсус Aura з Parity Substrate), дзе кожны блок павінен быць падпісаны мноствам валідатараў, мае сэнс лічыць асобныя подпісы валідатараў, а не блокі, магчыма, мае сэнс улічваць не завершаныя раўнды кансэнсусу, якія марнуюць рэсурсы іншых валідатараў, увогуле гэта моцна залежыць ад тыпу кансэнсусу.

Як змадэляваць рэальныя ўмовы эксплуатацыі

Задача фаўдэраў - праверыць валідатараў ва ўмовах, набліжаным да рэальнасці, пры гэтым не маючы ніякага цэнтралізаванага кантролю. Гэтую праблему можна вырашыць з дапамогай кантракта-faucet-а, які раздае роўныя колькасці асноўнага токена валідатарам і ўсім жадаючым. Для атрымання токенаў на баланс трэба сфарміраваць транзакцыю, і дамагчыся таго, каб сетка ўлучыла яе ў блок. Такім чынам, валідатару для перамогі неабходна ўвесь час папаўняць свой баланс новымі токенамі і галасаваць за сябе, прасоўваючы сябе ў топе. Гэтая дзейнасць стварае сталую нагрузку на сетку, а параметры можна падабраць так, каб струмень запытаў быў досыць сур'ёзным для паўнавартаснага тэсту сеткі. Таму плануйце кантракт-faucet загадзя, як важная прылада для запуску сеткі і пачынайце падбіраць яго параметры загадзя.

Запыт токенаў з faucet і галасаванне валідатараў усё ж не да канца сумленна эмулюе працу БЧ, асабліва ў вельмі нагружаных рэжымах. Таму камандзе блокчейна ўсё роўна так ці інакш давядзецца пісаць дадатковыя бенчмаркі, якія дазваляюць нагрузіць сетку. Адмысловую ролю ў гэтым гуляюць адмыслова створаныя загадзя смарт-кантракты, якія дазваляюць пратэставаць асобную падсістэму. Для тэставання storage, кантракт захоўвае ў блокчейн выпадковыя дадзеныя, а для праверкі сеткавых рэсурсаў тэставы кантракт патрабуе вялікі аб'ём уваходных дадзеных, тым самым раздзімаючы аб'ём транзакцый - запускаючы струмень такіх транзакцый у адвольныя моманты часу каманда адначасова тэстуе стабільнасць кода і ўстойлівасць валідатараў.

Асобным пытаннем стаіць абнаўленне кода нод і правядзенне хардфоркаў. Трэба, каб у выпадку з'яўлення бага, уразлівасці, змовы зламысных валідатараў, валідатары мелі б план дзеянняў, ужо адпрацаваны ў гульні валідатараў. Тут можна прыдумляць схемы налічэння VP за хуткае ўжыванне хардфорка, да прыкладу штрафуючы ўсіх валідатараў, хто яшчэ не накаціў новую версію кода ноды, але гэта складана рэалізаваць, ускладняе падлік. Сэмуляваць сітуацыю экстранага ўжывання хардфорка можна штучна "зламаўшы" блокчейн на зададзеным блоку. Вытворчасць блокаў спыняецца, і ў выніку ў выйгрышы будуць тыя, хто раней уключыцца, і пачне падпісваць блокі, так што VP на аснове колькасці падпісаных блокаў тут добра падыходзіць.

Як інфармаваць удзельнікаў аб стане сеткі і правіць памылкі

Нягледзячы на ​​недавер паміж валідатарамі, своечасова атрымліваць актуальную інфармацыю аб стане сеткі выгадна ўсім, каб хутчэй прымаць рашэнні, таму каманда праекта паднімае сэрвіс для збору і візуалізацыі мноства метрык з сервераў валідатараў, які дазваляе ўбачыць сітуацыю адначасова для ўсёй сеткі, дазваляючы хутка вызначыць, што адбываецца. Таксама, і валідатарам і праекту выгадна, каб каманда праекта хутка выпраўляла знойдзеныя памылкі, таму апроч збору метрык мае сэнс адразу ж запусціць збор з машын валідатараў логаў і дадзеных аб памылках на машыну, даступную распрацоўнікам блокчейна. Тут нікому не выгадна скажаць інфармацыю, таму гэтыя сэрвісы паднімаюцца камандай праекту і ім можна давяраць. Мае сэнс збіраць сістэмныя метрыкі з валідатараў, і, абавязкова, найважнейшыя метрыкі самага блокчейна – для DAOBet – гэта час фіналізацыі і адставанне апошняга фіналізаванага блока. Дзякуючы гэтаму каманда бачыць узрастанне спажывання памяці на нодах пры запуску бенчмарку, праблемы асобных валідатараў.

Важныя моманты па правядзенні гульні валідатараў

Як аказалася, калі вы жадаеце афіцыйна дазволіць валідатарам атакаваць машыны адзін аднаго (неафіцыйна яны і так могуць гэта рабіць) — трэба асобна юрыдычна гэта сфармуляваць як тэсціраванне бяспекі, бо па заканадаўстве некаторых краін за DDoS або сеткавыя атакі могуць пакараць. Яшчэ важным пытаннем з'яўляецца тое, як узнагароджваць валідатараў. Натуральнымі прызамі з'яўляюцца токены праекта, якія будуць перанесены ў mainnet, але масіраваная раздача токенаў любому, хто змог запусціць наду - таксама не лепшы варыянт. Хутчэй за ўсё вам давядзецца балансаваць паміж двума крайнімі варыянтамі:

Раздаць увесь прызавы фонд у адпаведнасці з заробленымі VP
гэта вельмі дэмакратычна і дазваляе зарабіць усім, хто ўклаў час і рэсурсы ў гульню валідатараў.
але прыцягвае да гульні выпадковых людзей без падрыхтаванай інфраструктуры

Раздаць прызавы фонд top-N валідатарам па выніках гульні
пераможцамі хутчэй за ўсё апынуцца валідатары, якія найбольш стабільна пратрымаліся на працягу гульні, вельмі строга настроеныя на перамогу.
частка валідатараў не захоча ўдзельнічаць, нізка ацэньваючы свае шанцы перамагчы, асабліва калі ў складзе ўдзельнікаў ёсць масцітыя валідатары.

Якому варыянту аддаць перавагу - справа ваша

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

Заключэнне

У зняволенні я пастараўся сабраць з вышэйапісанага спіс таго, што трэба прыдумаць, зрабіць і запусціць для эфектыўнага правядзення гульні валідатараў.

Што трэба зрабіць для запуску сапраўднай гульні валідатараў:
распрацаваць свой блокчэйн 🙂

  • зрабіць і падняць web-інтэрфейс і падаць CLI для галасавання за валідатараў
  • зрабіць так, каб метрыкі з запушчанай ноды валідатара маглі адпраўляцца ў цэнтралізаваны сэрвіс (напрыклад Prometheus)
  • падняць сервер збору метрык (Prometheus + Grafana) для гульні валідатараў
  • прыдумаць, як будуць падлічвацца Validator Points (VP)
  • распрацаваць публічны скрыпт, які падлічвае VP валідатара на аснове дадзеных з блокчейна
  • распрацаваць web інтэрфейс для адлюстравання top-а валідатараў, і станы гульні валідатараў (колькі часу засталося да канца, у каго колькі VP і да т.п.)
  • распрацаваць і аўтаматызаваць запуск адвольнай колькасці ўласных нод, спраектаваць працэс падключэння валідатараў да гульні (калі і як адключаць свае ноды, падаваць і прыбіраць за іх галасы)
  • разлічыць колькі трэба выдаваць токенаў і распрацаваць кантракт-faucet
  • зрабіць скрыпт-бенчмарк (трансферы токенаў, масіўнае выкарыстанне storage, масіўнае выкарыстанне сеткі)
  • сабраць усіх удзельнікаў у адным чаце для хуткай камунікацыі
  • запусціць блокчейн крыху раней пачатку гульні
  • дачакацца стартавага блока, пачаць гульню
  • пратэставаць сетку некалькімі тыпамі транзакцый
  • накаціць хардфорк
  • змяніць спіс валідатараў
  • паўтараць п.13,14,15 у розным парадку, падтрымліваючы стабільнасць сеткі
  • дачакацца фінальнага блока, скончыць гульню, падлічыць VP

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

Крыніца: habr.com

Дадаць каментар