Čo je to validačná hra alebo „ako spustiť blockchain proof-of-stake“

Takže váš tím dokončil alfa verziu vášho blockchainu a je čas spustiť testnet a potom mainnet. Máte skutočný blockchain s nezávislými účastníkmi, dobrý ekonomický model, bezpečnosť, navrhli ste riadenie a teraz je čas vyskúšať to všetko v praxi. V ideálnom krypto-anarchickom svete umiestnite blok genézy na sieť, konečný kód uzla a samotné validátory všetko spustia, zdvihnú všetky pomocné služby a všetko sa deje samo. Ale to je vo fiktívnom svete, ale v reálnom svete musí tím pripraviť pomerne veľa pomocného softvéru a rôznych manipulácií, ktoré pomôžu validátorom spustiť stabilnú sieť. O tom je tento článok.

Spúšťanie sietí založených na konsenze typu „proof-of-stake“, kde validátorov určujú hlasy držiteľov systémových tokenov, je pomerne špecifická udalosť, pretože ani spustenie tradičných, centrálne riadených systémov s desiatkami a stovkami serverov nie je jednoduché. úloha sama o sebe a blockchain je potrebné začať s úsilím lojálnych, ale nezávislých účastníkov. A ak v korporácii majú správcovia po spustení úplný prístup ku všetkým počítačom, protokolom, všeobecnému monitorovaniu, potom validátori nedovolia nikomu pristupovať k ich serverom a s najväčšou pravdepodobnosťou budú radšej budovať svoju infraštruktúru nezávisle, pretože kontroluje prístup. k hlavnému majetku validátora - vsádza voličov. Práve toto správanie umožňuje budovať distribuované bezpečné siete – nezávislosť použitých poskytovateľov cloudu, virtuálne a „baretalové“ servery, rôzne operačné systémy, to všetko vám umožňuje urobiť útoky na takúto sieť extrémne neefektívnymi – príliš odlišnými. používa sa softvér. Napríklad Ethereum používa dve implementácie hlavných uzlov, v Go a v Rust, a útok, ktorý je účinný pre jednu implementáciu, nefunguje pre druhú.

Všetky procesy spúšťania a prevádzky blockchainov preto musia byť organizované tak, aby ktorýkoľvek validátor, alebo aj malá skupina validátorov, mohla kedykoľvek vyhodiť svoje počítače von oknom a odísť, pričom sa nič nesmie rozbiť a zvyšní validátori by mali pokračovať v efektívnej podpore prevádzkovej siete a pripájaní nových validátorov. Pri spustení siete, keď je jeden validátor v Európe, druhý v Južnej Amerike a tretí v Ázii, je dosť ťažké dosiahnuť koordinovanú prácu niekoľkých desiatok nezávislých skupín a vo výsledku ich zaujať.

Validátori

Predstavme si spustenie hypotetického moderného blockchainu (väčšina z toho, čo je popísané, je vhodná pre blockchainy založené na akejkoľvek modernej rodine blockchainov: Ethereum, EOS, Polkadot, Cosmos a ďalšie, ktoré poskytujú proof-of-stake konsenzus. Hlavné postavy takéto blockchainy sú overovacie tímy , ktoré sa zaoberajú inštaláciou vlastných nezávislých serverov, ktoré overujú a vytvárajú nové bloky a dostávajú odmeny poskytované sieťou pre tých, ktorí sa zúčastňujú na konsenze. Na spustenie nových sietí je potrebných niekoľko desiatok overovateľov (toľko viac-menej efektívne dosiahnuť konsenzus v priebehu niekoľkých sekúnd), a tak projekt vyhlasuje registráciu, v rámci ktorej validátori zdieľajú verejné informácie o sebe s používateľmi, čím ich presviedčajú, že budú poskytovať kvalitnú službu spustenej sieti.

Validácia je biznis, ktorý umožňuje mimoriadne presne posúdiť potenciálny príjem validátora, rýchlo preniesť silu medzi projektmi a ak je ním vybraná sieť úspešná, validátor môže ako plnohodnotný účastník DAO a zodpovedná osoba napr. vypracovať projekt, alebo jednoducho poskytnúť vynikajúci technický servis za úplne transparentné, poctivo zarobené peniaze. Projekty sa pri výpočte odmeny pre validátorov snažia brať do úvahy náklady na validátorov a odmenu za bloky urobiť tak, aby bol tento biznis ziskový, no zároveň nedovolili validátorom zraziť ekonomiku tým, že ich zaplavia peniazmi a zbaviť ostatných používateľov siete.

Podnikanie validátorov si vyžaduje zabezpečenie vysokej odolnosti služieb voči chybám, čo znamená vysokú úroveň školenia pre vývojárov a vývojárov a drahé výpočtové zdroje. Aj bez potreby dolovania hashov v sieťach proof-of-work je blockchainový uzol veľkou službou, ktorá zaberá veľa pamäte, spotrebúva veľa výpočtov, overuje, zapisuje na disk a odosiela veľké množstvo údajov do siete. . Na ukladanie transakčných protokolov a blokových reťazcov pre blockchain s niekoľkými tisíckami malých transakcií v bloku je teraz potrebné úložisko 50 Gb alebo viac a pre bloky to musí byť SSD. Štátna databáza blockchainov s podporou smart kontraktov už môže presiahnuť 64Gb RAM. Servery s požadovanými vlastnosťami sú pomerne drahé; uzol Ethereum alebo EOS môže stáť od 100 do 200 $ / mesiac. Pridajte k tomu zvýšené mzdy za nepretržitú prácu vývojárov a vývojárov, ktorí počas spúšťacieho obdobia riešia problémy aj v noci, keďže niektoré validátory sa môžu ľahko nachádzať na inej pologuli. V správnych chvíľach však vlastníctvo validačného uzla môže priniesť vážne príjmy (v prípade EOS až 10 000 USD za deň).

Validácia je len jednou z nových potenciálnych IT úloh pre podnikateľov a spoločnosti; keďže programátori prichádzajú s čoraz sofistikovanejšími algoritmami, ktoré odmeňujú poctivosť a trestajú podvody a krádeže, objavujú sa služby, ktoré vykonávajú funkcie zverejňovania dôležitých údajov (orákulá), vykonávajú dohľad. (zrážanie vkladov a potrestanie podvodníkov zverejnením dôkazu o podvode), služby riešenia sporov, poistenie a opcie, dokonca aj zber odpadu je potenciálne veľký trh v inteligentných zmluvných systémoch, kde je potrebné platiť za ukladanie dát.

Problémy so spustením blockchainu

Otvorenosť blockchainu, ktorá umožnila počítačom z ktorejkoľvek krajiny slobodne sa zapojiť do siete a jednoduchosť pripojenia ľubovoľného script kiddie do siete podľa návodu na GitHub, nie je vždy výhodou. Snaha o získanie nového tokenu často núti overovateľov „ťažiť novú mincu na začiatku“ v nádeji, že miera stúpne a že budú mať príležitosť rýchlo zhodiť svoje zárobky. Znamená to tiež, že vaším overovateľom môže byť ktokoľvek, dokonca aj anonymný, môžete zaňho hlasovať rovnako ako za iných overovateľov (anonym však bude ťažko zbierať hlasy zainteresovaných strán, preto sme Strašidelné príbehy o anonymných kryptomenách nechám na politikov). Napriek tomu

Projektový tím má za úlohu - nejako dostať do svojej siete tých, ktorí sú v budúcnosti schopní zabezpečiť stabilnú prevádzku uzlov, rozumejú bezpečnosti, vedia rýchlo riešiť problémy, spolupracovať s ostatnými validátormi a konať spoločne - kvalita toho od týchto vlastností plne závisí token, do ktorého účastníci siete investujú svoj čas a zdroje. Adekvátni zakladatelia pri posudzovaní rizík dobre chápu, že pri spúšťaní softvéru tejto veľkosti sa určite budete musieť stretnúť s chybami v kóde a konfigurácii uzlov a že stabilita siete závisí od toho, ako dobre budú vývojári a validátori spoločne riešiť takéto problémy.

Tím je pripravený hlasovať na mainnete za akýchkoľvek validátorov, len aby vedel, ktoré, ktoré sú dobré? Najväčšie portfólio? To už nemá skoro nikto. Na základe profilov tímu Linkedin? Skúsení vývojári alebo bezpečnostní špecialisti vám neposkytnú žiadne profily Linkedin. Podľa vyjadrení v chate, príspevkoch a pomoci druhým počas prípravnej fázy? Dobré, ale subjektívne a nepresné.

V takýchto podmienkach zostáva jedna vec - niečo, čo dobre vyrieši problémy každého - hra, v ktorej bude možné vybrať najlepších validátorov, ale hlavnou vecou je otestovať silu blockchainu a vykonať bojový test v plnom rozsahu. blockchain v podmienkach aktívneho používania, zmeny konsenzu, vzhľad a oprava chýb . Tento postup ako hru prvýkrát predstavili chlapci z projektu Cosmos a tento nápad je nepochybne výborným spôsobom, ako pripraviť sieť na spustenie spoľahlivého mainnetu odolného voči poruchám.

Hra Validátorov

Hru validátorov popíšem tak, ako sme ju navrhli pre blockchain DAO.Casino (DAOBet) založený na forku EOS, ktorý sa volá Haya a má podobný mechanizmus riadenia – validátori sa vyberajú hlasovaním z ľubovoľného účtu, v ktorej časti zostatok použitý na hlasovanie za validátora je zmrazený. Každý účet, ktorý má na svojom zostatku hlavný token BET, môže hlasovať za vybraného validátora s akoukoľvek časťou svojho zostatku. Hlasy sa sčítajú a na základe výsledkov sa zostavia najlepší validátori. V rôznych blockchainoch je tento proces organizovaný inak a zvyčajne práve v tejto časti sa nový blockchain líši od toho materského a musím povedať, že v našom prípade EOS plne ospravedlňuje „OS“ vo svojom názve, naozaj používame EOS ako základný operačný systém pre nasadenie upravenej verzie blockchainu pre úlohy DAOBet.

Popíšem jednotlivé problémy a spôsob ich riešenia v rámci hry. Predstavme si sieť, v ktorej môže byť váš server otvorene napadnutý, kde, aby ste si udržali pozíciu validátora, musíte neustále interagovať so sieťou, propagovať váš validátor a uistiť sa, že vytvára bloky a tie sa doručujú iným validátorom na čas, inak bude validátor vyhodený zo zoznamu.

Ako vybrať najlepších víťazov?

Hlavnou technickou požiadavkou na hru je, aby jej výsledky boli verejne overiteľné. To znamená, že výsledky hry: TOP víťazi musia byť zostavené striktne na základe údajov, ktoré si môže overiť ktorýkoľvek účastník. V centralizovanom systéme sme mohli merať „uptime“ každého validátora a odmeňovať tých, ktorí boli najviac online alebo prešli maximálnym sieťovým prenosom. Môžete zbierať údaje o zaťažení procesora a pamäte a odmeňovať tých, ktorí pracovali dobre. Ale každý takýto zber metrík znamená existenciu zberného centra a všetky uzly sú nezávislé a môžu sa správať ako chcú a posielať akékoľvek dáta.

Prirodzeným riešením preto je, že víťazi by sa mali určovať na základe údajov z blockchainu, pretože sa pomocou nich dá zistiť, ktorý validátor vyrobil ktorý blok a aké transakcie v ňom boli zahrnuté. Toto číslo sme nazvali Validator Points (VP) a ich získavanie je hlavným cieľom validátorov v hre. V našom prípade je najjednoduchšou, ľahko verejne overiteľnou a efektívnou metrikou „užitočnosti“ validátora VP = počet blokov vyprodukovaných validátorom v danom časovom období.

Táto jednoduchá voľba je spôsobená skutočnosťou, že riadenie v EOS už poskytuje veľa nových problémov, pretože EOS je dedičom troch generácií skutočne fungujúcich blockchainov s rozsiahlymi skúsenosťami v komplexnej správe siete a takmer všetkými problémami s validátorom siete, procesora, disku vedie len k jednému problému - podpíše menej blokov, dostane menšiu platbu za prácu, čo nás opäť vedie jednoducho k počtu podpísaných blokov - pre EOS je to vynikajúca a jednoduchá možnosť.

Pre iné blockchainy sa spôsob výpočtu Validator Points môže líšiť, napríklad pre konsenzy založené na pBFT (Tendermint/Cosmos, Aura consensus z Parity Substrate), kde každý blok musí byť podpísaný viacerými validátormi, má zmysel počítať jednotlivé validátory Môže mať zmysel brať do úvahy neúplné kolá konsenzu, ktoré plytvajú zdrojmi iných validátorov, vo všeobecnosti to veľmi závisí od typu konsenzu.

Ako simulovať skutočné prevádzkové podmienky

Úlohou zakladateľov je testovať validátory za podmienok blízkych realite, bez akejkoľvek centralizovanej kontroly. Tento problém je možné vyriešiť pomocou faucetovej zmluvy, ktorá rozdeľuje rovnaké množstvo hlavného tokenu medzi validátorov a všetkým ostatným. Ak chcete získať tokeny na svoj zostatok, musíte vytvoriť transakciu a zabezpečiť, aby ju sieť zahrnula do bloku. Aby teda validátor vyhral, ​​musí neustále dopĺňať svoj zostatok novými tokenmi a hlasovať za seba, čím sa povyšuje na vrchol. Táto aktivita vytvára konštantné zaťaženie siete a parametre je možné zvoliť tak, aby tok požiadaviek bol dostatočne prísny na úplný test siete. Faucet kontrakt ako dôležitý nástroj na spustenie siete si preto vopred naplánujte a začnite vopred vyberať jeho parametre.

Vyžiadanie tokenov z faucetu a overenie hlasov stále úplne nenapodobňuje činnosť hlavice, najmä v extrémne zaťažených režimoch. Preto bude blockchain tím stále musieť písať ďalšie benchmarky tak či onak, aby načítal sieť. Osobitnú úlohu v tom zohrávajú špeciálne vytvorené smart kontrakty, ktoré umožňujú testovanie samostatného subsystému. Na testovanie úložiska zmluva ukladá náhodné dáta v blockchaine a na testovanie sieťových zdrojov si testovacia zmluva vyžaduje veľké množstvo vstupných dát, čím sa zvyšuje objem transakcií – spustením toku takýchto transakcií v ľubovoľných časových bodoch, tím súčasne testuje stabilitu kódu a silu validátorov.

Samostatným problémom je aktualizácia kódu uzlov a vykonávanie hard forkov. Vyžaduje sa, aby v prípade chyby, zraniteľnosti alebo tajnej dohody so škodlivými overovateľmi mali overovatelia akčný plán, ktorý už bol vypracovaný v hre overovateľov. Tu môžete prísť so schémami na získanie VP na rýchle použitie hard forku, napríklad pokutovaním všetkých validátorov, ktorí ešte nezaviedli novú verziu kódu uzla, ale je to ťažké implementovať a komplikuje to výpočet. Situáciu núdzového použitia hard forku môžete simulovať umelým „rozbitím“ blockchainu na danom bloku. Výroba blokov sa zastaví a nakoniec vyhrajú tí, ktorí naskočia ako prví a začnú podpisovať bloky, takže VP na základe počtu podpísaných blokov sa sem hodí.

Ako informovať účastníkov o stave siete a opraviť chyby

Napriek nedôvere medzi validátormi je včasný príjem aktuálnych informácií o stave siete prospešný pre každého, aby sa mohli rýchlejšie rozhodovať, preto projektový tím vytvára službu na zber a vizualizáciu mnohých metrík zo serverov validátorov, čo vám umožní vidieť situáciu súčasne pre celú sieť, čo vám umožní rýchlo zistiť, čo sa deje. Pre validátorov aj projekt je tiež výhodné, že projektový tím rýchlo opraví nájdené chyby, takže okrem zberu metrík má zmysel okamžite začať zbierať protokoly a chybové údaje zo strojov validátorov na stroji dostupnom pre blockchain. vývojárov. Tu nie je pre nikoho výhodné skresľovať informácie, preto tieto služby vyvíja projektový tím a dá sa im dôverovať. Má zmysel zbierať systémové metriky od validátorov a, samozrejme, najdôležitejšie metriky samotného blockchainu – pre DAOBet – sú čas finalizácie a oneskorenie posledného dokončeného bloku. Vďaka tomu tím vidí nárast spotreby pamäte na uzloch pri spustení benchmarku, problémy s jednotlivými validátormi

Dôležité body pre vedenie hry s validátorom

Ako sa ukázalo, ak chcete oficiálne povoliť validátorom navzájom útočiť na stroje (neoficiálne to môžu urobiť aj tak), musíte to legálne formulovať samostatne ako testovanie bezpečnosti, keďže podľa zákonov niektorých krajín môžu byť DDoS alebo sieťové útoky potrestaný. Ďalšou dôležitou otázkou je, ako odmeňovať validátorov. Prirodzenými cenami sú tokeny projektov, ktoré sa prenesú do mainnetu, no masívna distribúcia tokenov komukoľvek, kto dokázal spustiť uzol, tiež nie je tou najlepšou možnosťou. S najväčšou pravdepodobnosťou budete musieť balansovať medzi dvoma extrémnymi možnosťami:

Rozdeľte celý prizepool podľa získaného VP
je veľmi demokratická a umožňuje zarábať peniaze každému, kto investoval čas a prostriedky do hry validátora
ale priťahuje náhodných ľudí do hry bez pripravenej infraštruktúry

Na základe výsledkov hry rozdeľte banku najlepších N medzi overovateľov
Víťazmi sa s najväčšou pravdepodobnosťou stanú validátori, ktorí počas hry vydržali najdôslednejšie a sú veľmi prísne odhodlaní vyhrať
niektorí validátori sa nebudú chcieť zúčastniť, pretože majú nízke hodnotenie svojich šancí na výhru, najmä ak medzi účastníkmi sú ctihodní validátori

Ktorú možnosť si vyberiete, je len na vás

Je tu ešte jeden bod - nie je vôbec pravda, že desiatky validátorov sa ponáhľajú zúčastniť sa hry na vašu výzvu a z tých, ktorí sa rozhodnú vyskúšať, nie všetci dokonca nainštalujú a spustia uzol - zvyčajne, v tejto fáze majú projekty dosť riedku dokumentáciu, vyskytujú sa chyby a vývojári pracujúci pod časovým tlakom neodpovedajú na otázky veľmi rýchlo. Pred spustením hry je preto potrebné zabezpečiť aj akcie, ak sa nedosiahne požadovaný počet validátorov. V tomto prípade na začiatku hry projektový tím spustí chýbajúce validátory, zúčastňujú sa konsenzu, ale nemôžu byť víťazmi.

Záver

Na záver som sa pokúsil zostaviť z vyššie uvedeného zoznam toho, čo je potrebné vymyslieť, vyrobiť a spustiť, aby ste mohli efektívne vykonávať validátorskú hru

Čo musíte urobiť, aby ste mohli spustiť skutočnú hru s validátorom:
vytvorte si vlastný blockchain :)

  • vytvoriť a zvýšiť webové rozhranie a poskytnúť CLI na hlasovanie pre validátorov
  • uistite sa, že metriky zo spusteného uzla validátora možno odoslať do centralizovanej služby (napríklad Prometheus)
  • vytvoriť server na zber metrík (Prometheus + Grafana) pre hru s validátorom
  • zistiť, ako sa budú počítať body validátora (VP).
  • vyvinúť verejný skript, ktorý vypočíta VP validátora na základe údajov z blockchainu
  • vytvoriť webové rozhranie na zobrazenie najlepších validátorov a stavu hry validátorov (koľko času zostáva do konca, kto má koľko VP atď.)
  • vyvíjať a automatizovať spúšťanie ľubovoľného počtu vlastných uzlov, navrhovať proces pripojenia validátorov k hre (kedy a ako odpojiť uzly, odosielať a odoberať pre ne hlasy)
  • vypočítajte, koľko tokenov je potrebné vydať, a vytvorte faucetovú zmluvu
  • vytvoriť benchmarkový skript (prenosy tokenov, masívne využitie úložiska, masívne využitie siete)
  • zhromaždiť všetkých účastníkov v jednom chate pre rýchlu komunikáciu
  • spustiť blockchain o niečo skôr ako je začiatok hry
  • počkajte na štartovací blok, spustite hru
  • otestujte sieť niekoľkými typmi transakcií
  • vyvaliť tvrdú vidličku
  • zmeniť zoznam validátorov
  • opakujte kroky 13,14,15, XNUMX, XNUMX v rôznom poradí, aby ste zachovali stabilitu siete
  • počkajte na posledný blok, ukončite hru, počítajte VP

Je potrebné povedať, že hra validátorov je nový príbeh a bola vykonaná len niekoľkokrát, takže tento text by ste nemali brať ako hotový návod. V modernom IT biznise neexistujú analógy – predstavte si, že banky pred spustením platobného systému medzi sebou súťažia o to, kto bude najlepší vo vykonávaní zákazníckych transakcií. Tradičné prístupy vám pravdepodobne nepomôžu vytvoriť veľké decentralizované siete, takže si osvojte nové obchodné modely, spúšťajte svoje hry, identifikujte tie, ktoré si zaslúžia, odmeňte ich a udržujte svoje distribuované systémy v prevádzke rýchlo a stabilne.

Zdroj: hab.com

Pridať komentár