Валидатор ойыны дегеніміз не немесе «дәлелді блокчейнді қалай іске қосу керек»

Сонымен, сіздің командаңыз блокчейннің альфа нұсқасын аяқтады және testnet, содан кейін негізгі желіні іске қосу уақыты келді. Сізде тәуелсіз қатысушылары, жақсы экономикалық моделі, қауіпсіздігі бар нақты блокчейн бар, сіз басқаруды жобаладыңыз және енді мұның бәрін іс жүзінде сынап көру уақыты келді. Идеалды крипто-анархиялық әлемде сіз желіге генезистік блокты қоясыз, түйіннің соңғы коды және валидаторлардың өздері барлығын іске қосады, барлық көмекші қызметтерді көтереді және бәрі өздігінен жүреді. Бірақ бұл ойдан шығарылған әлемде, бірақ нақты әлемде команда валидаторларға тұрақты желіні іске қосуға көмектесу үшін көптеген көмекші бағдарламалық жасақтама мен әртүрлі манипуляцияларды дайындауы керек. Бұл мақала осы туралы.

Валидаторлар жүйелік токен иелерінің дауыстарымен анықталатын «proof-of-stake» типті консенсустарға негізделген желілерді іске қосу өте ерекше оқиға, өйткені тіпті ондаған және жүздеген серверлері бар дәстүрлі, орталықтан басқарылатын жүйелерді іске қосу оңай емес. тапсырманың өзі және блокчейнді адал, бірақ тәуелсіз қатысушылардың күшімен бастау керек. Ал, егер корпорацияда іске қосылған кезде әкімшілер барлық машиналарға, журналдарға, жалпы бақылауға толық қол жеткізе алса, валидаторлар ешкімге өз серверлеріне кіруге рұқсат бермейді және, ең алдымен, өз инфрақұрылымын дербес құруды жөн көреді, өйткені ол қол жеткізуді басқарады. валидатордың негізгі активтеріне – сайлаушылар үлестерін қосады. Дәл осы мінез-құлық таратылған қауіпсіз желілерді құруға мүмкіндік береді - пайдаланылатын бұлттық провайдерлердің тәуелсіздігі, виртуалды және «бареметалдық» серверлер, әртүрлі операциялық жүйелер, мұның бәрі осындай желіге шабуылдарды өте тиімсіз жасауға мүмкіндік береді - тым әртүрлі. бағдарламалық қамтамасыз ету пайдаланылады. Мысалы, Ethereum Go және Rust-та екі негізгі түйінді іске асыруды пайдаланады және бір іске асыру үшін тиімді шабуыл екіншісі үшін жұмыс істемейді.

Сондықтан блокчейндерді іске қосу және пайдаланудың барлық процестері кез келген валидатор немесе тіпті валидаторлардың шағын тобы кез келген уақытта өз компьютерлерін терезеден лақтырып жібере алатындай етіп ұйымдастырылуы керек, ал ештеңе бұзылмауы керек, ал қалған валидаторлар операциялық желіні тиімді қолдауды және жаңа валидаторларды қосуды жалғастыру. Бір валидатор Еуропада, екіншісі Оңтүстік Америкада және үшіншісі Азияда болса, желіні іске қосқан кезде бірнеше ондаған тәуелсіз топтардың үйлесімді жұмысына қол жеткізу және нәтижесінде оларды қызықтыру өте қиын.

Валидаторлар

Гипотетикалық заманауи блокчейннің іске қосылуын елестетіп көрейік (сипатталғандардың көпшілігі блокчейндердің кез келген заманауи тобына негізделген блокчейндер үшін қолайлы: Ethereum, EOS, Polkadot, Cosmos және басқалар, олар дәлелді консенсусты қамтамасыз етеді. Басты кейіпкерлер. мұндай блокчейндер жаңа блоктарды растайтын және шығаратын және консенсусқа қатысқандар үшін желі беретін сыйақыларды алатын өздерінің тәуелсіз серверлерін орнатумен айналысатын валидатор топтары. Жаңа желілерді іске қосу үшін бірнеше ондаған валидаторлар қажет (қазір олардың көпшілігі мүмкін). секундтарда азды-көпті тиімді консенсусқа жетеді), сондықтан жоба тіркеуді жариялайды, онда валидаторлар өздері туралы ашық ақпаратты пайдаланушылармен бөліседі, оларды іске қосылған желіге жоғары сапалы қызмет көрсететініне сендіреді.

Валидация - бұл валидатордың әлеуетті кірісін өте дәл бағалауға, жобалар арасында қуатты жылдам беруге мүмкіндік беретін бизнес және егер ол таңдаған желі сәтті болса, валидатор DAO-ның толыққанды қатысушысы және жауапты тұлға ретінде жобаны әзірлеңіз немесе толығымен ашық, адал жолмен тапқан ақшаға тамаша техникалық қызмет көрсетіңіз. Валидаторларға сыйақыны есептеу кезінде жобалар валидаторлардың шығындарын есепке алуға тырысады және блоктар үшін сыйақыны бұл бизнес тиімді болатындай етіп жасауға тырысады, бірақ сонымен бірге валидаторларға оларды ақшамен толтырып, экономиканы құлатуға мүмкіндік бермейді. басқа желі қолданушыларын одан айыру.

Валидаторлар бизнесі қызметтердің қателеріне жоғары төзімділігін қамтамасыз етуді талап етеді, бұл әзірлеушілер мен әзірлеушілер үшін жоғары деңгейдегі оқытуды және қымбат есептеу ресурстарын білдіреді. Жұмысты дәлелдейтін желілерде хэштерді өндіруді қажет етпесе де, блокчейн түйіні - бұл үлкен жадты алатын, көп есептеулерді тұтынатын, тексеретін, дискіге жазатын және желіге деректердің үлкен көлемін жіберетін үлкен қызмет. . Блокта бірнеше мың шағын транзакциялары бар блокчейнге арналған транзакциялар журналдарын және блок тізбегін сақтау үшін қазір 50 Гб немесе одан көп сақтау қажет, ал блоктар үшін ол SSD болуы керек. Смарт келісім-шарттарға қолдау көрсететін блокчейндердің мемлекеттік деректер базасы қазірдің өзінде 64 Гб жедел жадыдан асып кетуі мүмкін. Қажетті сипаттамалары бар серверлер өте қымбат; Ethereum немесе EOS түйіні айына 100-ден 200 долларға дейін болуы мүмкін. Бұған әзірлеушілер мен әзірлеушілердің тәулік бойы жұмысы үшін өскен жалақыны қосыңыз, олар іске қосу кезеңінде тіпті түнде де мәселелерді шешеді, өйткені кейбір валидаторларды басқа жарты шарда оңай орналастыруға болады. Дегенмен, дұрыс сәттерде валидатор түйініне ие болу елеулі табыс әкелуі мүмкін (EOS жағдайында, күніне $ 10 000 дейін).

Валидация - бұл кәсіпкерлер мен компаниялар үшін жаңа әлеуетті АТ рөлдерінің бірі ғана; бағдарламашылар адалдықты марапаттайтын және алаяқтық пен ұрлықты жазалайтын барған сайын күрделі алгоритмдерді ойлап тапқан сайын, маңызды деректерді жариялау функцияларын (oracles), қадағалауды жүзеге асыратын қызметтер пайда болады. (алдау дәлелдерін жариялау арқылы депозитті кесу және алаяқтарды жазалау), дауларды шешу қызметтері, сақтандыру және опциялар, тіпті қоқыс жинау ақылды келісімшарт жүйелеріндегі ықтимал үлкен нарық болып табылады, онда деректерді сақтау үшін ақы төлеу қажет.

Блокчейнді іске қосу мәселелері

Кез келген елдің компьютерлеріне желіге еркін қатысуға мүмкіндік беретін блокчейннің ашықтығы және GitHub нұсқаулығына сәйкес кез келген скрипт киддиді желіге қосудың қарапайымдылығы әрқашан артықшылық бола бермейді. Жаңа таңбалауышқа ұмтылу көбінесе валидаторларды «бастапқыда жаңа монета өндіруге» мәжбүр етеді, бұл бағам көтеріледі деген үмітпен және табыстарынан тез бас тартуға мүмкіндік береді. Сондай-ақ, бұл сіздің валидаторыңыз кез келген адам, тіпті анонимді адам болуы мүмкін дегенді білдіреді, сіз оған басқа валидаторлар сияқты дауыс бере аласыз (бірақ анонимді адамға мүдделі тараптардың дауыстарын өзі үшін жинау қиын болады, сондықтан біз' Анонимді криптовалюталар туралы қорқынышты ертегілерді саясаткерлерге қалдырамын). Дегенмен

Жоба командасының міндеті - болашақта түйіндердің тұрақты жұмысын қамтамасыз ете алатын, қауіпсіздікті түсінетін, мәселелерді тез шешуді білетін, басқа валидаторлармен ынтымақтаса және бірлесіп әрекет ете алатын адамдарды өз желісіне қалай да енгізу - бұл сапасы Бұл қасиеттерге толығымен байланысты, бұл желі қатысушылары өз уақыттары мен ресурстарын жұмсайтын белгі. Адекватты құрылтайшылар тәуекелдерді бағалай отырып, мұндай көлемдегі бағдарламалық жасақтаманы іске қосқан кезде, түйіндердің кодында және конфигурациясында міндетті түрде қателерге тап болатынын және желінің тұрақтылығы әзірлеушілер мен валидаторлардың бірігіп шешетініне байланысты екенін жақсы түсінеді. осындай проблемалар.

Команда негізгі желіде кез келген валидаторларға дауыс беруге дайын, тек қайсысы жақсы, қайсысы жақсы? Ең үлкен портфолио? Қазір ешкімде жоқ дерлік. Топтың Linkedin профильдеріне негізделген бе? Тәжірибелі әзірлеушілер немесе қауіпсіздік мамандары сізге ешқандай Linkedin профильдерін бермейді. Чаттағы, жазбалардағы және дайындық кезеңінде басқаларға көмектесудегі мәлімдемелерге сәйкес? Жақсы, бірақ субъективті және дәл емес.

Мұндай жағдайларда бір нәрсе қалады - әркімнің мәселелерін жақсы шешетін нәрсе - ең жақсы валидаторларды таңдауға болатын ойын, бірақ ең бастысы блокчейннің күшін сынау және толық ауқымды жауынгерлік сынақ жүргізу. белсенді пайдалану жағдайында блокчейн, консенсустағы өзгерістер, қателердің пайда болуы және түзету . Бұл процедураны алғаш рет Cosmos жобасының жігіттері ойын ретінде ұсынды және бұл идея сенімді және ақауларға төзімді желіні іске қосу үшін желіні дайындаудың тамаша тәсілі екені сөзсіз.

Валидаторлар ойыны

Мен валидаторлар ойынын сипаттайтын боламын, өйткені біз оны Haya деп аталатын және басқару механизмі ұқсас EOS шанышқысына негізделген DAO.Casino (DAOBet) блокчейніне арналған - валидаторлар кез келген есептік жазбадан дауыс беру арқылы таңдалады. валидаторға дауыс беруге пайдаланылған теңгерім тоқтатылады. Балансында негізгі BET белгісі бар кез келген шот балансының кез келген бөлігімен таңдалған валидаторға дауыс бере алады. Дауыстар қорытындыланады және нәтижелер бойынша үздік валидаторлар құрылады. Әртүрлі блокчейндерде бұл процесс басқаша ұйымдастырылады және әдетте дәл осы бөлікте жаңа блокчейн ата-аналық блоктан ерекшеленеді және мен айта кету керек, біздің жағдайда EOS «OS» атауын толығымен ақтайды, біз шынымен EOS қолданамыз. DAOBet тапсырмалары үшін блокчейннің өзгертілген нұсқасын орналастыру үшін базалық операциялық жүйе ретінде.

Мен жеке мәселелерді және оларды ойын барысында қалай шешуге болатынын сипаттаймын. Серверіңізге ашық шабуыл жасалуы мүмкін желіні елестетіп көрейік, онда валидатор орнын сақтау үшін желімен үздіксіз әрекеттесу керек, валидаторды алға жылжыту және оның блоктар жасайтынына және олардың басқа валидаторларға жеткізілетініне көз жеткізу керек. уақыт, әйтпесе валидатор тізімнен шығарылады.

Үздік жеңімпаздарды қалай таңдауға болады?

Ойынға қойылатын негізгі техникалық талап – оның нәтижелерін көпшілік алдында тексеруге болатындығы. Бұл ойынның нәтижелері: ТОП жеңімпаздары, кез келген қатысушы тексере алатын деректер негізінде қатаң түрде құрылуы керек дегенді білдіреді. Орталықтандырылған жүйеде біз әрбір валидатордың «жұмыс уақытын» өлшей аламыз және ең көп желіде болған немесе максималды желі трафигінен өткендерді марапаттай аламыз. Сіз процессор мен жад жүктемесі туралы деректерді жинап, жақсы жұмыс істегендерді марапаттай аласыз. Бірақ кез келген осындай көрсеткіштер жинағы жинақтау орталығының болуын білдіреді және түйіндер барлығы тәуелсіз және олар қалағандай әрекет етіп, кез келген деректерді жібере алады.

Сондықтан, табиғи шешім - жеңімпаздарды блокчейн деректері негізінде анықтау керек, өйткені оның көмегімен қандай валидатор қай блокты шығарғанын және оған қандай транзакциялар енгізілгенін көруге болады. Біз бұл нөмірді Validator Points (VP) деп атадық және оларды алу ойындағы валидаторлардың басты мақсаты болып табылады. Біздің жағдайда валидатордың «пайдалылығының» ең қарапайым, көпшілікке оңай тексерілетін және тиімді көрсеткіші VP = берілген уақыт кезеңінде валидатор жасаған блоктар саны.

Бұл қарапайым таңдау EOS жүйесіндегі басқарудың көптеген туындайтын проблемаларды қамтамасыз ететіндігімен түсіндіріледі, өйткені EOS күрделі желіні басқаруда үлкен тәжірибесі бар нақты жұмыс істейтін блокчейндердің үш буынының мұрагері және желі, процессор, диск тек бір мәселеге әкеледі - ол аз блоктарға қол қояды, жұмыс үшін аз ақы алады, бұл бізді қайтадан қол қойылған блоктар санына әкеледі - EOS үшін бұл тамаша және қарапайым нұсқа.

Басқа блокчейндер үшін Валидатор ұпайларын есептеу әдісі әр түрлі болуы мүмкін, мысалы, pBFT негізіндегі консенсустар үшін (Tendermint/Cosmos, Parity Substrate ұсынған Aura консенсусы), мұнда әрбір блок бірнеше валидаторлар қол қоюы керек, жеке валидаторды санау мағынасы бар. блоктардан гөрі қолтаңбалар Басқа валидаторлардың ресурстарын ысырап ететін толық емес консенсус раундтарын ескеру орынды болуы мүмкін, жалпы бұл консенсус түріне байланысты.

Нақты жұмыс жағдайларын қалай модельдеу керек

Құрылтайшылардың міндеті – валидаторларды орталықтандырылған бақылаусыз шындыққа жақын жағдайларда сынау. Бұл мәселені валидаторларға және басқаларға негізгі таңбалауыштың тең мөлшерін тарататын кран келісім-шартын пайдаланып шешуге болады. Балансыңызда белгілерді алу үшін транзакция жасап, желі оны блокқа қосуды қамтамасыз етуіңіз керек. Осылайша, валидатор жеңіске жету үшін балансын үнемі жаңа таңбалауыштармен толықтырып, өзін шыңға көтере отырып, өзі үшін дауыс беруі керек. Бұл әрекет желіде тұрақты жүктемені жасайды және параметрлерді сұраулар ағыны желіні толық тексеру үшін жеткілікті ауыр болатындай етіп таңдауға болады. Сондықтан, желіні іске қосудың маңызды құралы ретінде кран келісімшартын алдын ала жоспарлаңыз және оның параметрлерін алдын ала таңдауды бастаңыз.

Краннан таңбалауыштарды сұрау және дауыстарды тексеру әлі де оқтұмсықтың жұмысын толықтай еліктемейді, әсіресе өте жүктелген режимдерде. Сондықтан, блокчейн командасы әлі де желіні жүктеу үшін қандай да бір жолмен қосымша көрсеткіштер жазуы керек. Бұл жерде бөлек ішкі жүйені тестілеуге мүмкіндік беретін арнайы жасалған смарт келісімшарттар ерекше рөл атқарады. Сақтауды сынау үшін келісім-шарт блокчейндегі кездейсоқ деректерді сақтайды, ал желілік ресурстарды сынау үшін сынақ келісімшарты кіріс деректерінің үлкен көлемін талап етеді, осылайша транзакциялар көлемін арттырады - мұндай транзакциялар ағынын уақыттың ерікті нүктелерінде іске қосу арқылы, команда бір уақытта кодтың тұрақтылығын және валидаторлардың күшін тексереді.

Бөлек мәселе - түйіндердің кодын жаңарту және қатты шанышқыларды өткізу. Қате, осалдық немесе зиянды валидаторлардың сөз байласуы жағдайында валидаторларда валидаторлар ойынында әзірленген әрекет жоспары болуы талап етіледі. Мұнда сіз қатты шанышқыны жылдам қолдану үшін VP жинау схемаларын таба аласыз, мысалы, түйін кодының жаңа нұсқасын әлі шығармаған барлық валидаторларға айыппұл салу арқылы, бірақ оны жүзеге асыру қиын және есептеуді қиындатады. Берілген блоктағы блокчейнді жасанды түрде «бұзу» арқылы қатты шанышқыны төтенше пайдалану жағдайын модельдеуге болады. Блок өндірісі тоқтайды, соңында бірінші болып секіріп, блоктарға қол қоя бастағандар жеңімпаз болады, сондықтан қол қойылған блоктар санына негізделген VP мұнда жақсы сәйкес келеді.

Қатысушыларды желі күйі туралы хабардар ету және қателерді түзету

Валидаторлар арасындағы сенімсіздікке қарамастан, желінің жай-күйі туралы өзекті ақпаратты уақтылы алу шешімді жылдам қабылдау үшін барлығына пайдалы, сондықтан жоба командасы валидатор серверлерінен көптеген көрсеткіштерді жинау және визуализациялау қызметін көтеруде, бұл не болып жатқанын жылдам анықтауға мүмкіндік беретін бүкіл желі үшін жағдайды бір уақытта көруге мүмкіндік береді. Сондай-ақ, жоба тобының табылған қателерді тез түзететіні валидаторлар үшін де, жоба үшін де тиімді, сондықтан метриканы жинаумен қатар, блокчейнге қолжетімді машинада валидаторлардың машиналарынан журналдар мен қате деректерін жинауды дереу бастау мағынасы бар. әзірлеушілер. Мұнда ақпаратты бұрмалау ешкімге тиімді емес, сондықтан бұл қызметтерді жоба командасы әзірлейді және оларға сенуге болады. Валидаторлардан жүйелік көрсеткіштерді жинау мағынасы бар және, әрине, блокчейннің ең маңызды көрсеткіштері - DAOBet үшін - аяқтау уақыты және соңғы аяқталған блоктың артта қалуы. Осының арқасында топ эталонды іске қосу кезінде түйіндерде жадты тұтынудың артуын, жеке валидаторлармен проблемаларды көреді.

Валидатор ойынын өткізудің маңызды ұпайлары

Анықталғандай, егер сіз валидаторларға бір-бірінің машиналарына шабуыл жасауға ресми түрде рұқсат бергіңіз келсе (бейресми түрде олар мұны бәрібір жасай алады), сіз мұны қауіпсіздік сынағы ретінде заңды түрде бөлек тұжырымдауыңыз керек, өйткені кейбір елдердің заңдары бойынша DDoS немесе желілік шабуылдар болуы мүмкін. жазаланды. Тағы бір маңызды мәселе - валидаторларды қалай марапаттау. Табиғи жүлделер - бұл негізгі желіге берілетін жоба токендері, бірақ түйінді іске қоса алған кез келген адамға токендерді жаппай тарату да ең жақсы нұсқа емес. Сізге екі экстремалды нұсқа арасында теңгерім қажет болуы мүмкін:

Бүкіл жүлде қорын алған VP бойынша таратыңыз
бұл өте демократиялық және валидатор ойынына уақыт пен ресурстарды салған әрбір адамға ақша табуға мүмкіндік береді
бірақ дайын инфрақұрылымсыз кездейсоқ адамдарды ойынға тартады

Ойын нәтижелері бойынша валидаторларға ең жоғары N жүлде қорын таратыңыз
Жеңімпаздар ойын барысында ең тұрақты болған және жеңіске жетуге бекінген валидаторлар болуы мүмкін.
кейбір валидаторлар қатысқысы келмейді, олардың жеңіске жету мүмкіндігі төмен бағаланады, әсіресе қатысушылардың арасында құрметті валидаторлар болса

Қай опцияны таңдау сізге байланысты

Тағы бір тармақ бар - сіздің шақыруыңыз бойынша ондаған валидаторлар ойынға қатысуға асығатыны мүлдем факт емес, ал сынап көруді шешкендердің бәрі де түйінді орнатып, іске қоса бермейді - әдетте, Бұл кезеңде жобалардың құжаттамалары өте сирек, қателер кездеседі және уақыт қысымымен жұмыс істейтін әзірлеушілер сұрақтарға тез жауап бермейді. Сондықтан, ойынды іске қоспас бұрын, валидаторлардың қажетті санына қол жеткізілмеген жағдайда әрекеттерді қамтамасыз ету қажет. Бұл жағдайда ойынның басында жетіспейтін валидаторларды жоба командасы іске қосады, консенсусқа қатысады, бірақ жеңімпаз бола алмайды.

қорытынды

Қорытындылай келе, мен жоғарыда айтылғандардан валидатор ойынын тиімді өткізу үшін ойластыру, жасау және іске қосу керек нәрселердің тізімін жасауға тырыстым.

Нағыз валидатор ойынын іске қосу үшін не істеу керек:
өзіңіздің блокчейніңізді жасаңыз :)

  • веб-интерфейс жасау және көтеру және валидаторларға дауыс беру үшін CLI қамтамасыз ету
  • іске қосылған валидатор түйініндегі көрсеткіштер орталықтандырылған қызметке жіберілетініне көз жеткізіңіз (мысалы, Prometheus)
  • валидатор ойыны үшін метрика жинағы серверін (Prometheus + Grafana) көтеріңіз
  • Validator Points (VP) қалай есептелетінін анықтаңыз
  • блокчейн деректері негізінде валидатор VP есептейтін жалпыға қолжетімді сценарийді әзірлеу
  • үздік валидаторларды және валидаторлардың ойын күйін көрсету үшін веб-интерфейс әзірлеу (соңына дейін қанша уақыт қалды, кімде қанша VP бар және т.б.)
  • өзіңіздің түйіндеріңіздің ерікті санын әзірлеу және іске қосуды автоматтандыру, валидаторларды ойынға қосу процесін жобалау (түйіндеріңізді қашан және қалай ажырату, оларға дауыстарды жіберу және жою)
  • қанша токен шығару керектігін есептеп, кран келісім-шартын жасаңыз
  • эталондық сценарийді жасау (токендерді тасымалдау, жадты жаппай пайдалану, желіні жаппай пайдалану)
  • жылдам байланысу үшін барлық қатысушыларды бір чатта жинаңыз
  • блокчейнді ойынның басталуынан сәл ертерек іске қосыңыз
  • бастапқы блокты күтіңіз, ойынды бастаңыз
  • транзакциялардың бірнеше түрімен желіні сынау
  • қатты шанышқыны жайыңыз
  • валидаторлар тізімін өзгерту
  • желі тұрақтылығын сақтай отырып, 13,14,15, XNUMX, XNUMX-қадамдарды әртүрлі ретпен қайталаңыз
  • соңғы блокты күтіңіз, ойынды аяқтаңыз, VP санаңыз

Айта кету керек, валидаторлар ойыны - бұл жаңа оқиға және ол бірнеше рет өткізілді, сондықтан бұл мәтінді дайын нұсқаулық ретінде қабылдауға болмайды. Заманауи IT бизнесте аналогтар жоқ – елестетіп көріңізші, банктер төлем жүйесін іске қоспас бұрын, клиенттік транзакцияларды жүргізуде кім жақсы болатынын білу үшін бір-бірімен бәсекелеседі. Дәстүрлі тәсілдер үлкен орталықтандырылмаған желілерді құруға көмектесуі екіталай, сондықтан жаңа бизнес үлгілерін меңгеріңіз, ойындарыңызды іске қосыңыз, лайықтыларын анықтаңыз, оларды марапаттаңыз және таратылған жүйелеріңіздің жылдам және тұрақты жұмыс істеуін қамтамасыз етіңіз.

Ақпарат көзі: www.habr.com

пікір қалдыру