Kas yra tikrinimo žaidimas arba „kaip paleisti statymo blokų grandinę“

Taigi, jūsų komanda baigė alfa versijos „blockchain“ versiją ir laikas paleisti „testnet“, o tada „mainnet“. Turite tikrą blokų grandinę su nepriklausomais dalyviais, gerą ekonominį modelį, saugumą, sukūrėte valdymą ir dabar laikas visa tai išbandyti. Idealiame kripto-anarchiniame pasaulyje įdedi genezės bloką į tinklą, galutinį mazgo kodą ir patys validatoriai viską paleidžia, pakelia visas pagalbines paslaugas ir viskas vyksta savaime. Tačiau tai yra išgalvotame pasaulyje, o realiame pasaulyje komanda turi paruošti nemažai pagalbinės programinės įrangos ir įvairių manipuliacijų, kurios padėtų tikrintojams paleisti stabilų tinklą. Apie tai šis straipsnis.

Tinklų paleidimas remiantis „įrodinėjimo įstaigomis“ tipo konsensusais, kai tikrintojai nustatomi sistemos žetonų turėtojų balsais, yra gana specifinis įvykis, nes net paleisti tradicines, centralizuotai valdomas sistemas su dešimtimis ir šimtais serverių nėra lengva. užduotis pati savaime, o blokų grandinę reikia pradėti su lojalių, bet nepriklausomų dalyvių pastangomis. Ir jei korporacijoje, paleidus, administratoriai turi visišką prieigą prie visų mašinų, žurnalų, bendro stebėjimo, tada tikrintojai neleis niekam pasiekti savo serverių ir greičiausiai norės kurti savo infrastruktūrą savarankiškai, nes ji kontroliuoja prieigą. į pagrindinį tikrintojo turtą – akcijų rinkėjus. Būtent toks elgesys leidžia kurti paskirstytus saugius tinklus – naudojamų debesų paslaugų teikėjų nepriklausomybė, virtualūs ir „nuogi“ serveriai, skirtingos operacinės sistemos, visa tai leidžia atakas prieš tokį tinklą padaryti itin neveiksmingomis – per daug skirtingomis. naudojama programinė įranga. Pavyzdžiui, „Ethereum“ naudoja du pagrindinius mazgų diegimus „Go“ ir „Rust“, o ataka, kuri yra veiksminga vienam diegimui, neveikia kitam.

Todėl visi blokų grandinių paleidimo ir veikimo procesai turi būti organizuojami taip, kad bet kuris tikrintojas ar net nedidelė tikrintojų grupė bet kuriuo metu galėtų išmesti savo kompiuterius pro langą ir išeiti, o likę tikrintojai neturėtų sulūžti. toliau veiksmingai remti veiklos tinklą ir prijungti naujus tikrintojus. Paleidžiant tinklą, kai vienas validatorius yra Europoje, antras – Pietų Amerikoje, trečias – Azijoje, gana sunku pasiekti kelių dešimčių nepriklausomų grupių koordinuotą darbą ir dėl to jas sudominti.

Validatoriai

Įsivaizduokime hipotetinės šiuolaikinės blokų grandinės paleidimą (dauguma to, kas aprašyta, tinka blokų grandinėms, pagrįstoms bet kokia modernia blokų grandinių šeima: Ethereum, EOS, Polkadot, Cosmos ir kt., kurios pateikia konsensusą dėl statymo. Pagrindiniai veikėjai tokios blokų grandinės yra tikrintojų komandos, užsiimančios savo nepriklausomų serverių, kurie patvirtina ir gamina naujus blokus, diegimu ir gauna tinklo teikiamą atlygį tiems, kurie dalyvauja sutarime. Norint paleisti naujus tinklus, reikia kelių dešimčių tikrintuvų (tiek daug dabar gali daugiau ar mažiau efektyviai pasiekti konsensusą per kelias sekundes), todėl projekte skelbiama registracija, kurios metu tikrintojai dalijasi vieša informacija apie save su vartotojais, įtikindami juos, kad jie ketina teikti kokybiškas paslaugas paleistam tinklui.

Validavimas – tai verslas, leidžiantis itin tiksliai įvertinti potencialias validatoriaus pajamas, greitai perkelti galias tarp projektų, o jei jo pasirinktas tinklas bus sėkmingas, validatorius, kaip visavertis DAO dalyvis ir atsakingas asmuo sukurti projektą, arba tiesiog suteikti puikų techninį aptarnavimą už visiškai skaidrius, sąžiningai uždirbtus pinigus. Skaičiuodami atlygį tikrintojams, projektuose stengiamasi atsižvelgti į tikrintojų išlaidas ir atlygį už blokus padaryti tokį, kad šis verslas būtų pelningas, tačiau tuo pačiu neleidžia tikrintojams nugriauti ekonomikos, užtvindant juos pinigais ir atimant iš kitų tinklo vartotojų.

Validatorių verslas reikalauja užtikrinti aukštą paslaugų atsparumą gedimams, o tai reiškia aukštą devops ir kūrėjų mokymo lygį bei brangius skaičiavimo išteklius. Net ir nereikia iškasti maišos darbo patikrinimo tinkluose, blokų grandinės mazgas yra didelė paslauga, kuri užima daug atminties, sunaudoja daug skaičiavimų, tikrina, įrašo į diską ir siunčia didelius duomenų kiekius į tinklą. . Norint saugoti blokų grandinės operacijų žurnalus ir blokų grandines su keliais tūkstančiais mažų operacijų bloke, dabar reikalinga 50 Gb ar didesnė saugykla, o blokams tai turi būti SSD. Valstybinė blokų grandinių duomenų bazė, palaikanti išmaniąsias sutartis, jau gali viršyti 64 Gb RAM. Reikalingų charakteristikų serveriai yra gana brangūs, Ethereum arba EOS mazgas gali kainuoti nuo 100 iki 200 USD per mėnesį. Prie to pridėkite padidintus atlyginimus už visą parą dirbantiems kūrėjams ir devopams, kurie paleidimo laikotarpiu sprendžia problemas net naktį, nes kai kurie tikrintuvai gali lengvai būti kitame pusrutulyje. Tačiau tinkamu momentu patvirtinimo mazgo turėjimas gali atnešti rimtų pajamų (EOS atveju iki 10 000 USD per dieną).

Patvirtinimas yra tik vienas iš naujų potencialių IT vaidmenų verslininkams ir įmonėms, programuotojams sugalvojus vis sudėtingesnius algoritmus, kurie atlygina už sąžiningumą ir baudžia už sukčiavimą ir vagystę, atsiranda paslaugų, atliekančių svarbių duomenų (orakulų) publikavimo, priežiūros funkcijas. (indėlių karpymas ir sukčių nubaudimas skelbiant apgaulės įrodymą), ginčų sprendimo paslaugos, draudimas ir opcionai, net šiukšlių išvežimas yra potencialiai didelė išmaniųjų sutarčių sistemų rinka, kurioje reikia mokėti už duomenų saugojimą.

Blockchain paleidimo problemos

Blokų grandinės atvirumas, sudarantis galimybę bet kurios šalies kompiuteriams laisvai dalyvauti tinkle ir lengvai prijungti bet kurį scenarijų vaiką prie tinklo pagal GitHub instrukcijas, ne visada yra pranašumas. Naujo žetono siekimas dažnai verčia tikrintojus „pradžioje iškasti naują monetą“, tikintis, kad kursas padidės ir turės galimybę greitai išmesti savo uždarbį. Be to, tai reiškia, kad jūsų vertintoju gali būti bet kas, net ir anonimas, už jį galite balsuoti taip pat, kaip ir už kitus tikrintojus (tačiau anoniminiam asmeniui bus sunku surinkti dalininkų balsus už save, todėl mes“ baisias pasakas apie anonimines kriptovaliutas paliksiu politikams). Nepaisant to

Projekto komandai tenka užduotis – kažkaip patekti į savo tinklą tuos, kurie ateityje sugebėtų užtikrinti stabilų mazgų veikimą, suprastų saugumą, mokėtų greitai išspręsti problemas, bendradarbiautų su kitais tikrintojais ir veiktų kartu – to kokybė. labai daug kas priklauso nuo šių savybių, į kurias tinklo dalyviai ketina investuoti savo laiką ir išteklius. Tinkami steigėjai, vertindami rizikas, puikiai supranta, kad paleidžiant tokio dydžio programinę įrangą tikrai teks susidurti su mazgų kodo ir konfigūracijos klaidomis, o tinklo stabilumas priklauso nuo to, kaip kūrėjai ir tikrintojai kartu išspręs tokių problemų.

Komanda pasiruošusi balsuoti pagrindiniame tinkle už bet kokius tikrintojus, kad žinotų, kurie iš jų yra geri? Didžiausias portfelis? Dabar jos beveik niekas neturi. Remiantis komandos Linkedin profiliais? Patyrę kūrėjai ar saugos specialistai nesuteiks jums jokių Linkedin profilių. Pagal teiginius pokalbiuose, įrašuose ir pagalba kitiems pasiruošimo etape? Geras, bet subjektyvus ir netikslus.

Tokiomis sąlygomis lieka vienas dalykas - kažkas, kas gerai išsprendžia kiekvieno problemas - žaidimas, kuriame bus galima atrinkti geriausius tikrintojus, tačiau svarbiausia yra patikrinti blokų grandinės stiprumą ir atlikti viso masto kovinį testą. „blockchain“ aktyvaus naudojimo sąlygomis, sutarimo pokyčiai, atsiradimas ir klaidų taisymas . Pirmą kartą šią procedūrą kaip žaidimą pristatė Cosmos projekto vaikinai, ir ši idėja neabejotinai yra puikus būdas paruošti tinklą patikimo ir gedimams atsparaus tinklo paleidimui.

Žaidimas „Validators“.

Aprašysiu tikrintuvų žaidimą tokį, kokį sukūrėme EOS šakute paremtai DAO.Casino (DAOBet) blokų grandinei, kuri vadinasi Haya ir turi panašų valdymo mechanizmą – tikrintojai pasirenkami balsuojant iš bet kurios paskyros, kurioje likutis, naudojamas balsuojant už tikrintoją, yra įšaldytas. Bet kuri sąskaita, kurios balanse yra pagrindinis BET prieigos raktas, gali balsuoti už pasirinktą tikrintuvą su bet kuria savo likučio dalimi. Balsai sumuojami ir remiantis rezultatais nustatomi geriausi tikrintojai. Skirtingose ​​blokų grandinėse šis procesas organizuojamas skirtingai, ir dažniausiai būtent šioje dalyje naujoji blokų grandinė skiriasi nuo pirminės, ir turiu pasakyti, kad mūsų atveju EOS visiškai pateisina „OS“ savo pavadinime, mes tikrai naudojame EOS. kaip pagrindinė operacinė sistema modifikuotai blokų grandinės versijai diegti DAOBet užduotims.

Aprašysiu individualias problemas ir kaip jas galima išspręsti žaidimo metu. Įsivaizduokime tinklą, kuriame gali būti atvirai atakuojamas jūsų serveris, kuriame, norint išlaikyti tikrintojo poziciją, reikia nuolat bendrauti su tinklu, reklamuoti savo tikrintuvą ir užtikrinti, kad jis sudarytų blokus ir jie būtų pristatyti kitiems tikrintojams. laiko, kitaip tikrintuvas bus išmestas iš sąrašo.

Kaip išsirinkti geriausius nugalėtojus?

Pagrindinis žaidimo techninis reikalavimas – kad jo rezultatai būtų viešai patikrinami. Tai reiškia, kad žaidimo rezultatai: TOP laimėtojai, turi būti formuojami griežtai remiantis duomenimis, kuriuos gali patikrinti bet kuris dalyvis. Centralizuotoje sistemoje galėtume išmatuoti kiekvieno tikrintojo „veikimo laiką“ ir apdovanoti tuos, kurie buvo prisijungę daugiausiai arba praėjo didžiausią tinklo srautą. Galite rinkti duomenis apie procesoriaus ir atminties apkrovą ir apdovanoti gerai dirbusius. Tačiau bet koks toks metrikų rinkimas reiškia surinkimo centro egzistavimą, o visi mazgai yra nepriklausomi ir gali elgtis kaip nori ir siųsti bet kokius duomenis.

Todėl natūralus sprendimas yra tas, kad laimėtojai turėtų būti nustatomi remiantis blokų grandinės duomenimis, nes naudojant jį galima pamatyti, kuris tikrintuvas sukūrė kurį bloką ir kokios operacijos buvo įtrauktos į jį. Šį skaičių vadinome patvirtinimo taškais (VP), o jų uždirbimas yra pagrindinis tikrintojų tikslas žaidime. Mūsų atveju paprasčiausias, lengvai viešai patikrinamas ir efektyvus tikrintojo „naudingumo“ rodiklis yra VP = blokų, kuriuos tikrintuvas pagamino per tam tikrą laikotarpį, skaičius.

Šis paprastas pasirinkimas atsirado dėl to, kad EOS valdymas jau numato daugybę kylančių problemų, nes EOS yra trijų kartų faktiškai veikiančių blokų grandinių paveldėtojas, turintis didelę sudėtingo tinklo valdymo patirtį ir beveik bet kokias tinklo, procesoriaus tikrinimo problemas, diskas sukelia tik vieną problemą - jis pasirašo mažiau blokų, gauna mažiau užmokesčio už darbą, o tai vėl veda mus prie pasirašytų blokų skaičiaus - EOS tai puikus ir paprastas pasirinkimas.

Kitose blokų grandinėse tikrinimo taškų apskaičiavimo būdas gali skirtis, pavyzdžiui, pBFT pagrįstų konsensusų atveju (Tendermint/Cosmos, Aura consensus from Parity Substrate), kai kiekvieną bloką turi pasirašyti keli tikrintuvai, tikslinga skaičiuoti atskirą tikrintuvą. parašai, o ne blokai. Gali būti prasminga atsižvelgti į neužbaigtus konsensuso raundus, kurie eikvoja kitų tikrintojų išteklius. Apskritai tai labai priklauso nuo sutarimo tipo.

Kaip imituoti realias darbo sąlygas

Steigėjų užduotis – išbandyti tikrintojus tikrovei artimomis sąlygomis, neturint jokios centralizuotos kontrolės. Šią problemą galima išspręsti naudojant maišytuvo sutartį, kuri vienodai paskirsto pagrindinį žetoną tikrintojams ir visiems kitiems. Norėdami gauti žetonus savo balanse, turite sukurti operaciją ir užtikrinti, kad tinklas jį įtrauktų į bloką. Taigi, norėdamas laimėti, vertintojas turi nuolat papildyti savo balansą naujais žetonais ir balsuoti už save, kildamas į viršų. Ši veikla sukuria nuolatinę tinklo apkrovą, o parametrus galima pasirinkti taip, kad užklausų srautas būtų pakankamai stiprus, kad būtų galima atlikti visą tinklo testą. Todėl iš anksto suplanuokite maišytuvo sutartį kaip svarbią tinklo paleidimo priemonę ir iš anksto pradėkite rinktis jos parametrus.

Žetonų prašymas iš maišytuvo ir balsų patvirtinimas vis tiek nevisiškai imituoja kovinės galvutės veikimą, ypač ypač apkrautais režimais. Todėl „blockchain“ komanda vis tiek turės vienaip ar kitaip parašyti papildomus etalonus, kad apkrautų tinklą. Ypatingą vaidmenį čia atlieka specialiai sukurtos išmaniosios sutartys, leidžiančios išbandyti atskirą posistemį. Norint išbandyti saugyklą, sutartyje saugomi atsitiktiniai duomenys blokų grandinėje, o norint išbandyti tinklo išteklius, bandymo sutartimi reikia daug įvesties duomenų, taip padidinant operacijų apimtį – paleidžiant tokių operacijų srautą savavališkais laiko momentais, komanda vienu metu tikrina kodo stabilumą ir tikrintojų stiprumą.

Atskira problema yra mazgų kodo atnaujinimas ir kietųjų šakių vykdymas. Reikalaujama, kad klaidos, pažeidžiamumo ar kenkėjiškų tikrintojų susitarimo atveju tikrintojai turėtų veiksmų planą, kuris jau buvo parengtas tikrintojų žaidime. Čia galite sugalvoti VP kaupimo schemas, kad greitai pritaikytumėte kietąją šakę, pavyzdžiui, nubausdami visus tikrintojus, kurie dar neišleido naujos mazgo kodo versijos, tačiau tai sunku įgyvendinti ir apsunkina skaičiavimą. Galite imituoti avarinio kietosios šakutės naudojimo situaciją dirbtinai „sulaužydami“ tam tikro bloko blokų grandinę. Blokų gamyba sustoja, o galiausiai laimės tie, kurie pirmieji įšoks ir pradės pasirašyti blokus, todėl čia puikiai tinka VP pagal pasirašytų blokų skaičių.

Kaip informuoti dalyvius apie tinklo būseną ir ištaisyti klaidas

Nepaisant nepasitikėjimo tarp tikrintojų, laiku gauti naujausią informaciją apie tinklo būklę naudinga kiekvienam, kad būtų greičiau priimti sprendimai, todėl projekto komanda kelia daug metrikų surinkimo ir vizualizavimo paslaugą iš validatorių serverių, kuri leidžia vienu metu matyti viso tinklo situaciją ir greitai nustatyti, kas vyksta. Be to, tiek tikrintojams, tiek projektui naudinga, kad projekto komanda greitai ištaiso rastas klaidas, todėl be metrikų rinkimo prasminga nedelsiant pradėti rinkti žurnalus ir klaidų duomenis iš tikrintojų mašinų blokų grandinei pasiekiamoje mašinoje. kūrėjai. Čia niekam nėra naudinga iškraipyti informaciją, todėl šias paslaugas kuria projekto komanda ir jomis galima pasitikėti. Tikslinga rinkti sistemos metrikas iš tikrintuvų, ir, žinoma, patys svarbiausi blokų grandinės rodikliai – DAOBet atveju – yra užbaigimo laikas ir paskutinio užbaigto bloko delsa. Dėl šios priežasties komanda, vykdydama etaloną, pastebėjo, kad mazguose sunaudojama daugiau atminties, kyla problemų dėl atskirų tikrintuvų.

Svarbūs punktai vykdant tikrinimo žaidimą

Pasirodo, jei norite oficialiai leisti tikrintojams atakuoti vieni kitų mašinas (neoficialiai jie vis tiek gali tai padaryti), turite tai atskirai suformuluoti teisiškai kaip saugumo patikrinimą, nes pagal kai kurių šalių įstatymus DDoS ar tinklo atakos gali būti nubaustas. Kitas svarbus klausimas – kaip apdovanoti tikrintojus. Natūralūs prizai yra projekto žetonai, kurie bus perkelti į pagrindinį tinklą, tačiau masinis žetonų platinimas visiems, kurie sugebėjo paleisti mazgą, taip pat nėra geriausias pasirinkimas. Greičiausiai turėsite balansuoti tarp dviejų kraštutinių variantų:

Paskirstykite visą prizinį fondą pagal uždirbtą VP
tai labai demokratiška ir leidžia užsidirbti pinigų visiems, kurie investavo laiko ir išteklių į validatoriaus žaidimą
bet pritraukia atsitiktinius žmones į žaidimą be paruoštos infrastruktūros

Remdamiesi žaidimo rezultatais, paskirstykite geriausio N prizinį fondą tikrintojams
Laimėtojai greičiausiai bus tie, kurie nuosekliausiai ištvėrė žaidimo metu ir yra labai griežtai pasiryžę laimėti
kai kurie tikrintojai nenorės dalyvauti, vertindami savo šansus laimėti mažai, ypač jei tarp dalyvių yra garbingų tikrintojų

Kurį variantą pasirinkti, priklauso nuo jūsų

Yra dar vienas dalykas - visiškai netiesa, kad dešimtys tikrintojų suskubs dalyvauti žaidime jūsų skambučiu, o iš tų, kurie nuspręs pabandyti, ne visi net įdiegs ir paleis mazgą - paprastai, Šiame etape projektai turi gana menką dokumentaciją, pasitaiko klaidų, o kūrėjai, dirbantys laiko spaudimu, į klausimus neatsako labai greitai. Todėl prieš paleidžiant žaidimą taip pat būtina numatyti veiksmus, jei nepasiekiamas reikiamas tikrintojų skaičius. Tokiu atveju žaidimo pradžioje trūkstamus tikrintojus paleidžia projekto komanda, jie dalyvauja bendru sutarimu, tačiau negali būti laimėtojais.

išvada

Apibendrinant, iš to, kas išdėstyta aukščiau, pabandžiau sudaryti sąrašą, ką reikia sugalvoti, padaryti ir paleisti, kad būtų veiksmingai vykdomas tikrinimo žaidimas.

Ką reikia padaryti, kad paleistumėte tikrą patvirtinimo žaidimą:
sukurti savo blokų grandinę :)

  • sukurti ir sukurti žiniatinklio sąsają ir pateikti CLI, skirtą balsuoti už tikrintojus
  • įsitikinkite, kad metrika iš veikiančio tikrinimo mazgo gali būti siunčiama į centralizuotą paslaugą (pvz., Prometheus)
  • sukurti metrikos rinkimo serverį (Prometheus + Grafana) patvirtinimo žaidimui
  • išsiaiškinti, kaip bus skaičiuojami patvirtinimo taškai (VP).
  • sukurti viešą scenarijų, kuris apskaičiuoja patvirtinimo VP pagal duomenis iš blokų grandinės
  • sukurti žiniatinklio sąsają, kad būtų rodomi geriausi tikrintuvai ir tikrintojų žaidimo būsena (kiek laiko liko iki pabaigos, kas turi kiek VP ir pan.)
  • sukurti ir automatizuoti savavališko skaičiaus savo mazgų paleidimą, suprojektuoti tikrintuvų prijungimo prie žaidimo procesą (kada ir kaip atjungti mazgus, pateikti ir pašalinti balsus už juos)
  • apskaičiuoti, kiek žetonų reikia išduoti, ir sudaryti maišytuvo sutartį
  • sukurti etaloninį scenarijų (žetonų perkėlimas, didžiulis saugyklos naudojimas, didžiulis tinklo naudojimas)
  • surinkite visus dalyvius į vieną pokalbį, kad galėtumėte greitai bendrauti
  • paleiskite blokų grandinę šiek tiek anksčiau nei žaidimo pradžia
  • palaukite startinio bloko, pradėkite žaidimą
  • išbandykite tinklą naudodami kelių tipų operacijas
  • iškočiokite kietą šakutę
  • pakeisti tikrintojų sąrašą
  • pakartokite 13,14,15, XNUMX, XNUMX veiksmus įvairia tvarka, išlaikydami tinklo stabilumą
  • palaukite paskutinio bloko, užbaikite žaidimą, suskaičiuokite VP

Reikia pasakyti, kad „Validatorių“ žaidimas yra nauja istorija ir ji buvo vykdoma tik keletą kartų, todėl neturėtumėte šio teksto laikyti paruoštu vadovu. Šiuolaikiniame IT versle analogų nėra – įsivaizduokite, kad bankai, prieš paleisdami mokėjimo sistemą, konkuruoja tarpusavyje, kas geriausiai atliks klientų operacijas. Vargu ar tradiciniai metodai padės sukurti didelius decentralizuotus tinklus, todėl įvaldykite naujus verslo modelius, vykdykite žaidimus, nustatykite vertus, apdovanokite juos ir paskirstykite sistemas, kad jos veiktų greitai ir stabiliai.

Šaltinis: www.habr.com

Добавить комментарий