Co je to validátorová hra nebo „jak spustit blockchain proof-of-stake“

Takže váš tým dokončil alfa verzi vašeho blockchainu a je čas spustit testnet a poté mainnet. Máte skutečný blockchain s nezávislými účastníky, dobrý ekonomický model, bezpečnost, navrhli jste řízení a nyní je čas to vše vyzkoušet v akci. V ideálním kryptoanarchickém světě umístíte na síť blok geneze, finální kód uzlu a validátoři vše spustí sami, zvednou všechny pomocné služby a vše se děje samo. Ale to je ve fiktivním světě, ale ve skutečném světě musí tým připravit poměrně hodně pomocného softwaru a různých manipulací, které pomohou validátorům spustit stabilní síť. O tom je tento článek.

Spouštění sítí založených na konsensu typu „proof-of-stake“, kde validátory určují hlasy držitelů systémových tokenů, je poměrně specifická událost, protože ani spouštění tradičních centrálně spravovaných systémů s desítkami a stovkami serverů není jednoduché. úkol sám o sobě a blockchain je třeba začít s úsilím loajálními, ale nezávislými účastníky. A pokud mají v korporaci při spuštění administrátoři úplný přístup ke všem strojům, protokolům, obecnému monitorování, pak validátoři nikomu neumožní přístup k jejich serverům a s největší pravděpodobností budou raději budovat svou infrastrukturu nezávisle, protože řídí přístup. k hlavnímu aktivu validátoru - sázkovým voličům. Právě toto chování umožňuje budovat distribuované zabezpečené sítě – nezávislost používaných poskytovatelů cloudu, virtuální a „baretalové“ servery, různé operační systémy, to vše vám umožňuje učinit útoky na takovou síť extrémně neefektivní – příliš odlišné. se používá software. Například Ethereum používá dvě implementace hlavních uzlů, v Go a v Rustu, a útok, který je účinný pro jednu implementaci, nefunguje pro druhou.

Všechny procesy pro spouštění a provozování blockchainů proto musí být organizovány tak, aby kterýkoli validátor, nebo i malá skupina validátorů, mohla kdykoli vyhodit své počítače z okna a odejít, přičemž se nic nesmí rozbít a zbývající validátoři by měli nadále efektivně podporovat provozní síť a připojovat nové validátory. Při spouštění sítě, kdy je jeden validátor v Evropě, druhý v Jižní Americe a třetí v Asii, je poměrně obtížné dosáhnout koordinované práce několika desítek nezávislých skupin a ve výsledku je zaujmout.

Validátory

Představme si spuštění hypotetického moderního blockchainu (většina popsaného je vhodná pro blockchainy založené na jakékoli moderní rodině blockchainů: Ethereum, EOS, Polkadot, Cosmos a další, které poskytují proof-of-stake konsensus. Hlavní postavy takové blockchainy jsou týmy validátorů , které se zabývají instalací vlastních nezávislých serverů, které ověřují a vytvářejí nové bloky, a dostávají odměny poskytované sítí pro ty, kteří se účastní konsensu. Ke spuštění nových sítí je zapotřebí několik desítek validátorů (tolik jich nyní může více či méně efektivně dosáhnout konsensu během několika sekund), a tak projekt vyhlašuje registraci, ve které validátoři sdílejí veřejné informace o sobě s uživateli a přesvědčují je, že se chystají poskytovat kvalitní službu spuštěné síti.

Validace je byznys, který umožňuje extrémně přesně odhadnout potenciální příjmy validátora, rychle přenést sílu mezi projekty, a pokud je jím zvolená síť úspěšná, může validátor jako plnohodnotný účastník DAO a odpovědná osoba, vyvinout projekt, nebo jednoduše poskytnout vynikající technický servis za zcela transparentní, poctivě vydělané peníze. Při výpočtu odměny pro validátory se projekty snaží zohlednit náklady na validátory a udělat odměnu za bloky takovou, aby byl tento byznys ziskový, ale zároveň nedovolil validátorům srazit ekonomiku tím, že je zahltí penězi a připravit o něj ostatní uživatele sítě.

Podnikání validátorů vyžaduje zajištění vysoké odolnosti služeb proti chybám, což znamená vysokou úroveň školení pro vývojáře a vývojáře a drahé výpočetní zdroje. I bez nutnosti těžit hashe v sítích proof-of-work je blockchainový uzel velkou službou, která zabírá hodně paměti, spotřebovává spoustu výpočtů, ověřuje, zapisuje na disk a posílá velké množství dat do sítě. . Pro ukládání protokolů transakcí a blockchainů pro blockchain s několika tisíci malými transakcemi v bloku je nyní vyžadováno úložiště 50 Gb nebo více a pro bloky to musí být SSD. Státní databáze blockchainů s podporou smart kontraktů již může přesáhnout 64Gb RAM. Servery s požadovanými vlastnostmi jsou poměrně drahé, uzel Ethereum nebo EOS může stát od 100 do 200 $/měsíc. Přidejte k tomu zvýšené mzdy za nepřetržitou práci vývojářů a devopů, kteří v době startu řeší problémy i v noci, protože některé validátory mohou být snadno umístěny na jiné polokouli. Ve správných okamžicích však vlastnictví validátorového uzlu může přinést vážné příjmy (v případě EOS až 10 000 $ za den).

Validace je jen jednou z nových potenciálních IT rolí pro podnikatele a společnosti; jak programátoři přicházejí se stále důmyslnějšími algoritmy, které odměňují poctivost a trestají podvody a krádeže, objevují se služby, které plní funkce zveřejňování důležitých dat (věštců), provádějí dohled. (ořezávání vkladů a potrestání podvodníků zveřejněním důkazů o podvodu), služby řešení sporů, pojištění a opce, dokonce i svoz odpadu je potenciálně velký trh v systémech chytrých smluv, kde je nutné platit za ukládání dat.

Problémy se spuštěním blockchainu

Otevřenost blockchainu, která umožnila počítačům z jakékoli země se volně zapojit do sítě, a snadné připojení libovolného skriptového kiddie k síti podle pokynů na GitHubu, není vždy výhodou. Snaha o získání nového tokenu často nutí validátory „těžit novou minci na začátku“ v naději, že rychlost stoupne a příležitost rychle shodit své výdělky. To také znamená, že vaším ověřovatelem může být kdokoli, dokonce i anonymní osoba, můžete pro něj hlasovat stejně jako pro ostatní ověřovatele (anonym však bude těžko sbírat hlasy zúčastněných stran, takže Strašidelné historky o anonymních kryptoměnách přenecháme politikům). Nicméně

Projektový tým má za úkol - nějak dostat do své sítě ty, kteří jsou v budoucnu schopni zajistit stabilní provoz uzlů, rozumí bezpečnosti, vědí, jak rychle řešit problémy, spolupracovat s ostatními validátory a jednat společně - kvalita toho na těchto vlastnostech plně závisí token, do kterého účastníci sítě investují svůj čas a zdroje. Adekvátní zakladatelé při posuzování rizik dobře chápou, že při spouštění softwaru této velikosti určitě budete muset narazit na chyby v kódu a konfiguraci uzlů a že stabilita sítě závisí na tom, jak dobře budou vývojáři a validátoři společně řešit takové problémy.

Tým je připraven hlasovat na mainnetu pro všechny validátory, jen aby věděl, které, které jsou dobré? Největší portfolio? Teď už to skoro nikdo nemá. Na základě profilů týmu Linkedin? Zkušení vývojáři nebo bezpečnostní specialisté vám žádné profily Linkedin neposkytnou. Podle vyjádření v chatu, příspěvcích a pomoci druhým během přípravné fáze? Dobré, ale subjektivní a nepřesné.

V takových podmínkách zůstává jedna věc - něco, co dobře vyřeší problémy každého - hra, ve které bude možné vybrat nejlepší validátory, ale hlavní věcí je otestovat blockchain na sílu a provést plnohodnotný bojový test blockchain v podmínkách aktivního používání, změny konsensu, vzhled a oprava chyb . Tento postup poprvé představili jako hru kluci z projektu Cosmos a tento nápad je nepochybně vynikajícím způsobem, jak připravit síť na spuštění spolehlivého mainnetu odolného proti chybám

Hra ověřovatelů

Popíšu hru validátorů tak, jak jsme ji navrhli pro blockchain DAO.Casino (DAOBet) založený na forku EOS, který se nazývá Haya a má podobný mechanismus řízení – validátoři jsou vybíráni hlasováním z libovolného účtu, ve kterém je část zůstatek použitý k hlasování pro validátora je zmrazen. Jakýkoli účet, který má na svém zůstatku hlavní token BET, může hlasovat pro vybraného validátora jakoukoli částí jeho zůstatku. Hlasy se sečtou a na základě výsledků se sestaví nejlepší validátoři. V různých blockchainech je tento proces organizován jinak a obvykle právě v této části se nový blockchain liší od toho mateřského a musím říci, že v našem případě EOS plně ospravedlňuje „OS“ ve svém názvu, opravdu používáme EOS jako základní operační systém pro nasazení upravené verze blockchainu pro úlohy DAOBet.

Popíšu jednotlivé problémy a jak je lze v rámci hry řešit. Představme si síť, ve které může být váš server otevřeně napaden, kde pro udržení pozice validátora musíte neustále komunikovat se sítí, propagovat vašeho validátora a zajistit, aby vytvářel bloky a ty byly včas doručeny ostatním validátorům, jinak bude validátor vyhozen ze seznamu.

Jak vybrat nejlepší vítěze?

Hlavním technickým požadavkem hry je, aby její výsledky byly veřejně ověřitelné. To znamená, že výsledky hry: TOP vítězové, musí být tvořeny striktně na základě údajů, které může ověřit každý účastník. V centralizovaném systému jsme mohli měřit „uptime“ každého validátoru a odměňovat ty, kteří byli nejvíce online nebo prošli maximálním síťovým provozem. Můžete sbírat data o zatížení procesoru a paměti a odměňovat ty, kteří pracovali dobře. Ale jakýkoli takový sběr metrik znamená existenci sběrného centra a všechny uzly jsou nezávislé a mohou se chovat, jak chtějí, a odesílat jakákoli data.

Přirozeným řešením proto je, že vítězové by měli být určováni na základě dat z blockchainu, protože pomocí nich lze zjistit, který validátor vytvořil který blok a jaké transakce do něj byly zahrnuty. Toto číslo jsme nazvali Validator Points (VP) a jejich získávání je hlavním cílem validátorů ve hře. V našem případě je nejjednodušší, snadno veřejně ověřitelná a efektivní metrika „užitečnosti“ validátoru VP = počet bloků vyprodukovaných validátorem v daném časovém období.

Tato jednoduchá volba je způsobena skutečností, že správa v EOS již poskytuje mnoho nových problémů, protože EOS je dědicem tří generací skutečně fungujících blockchainů s rozsáhlými zkušenostmi v komplexní správě sítě a téměř všemi problémy s validátorem se sítí, procesorem, disk vede pouze k jednomu problému - podepisuje méně bloků, dostává méně plateb za práci, což nás opět vede jednoduše k počtu podepsaných bloků - pro EOS je to výborná a jednoduchá volba.

U jiných blockchainů se způsob výpočtu Validator Points může lišit, například pro konsensy založené na pBFT (Tendermint/Cosmos, Aura consensus od Parity Substrate), kde každý blok musí být podepsán více validátory, má smysl počítat jednotlivé validátory Může mít smysl vzít v úvahu neúplná kola konsensu, která plýtvají zdroji jiných validátorů, obecně to velmi závisí na typu konsenzu.

Jak simulovat skutečné provozní podmínky

Úkolem zakladatelů je testovat validátory za podmínek blízkých realitě, aniž by měli nějakou centralizovanou kontrolu. Tento problém lze vyřešit pomocí faucetové smlouvy, která rozděluje stejné množství hlavního tokenu mezi validátory a všechny ostatní. Chcete-li získat tokeny na svůj zůstatek, musíte vytvořit transakci a zajistit, aby ji síť zahrnula do bloku. Aby tedy validátor vyhrál, musí neustále doplňovat svůj zůstatek novými žetony a hlasovat pro sebe, čímž se povyšuje na vrchol. Tato aktivita vytváří konstantní zatížení sítě a parametry lze vybrat tak, aby tok požadavků byl dostatečně náročný na úplný test sítě. Naplánujte si proto předem faucet kontrakt jako důležitý nástroj pro spuštění sítě a začněte s předstihem vybírat její parametry.

Vyžadování tokenů z faucetu a ověřování hlasů stále plně nenapodobuje činnost hlavice, zvláště v extrémně nabitých režimech. Proto bude blockchainový tým stále muset psát další benchmarky tak či onak, aby načetl síť. Zvláštní roli v tom hrají speciálně vytvořené smart kontrakty, které umožňují testování samostatného subsystému. Pro testování úložiště ukládá smlouva náhodná data v blockchainu a pro testování síťových zdrojů vyžaduje testovací smlouva velké množství vstupních dat, čímž se objem transakcí navyšuje – spuštěním toku takových transakcí v libovolném časovém okamžiku, tým současně testuje stabilitu kódu a sílu validátorů.

Samostatným problémem je aktualizace kódu uzlů a provádění hard forků. Vyžaduje se, aby v případě chyby, zranitelnosti nebo tajné dohody se škodlivými validátory měli validátoři akční plán, který již byl vypracován ve hře validátorů. Zde můžete vymýšlet schémata načítání VP pro rychlé použití hard forku, například pokutováním všech validátorů, kteří ještě nezavedli novou verzi kódu uzlu, ale to je obtížné implementovat a komplikuje to výpočet. Situaci nouzového použití hard forku můžete simulovat umělým „rozbitím“ blockchainu na daném bloku. Výroba bloků se zastaví a nakonec vyhrají ti, kteří naskočí jako první a začnou podepisovat bloky, takže se sem hodí VP podle počtu podepsaných bloků.

Jak informovat účastníky o stavu sítě a opravit chyby

Navzdory nedůvěře mezi validátory je včasné obdržení aktuálních informací o stavu sítě prospěšné pro každého, aby se mohli rychleji rozhodovat, takže projektový tým vytváří službu pro sběr a vizualizaci mnoha metrik ze serverů validátorů, což vám umožní vidět situaci současně pro celou síť, což vám umožní rychle zjistit, co se děje. Pro validátory i projekt je také výhodné, že projektový tým rychle opravuje nalezené chyby, takže kromě sběru metrik má smysl okamžitě začít shromažďovat protokoly a chybová data ze strojů validátorů na stroji přístupném blockchainu. vývojáři. Zde není pro nikoho výhodné informace zkreslovat, proto tyto služby vyvíjí projektový tým a lze jim věřit. Má smysl sbírat systémové metriky od validátorů a samozřejmě nejdůležitější metriky samotného blockchainu – pro DAOBet – jsou doba finalizace a zpoždění posledního finalizovaného bloku. Díky tomu tým vidí nárůst spotřeby paměti na uzlech při běhu benchmarku, problémy s jednotlivými validátory

Důležité body pro provádění validátorové hry

Jak se ukazuje, pokud chcete oficiálně umožnit validátorům útočit si navzájem na stroje (neoficiálně to stejně mohou udělat), musíte to samostatně formulovat právně jako bezpečnostní testování, protože podle zákonů některých zemí mohou být DDoS nebo síťové útoky potrestán. Další důležitou otázkou je, jak odměňovat validátory. Přirozenými cenami jsou tokeny projektů, které se přenesou do mainnetu, ale masivní distribuce tokenů komukoli, kdo dokázal spustit uzel, také není nejlepší varianta. S největší pravděpodobností budete muset balancovat mezi dvěma extrémními možnostmi:

Rozdělte celý prize pool podle získaného VP
je velmi demokratický a umožňuje každému, kdo investoval čas a prostředky do hry s validátorem, vydělat peníze
ale přitahuje náhodné lidi do hry bez připravené infrastruktury

Rozdělte top-N cenový fond mezi validátory na základě výsledků hry
Vítězi se s největší pravděpodobností stanou validátoři, kteří během hry vydrželi nejdůsledněji a jsou velmi přísně odhodláni vyhrát
někteří validátoři se nebudou chtít zúčastnit, protože jejich šance na výhru jsou nízké, zvláště pokud jsou mezi účastníky ctihodní validátoři

Jakou možnost si vyberete, je na vás

Je tu ještě jeden bod - není vůbec pravda, že se na vaši výzvu k účasti ve hře přispěchají desítky validátorů a z těch, kteří se rozhodnou to zkusit, ne všichni ani nainstalují a spustí uzel - obvykle, v této fázi mají projekty spíše řídkou dokumentaci, dochází k chybám a vývojáři pracující pod časovým tlakem neodpovídají na otázky příliš rychle. Před spuštěním hry je proto také nutné zajistit akce pro případ, že nebude dosaženo požadovaného počtu validátorů. V tomto případě na začátku hry projektový tým spustí chybějící validátory, účastní se konsensu, ale nemohou být vítězi.

Závěr

Na závěr jsem se pokusil z výše uvedeného sestavit seznam toho, co je třeba vymyslet, vyrobit a spustit, aby bylo možné efektivně provádět validátorovou hru

Co musíte udělat pro spuštění skutečné hry s validátorem:
vytvořit si vlastní blockchain :)

  • vytvořit a zvýšit webové rozhraní a poskytnout CLI pro hlasování o validátorech
  • ujistěte se, že metriky ze spuštěného uzlu validátoru lze odesílat do centralizované služby (například Prometheus)
  • vytvořit server pro shromažďování metrik (Prometheus + Grafana) pro hru s validátorem
  • zjistit, jak se budou počítat body validátoru (VP).
  • vyvinout veřejný skript, který vypočítá VP validátoru na základě dat z blockchainu
  • vyvinout webové rozhraní pro zobrazení nejlepších validátorů a stavu hry validátorů (kolik času zbývá do konce, kdo má kolik VP atd.)
  • vyvinout a automatizovat spouštění libovolného počtu vlastních uzlů, navrhnout proces připojení validátorů ke hře (kdy a jak odpojit uzly, odesílat a odebírat pro ně hlasy)
  • vypočítat, kolik tokenů je třeba vydat, a vytvořit faucet smlouvu
  • vytvořit benchmarkový skript (přenosy tokenů, masivní využití úložiště, masivní využití sítě)
  • shromážděte všechny účastníky v jednom chatu pro rychlou komunikaci
  • spusťte blockchain o něco dříve než na začátku hry
  • počkejte na startovní blok, spusťte hru
  • otestujte síť pomocí několika typů transakcí
  • vyvalit tvrdou vidličku
  • změnit seznam validátorů
  • opakujte kroky 13,14,15, XNUMX, XNUMX v různém pořadí, udržujte stabilitu sítě
  • čekat na závěrečný blok, ukončit hru, počítat VP

Je třeba říci, že hra validátorů je nový příběh a byla provedena jen párkrát, takže tento text neberte jako hotový návod. V moderním IT byznysu neexistují obdoby – představte si, že banky před spuštěním platebního systému mezi sebou soutěží o to, kdo bude nejlepší v provádění zákaznických transakcí. Tradiční přístupy vám pravděpodobně nepomohou vytvořit velké decentralizované sítě, takže si osvojte nové obchodní modely, provozujte své hry, identifikujte ty, které si zaslouží, odměňujte je a udržujte své distribuované systémy v chodu rychle a stabilně.

Zdroj: www.habr.com

Přidat komentář