Što je igra validatora ili “kako pokrenuti proof-of-stake blockchain”

Dakle, vaš tim je završio alfa verziju vašeg blockchaina i vrijeme je da pokrenete testnet, a zatim i mainnet. Imate pravi blockchain, s neovisnim sudionicima, dobar ekonomski model, sigurnost, dizajnirali ste upravljanje i sada je vrijeme da sve to isprobate na djelu. U idealnom kripto-anarhičnom svijetu, stavite blok geneze na mrežu, konačni kod čvora i sami validatori pokreću sve, podižu sve pomoćne servise i sve se događa samo od sebe. Ali ovo je u fiktivnom svijetu, ali u stvarnom svijetu, tim mora pripremiti dosta pomoćnog softvera i raznih manipulacija kako bi pomogli validatorima da pokrenu stabilnu mrežu. O tome govori ovaj članak.

Pokretanje mreža temeljenih na konsenzusima tipa “proof-of-stake”, gdje se validatori određuju glasovima vlasnika tokena sustava, prilično je specifičan događaj, jer čak ni pokretanje tradicionalnih, centralno upravljanih sustava s desecima i stotinama poslužitelja nije lako zadatak sam po sebi, a blockchain treba pokrenuti trudom lojalnih, ali neovisnih sudionika. I, ako u korporaciji, nakon pokretanja, administratori imaju potpuni pristup svim strojevima, zapisnicima, općem nadzoru, tada validatori neće nikome dopustiti pristup njihovim poslužiteljima i, najvjerojatnije, radije će samostalno graditi svoju infrastrukturu, jer kontrolira pristup glavnoj imovini potvrđivača - ulozi glasači. Upravo ovo ponašanje omogućuje izgradnju distribuiranih sigurnih mreža - neovisnost korištenih cloud providera, virtualni i "baremetal" poslužitelji, različiti operativni sustavi, sve to omogućuje da napadi na takvu mrežu budu krajnje neučinkoviti - previše različiti koristi se softver. Na primjer, Ethereum koristi dvije implementacije glavnih čvorova, u Go i Rustu, a napad koji je učinkovit za jednu implementaciju ne funkcionira za drugu.

Stoga svi procesi za pokretanje i rad blockchaina moraju biti organizirani na način da bilo koji validator, pa čak i mala grupa validatora, može u bilo kojem trenutku izbaciti svoja računala kroz prozor i otići, a da se ništa ne pokvari, a preostali validatori trebaju nastaviti učinkovito podržavati operativnu mrežu i povezivati ​​nove validatore. Prilikom pokretanja mreže, kada je jedan validator u Europi, drugi u Južnoj Americi, a treći u Aziji, prilično je teško postići koordiniran rad nekoliko desetaka neovisnih grupa i time ih zainteresirati.

Validatori

Zamislimo pokretanje hipotetskog modernog blockchaina (većina opisanog prikladna je za blockchaine temeljene na bilo kojoj modernoj obitelji blockchaina: Ethereum, EOS, Polkadot, Cosmos i drugi, koji pružaju konsenzus o dokazu o udjelu. Glavni likovi takvi lanci blokova su timovi validatora, uključeni u instaliranje vlastitih neovisnih poslužitelja koji potvrđuju i proizvode nove blokove, te primaju nagrade koje pruža mreža za one koji sudjeluju u konsenzusu. Za pokretanje novih mreža potrebno je nekoliko desetaka validatora (toliko sada može više ili manje učinkovito postižu konsenzus u nekoliko sekundi), tako da projekt najavljuje registraciju, u kojoj validatori dijele javne informacije o sebi s korisnicima, uvjeravajući ih da će pružiti visokokvalitetnu uslugu pokrenutoj mreži.

Validacija je posao koji omogućuje iznimno preciznu procjenu potencijalnih prihoda validatora, brz prijenos moći između projekata, a ako je mreža koju je odabrao uspješna, validator može kao punopravni sudionik DAO-a i odgovorna osoba razviti projekt ili jednostavno pružiti izvrsnu tehničku uslugu za potpuno transparentan, pošteno zarađen novac. Prilikom izračunavanja nagrade za validatore, projekti pokušavaju uzeti u obzir troškove validatora i napraviti nagradu za blokove tako da ovaj posao bude isplativ, ali u isto vrijeme ne dopušta validatorima da sruše ekonomiju preplavljujući ih novcem i uskraćujući ga drugim korisnicima mreže.

Posao validatora zahtijeva osiguranje visoke tolerancije grešaka u uslugama, što znači visoku razinu obuke za devops i programere te skupe računalne resurse. Čak i bez potrebe za rudarenjem hasheva u mrežama s dokazom o radu, blockchain čvor je velika usluga koja zauzima puno memorije, troši puno izračuna, potvrđuje, zapisuje na disk i šalje velike količine podataka u mrežu. . Za pohranu zapisa transakcija i lanaca blokova za blockchain s nekoliko tisuća malih transakcija u bloku sada je potrebna pohrana od 50 Gb ili više, a za blokove to mora biti SSD. Državna baza blockchaina s podrškom za pametne ugovore već može premašiti 64 Gb RAM-a. Poslužitelji s potrebnim karakteristikama prilično su skupi, Ethereum ili EOS čvor može koštati od 100 do 200 $/mjesečno. Ovome dodajte povećane plaće za danonoćni rad programera i devopsa, koji tijekom razdoblja lansiranja rješavaju probleme čak i noću, jer se neki validatori lako mogu locirati na drugoj hemisferi. Međutim, u pravim trenucima, posjedovanje čvora validatora može donijeti ozbiljan prihod (u slučaju EOS-a, do 10 000 dolara dnevno).

Validacija je samo jedna od novih potencijalnih IT uloga za poduzetnike i tvrtke; kako programeri dolaze sa sve sofisticiranijim algoritmima koji nagrađuju poštenje, a kažnjavaju prijevare i krađe, pojavljuju se servisi koji obavljaju funkcije objave važnih podataka (proročišta), obavljanja nadzora (rezanje depozita i kažnjavanje varalica objavljivanjem dokaza prijevare), usluge rješavanja sporova, osiguranje i opcije, čak i odvoz smeća je potencijalno veliko tržište u sustavima pametnih ugovora gdje je potrebno platiti pohranu podataka.

Problemi pokretanja blockchaina

Otvorenost blockchaina, koja je omogućila računalima iz bilo koje zemlje da slobodno sudjeluju u mreži i jednostavnost povezivanja bilo kojeg script kiddija na mrežu prema uputama na GitHubu, nije uvijek prednost. Potraga za novim tokenom često prisiljava validatore da "iskopaju novi coin na početku", u nadi da će stopa porasti i prilika da brzo odbace svoju zaradu. Također, to znači da vaš validator može biti bilo tko, čak i anonimna osoba, za njega možete glasati na isti način kao i za druge validatore (međutim, anonimnoj osobi će biti teško prikupiti glasove dionika za sebe, pa mi prepustit ću zastrašujuće priče o anonimnim kriptovalutama političarima) . Štoviše

Projektni tim ima zadatak - nekako u svoju mrežu ubaciti one koji će u budućnosti moći osigurati stabilan rad čvorova, razumjeti sigurnost, znati brzo rješavati probleme, surađivati ​​s drugim validatorima i djelovati zajedno - kvaliteta toga o tim kvalitetama u potpunosti ovisi token u koji će sudionici mreže uložiti svoje vrijeme i resurse. Adekvatni osnivači, kada procjenjuju rizike, dobro razumiju da ćete pri pokretanju softvera ove veličine svakako morati naići na greške u kodu i konfiguraciji čvorova, te da stabilnost mreže ovisi o tome koliko će dobro programeri i validatori zajednički riješiti takvih problema.

Tim je spreman glasati na glavnoj mreži za bilo koje validatore, samo da znaju koji su, koji su dobri? Najveći portfelj? Sada ga gotovo nitko nema. Na temelju Linkedin profila tima? Iskusni devops ili sigurnosni stručnjaci neće vam dati Linkedin profile. Prema izjavama u chatu, objavama i pomaganju drugima tijekom pripremne faze? Dobro, ali subjektivno i netočno.

U takvim uvjetima ostaje jedna stvar - nešto što dobro rješava svačije probleme - igra u kojoj će biti moguće odabrati najbolje validatore, ali glavna stvar je testirati blockchain na snagu i provesti potpuni borbeni test blockchain u uvjetima aktivne uporabe, promjene u konsenzusu, izgled i ispravak pogrešaka . Ovu su proceduru prvi put kao igru ​​predstavili dečki iz projekta Cosmos, a ova je ideja nedvojbeno izvrstan način da se mreža pripremi za lansiranje pouzdanog i otpornog na greške mainneta.

Igra validatora

Opisat ću igru ​​validatora onako kako smo je dizajnirali za DAO.Casino (DAOBet) blockchain temeljen na EOS forku, koji se zove Haya i ima sličan mehanizam upravljanja - validatori se biraju glasanjem s bilo kojeg računa, u kojem dijelu saldo koji se koristi za glasovanje za validatora je zamrznut. Svaki račun koji na svom saldu ima glavni BET token može glasovati za odabranog validatora bilo kojim dijelom svog salda. Glasovi se zbrajaju i na temelju rezultata izgrađuju se vrhunski validatori. U različitim blockchain-ovima ovaj proces je drugačije organiziran, i obično se u tom dijelu novi blockchain razlikuje od matičnog, i moram reći da u našem slučaju EOS u potpunosti opravdava “OS” u ​​svom nazivu, mi stvarno koristimo EOS kao osnovni operativni sustav za implementaciju modificirane verzije blockchaina za DAOBet zadatke.

Opisat ću pojedinačne probleme i kako se oni mogu riješiti unutar igre. Zamislimo mrežu u kojoj vaš poslužitelj može biti otvoreno napadnut, gdje kako biste zadržali poziciju validatora, trebate kontinuirano komunicirati s mrežom, promičući svoj validator i osiguravajući da proizvodi blokove i da se oni dostavljaju drugim validatorima na vremena, inače će validator biti izbačen s popisa.

Kako odabrati najbolje pobjednike?

Glavni tehnički zahtjev za igru ​​je da njezini rezultati budu javno provjerljivi. To znači da se rezultati igre: TOP pobjednici moraju formirati isključivo na temelju podataka koje svaki sudionik može provjeriti. U centraliziranom sustavu, mogli bismo mjeriti "uptime" svakog validatora i nagraditi one koji su bili najviše online ili su prošli kroz maksimalan mrežni promet. Možete prikupljati podatke o opterećenju procesora i memorije te nagraditi one koji su dobro radili. Ali svako takvo prikupljanje metrika znači postojanje centra za prikupljanje, a čvorovi su svi neovisni i mogu se ponašati kako žele i slati bilo koje podatke.

Stoga je prirodno rješenje da se pobjednici određuju na temelju podataka iz blockchaina, jer se pomoću njega može vidjeti koji je validator proizveo koji blok i koje su transakcije u njega uključene. Taj smo broj nazvali Validator Points (VP), a njihovo zarađivanje je glavni cilj validatora u igri. U našem slučaju, najjednostavnija, javno provjerljiva i učinkovita metrika "korisnosti" validatora je VP = broj blokova koje je validator proizveo u određenom vremenskom razdoblju.

Ovaj jednostavan izbor je zbog činjenice da upravljanje u EOS-u već nudi mnoge novonastale probleme, budući da je EOS nasljednik triju generacija stvarno funkcionalnih lanaca blokova s ​​velikim iskustvom u složenom upravljanju mrežom i gotovo svim problemima validatora s mrežom, procesorom, disk dovodi samo do jednog problema - potpisuje manje blokova, prima manju naplatu za rad, što nas opet jednostavno dovodi do broja potpisanih blokova - za EOS je to odlična i jednostavna opcija.

Za druge lance blokova način na koji se izračunavaju Validator bodovi može se razlikovati, na primjer, za konsenzuse temeljene na pBFT-u (Tendermint/Cosmos, Aura konsenzus iz Parity Substrate), gdje svaki blok mora potpisati više validatora, ima smisla računati pojedinačne validatore potpisi, a ne blokovi. Možda ima smisla uzeti u obzir nepotpune krugove konsenzusa, koji troše resurse drugih validatora, općenito to uvelike ovisi o vrsti konsenzusa.

Kako simulirati stvarne radne uvjete

Zadatak osnivača je testirati validatore u uvjetima bliskim realnosti, bez ikakve centralizirane kontrole. Ovaj se problem može riješiti korištenjem ugovora slavine, koji distribuira jednake količine glavnog tokena validatorima i svima ostalima. Da biste primili tokene na svoj saldo, trebate izraditi transakciju i osigurati da je mreža uključi u blok. Dakle, da bi pobijedio, validator mora stalno dopunjavati svoj saldo novim tokenima i glasati za sebe, promičući se na vrh. Ova aktivnost stvara konstantno opterećenje mreže, a parametri se mogu odabrati tako da tijek zahtjeva bude dovoljno jak za potpuni test mreže. Stoga unaprijed planirajte ugovor o slavini kao važnom alatu za pokretanje mreže i počnite unaprijed birati njezine parametre.

Zahtjev za tokene iz slavine i potvrđivanje glasova još uvijek ne oponaša u potpunosti rad bojne glave, posebno u ekstremno opterećenim modovima. Stoga će tim za blockchain ipak morati napisati dodatne referentne vrijednosti na ovaj ili onaj način kako bi opteretio mrežu. Posebnu ulogu u tome igraju posebno kreirani pametni ugovori koji omogućuju testiranje zasebnog podsustava. Za testiranje pohrane, ugovor pohranjuje nasumične podatke u blockchain, a za testiranje mrežnih resursa, testni ugovor zahtijeva veliku količinu ulaznih podataka, čime se povećava obujam transakcija - pokretanjem tijeka takvih transakcija u proizvoljnim točkama u vremenu, tim istovremeno testira stabilnost koda i snagu validatora.

Zaseban problem je ažuriranje koda čvorova i provođenje hard forkova. Potrebno je da u slučaju greške, ranjivosti ili dogovora zlonamjernih validatora, validatori trebaju imati akcijski plan koji je već razrađen u igri validatora. Ovdje možete smisliti sheme za prikupljanje VP-a za brzu primjenu hard forka, na primjer, kažnjavanjem svih validatora koji još nisu izveli novu verziju koda čvora, ali to je teško implementirati i komplicira izračun. Možete simulirati situaciju hitne uporabe hard forka umjetnim "razbijanjem" blockchaina na određenom bloku. Proizvodnja blokova prestaje, a na kraju će pobjednici biti oni koji prvi uskoče i počnu potpisivati ​​blokove, tako da VP na temelju broja potpisanih blokova ovdje dobro pristaje.

Kako obavijestiti sudionike o statusu mreže i popraviti pogreške

Unatoč nepovjerenju među validatorima, pravodobno dobivanje ažurnih informacija o stanju mreže je korisno za sve kako bi brže donosili odluke, pa projektni tim podiže servis za prikupljanje i vizualizaciju brojnih metrika s servera validatora, koji vam omogućuje da vidite situaciju istovremeno za cijelu mrežu, omogućujući vam da brzo odredite što se događa. Također, korisno je i za validatore i za projekt da projektni tim brzo ispravi pronađene pogreške, pa osim prikupljanja metrike, ima smisla odmah početi prikupljati zapisnike i podatke o greškama sa strojeva validatora na stroju dostupnom blockchainu programeri. Ovdje nikome ne ide u prilog iskrivljavanje informacija, stoga ove usluge razvija projektni tim i može im se vjerovati. Ima smisla prikupljati metriku sustava od validatora, a, naravno, najvažnija metrika samog blockchaina - za DAOBet - su vrijeme finalizacije i kašnjenje zadnjeg finaliziranog bloka. Zahvaljujući tome, tim uočava povećanje potrošnje memorije na čvorovima prilikom izvođenja referentne vrijednosti, probleme s pojedinačnim validatorima

Važne točke za provođenje validatorske igre

Kako se ispostavilo, ako želite službeno dopustiti validatorima da međusobno napadaju strojeve (neslužbeno to ionako mogu učiniti), trebate to zasebno zakonski formulirati kao sigurnosno testiranje, jer prema zakonima nekih zemalja DDoS ili mrežni napadi mogu biti kažnjen. Drugo važno pitanje je kako nagraditi validatore. Prirodne nagrade su projektni tokeni, koji će se prenijeti na mainnet, ali masovna distribucija tokena svakome tko je uspio pokrenuti čvor također nije najbolja opcija. Najvjerojatnije ćete morati balansirati između dvije ekstremne opcije:

Podijelite cijeli nagradni fond prema zarađenom VP-u
vrlo je demokratska i omogućuje zaradu svima koji su uložili vrijeme i resurse u igru ​​validatora
ali privlači nasumične ljude u igru ​​bez pripremljene infrastrukture

Podijelite najveći N nagradni fond validatorima na temelju rezultata igre
Pobjednici će najvjerojatnije biti validatori koji su najkonzistentnije izdržali tijekom igre i vrlo su čvrsto odlučni pobijediti
neki validatori neće htjeti sudjelovati, niske procjene njihovih šansi za pobjedu, posebno ako sudionici uključuju ugledne validatore

Koju opciju odabrati ovisi o vama

Postoji još jedna stvar - uopće nije činjenica da će deseci validatora požuriti sudjelovati u igri na vaš poziv, a od onih koji odluče pokušati, neće svi čak ni instalirati i pokrenuti čvor - obično, u ovoj fazi projekti imaju prilično oskudnu dokumentaciju, nailaze se na pogreške, a programeri koji rade pod vremenskim pritiskom ne odgovaraju brzo na pitanja. Stoga je prije pokretanja igre također potrebno predvidjeti radnje ako se ne postigne potreban broj validatora. U ovom slučaju, na početku igre, validatore koji nedostaju pokreće projektni tim, oni sudjeluju u konsenzusu, ali ne mogu biti pobjednici.

Zaključak

Zaključno, pokušao sam iz gore navedenog sastaviti popis onoga što treba osmisliti, napraviti i pokrenuti kako bi se učinkovito provela validatorska igra

Što trebate učiniti da pokrenete pravu validatorsku igru:
razvijte vlastiti blockchain :)

  • napraviti i podići web sučelje i osigurati CLI za glasovanje za validatore
  • pobrinite se da se metrika iz pokrenutog čvora validatora može poslati centraliziranoj usluzi (na primjer Prometheus)
  • podići poslužitelj za prikupljanje metrika (Prometheus + Grafana) za igru ​​validatora
  • shvatite kako će se izračunavati bodovi validatora (VP).
  • razviti javnu skriptu koja izračunava validator VP na temelju podataka iz blockchaina
  • razviti web sučelje za prikaz najboljih validatora i statusa validatora u igri (koliko je vremena ostalo do kraja, tko ima koliko VP-a, itd.)
  • razviti i automatizirati pokretanje proizvoljnog broja vlastitih čvorova, dizajnirati proces povezivanja validatora s igrom (kada i kako odspojiti svoje čvorove, poslati i ukloniti glasove za njih)
  • izračunati koliko tokena treba izdati i razviti ugovor o slavini
  • napravite referentnu skriptu (prijenosi tokena, velika upotreba pohrane, velika upotreba mreže)
  • okupite sve sudionike u jednom chatu za brzu komunikaciju
  • pokrenite blockchain nešto ranije od početka igre
  • pričekajte početni blok, započnite igru
  • testirajte mrežu s nekoliko vrsta transakcija
  • razvaljati tvrdu vilicu
  • promijeniti popis validatora
  • ponovite korake 13,14,15, XNUMX, XNUMX različitim redoslijedom, održavajući stabilnost mreže
  • čekati posljednji blok, završiti igru, brojati VP

Mora se reći da je igra validatora nova priča, a izvedena je svega par puta, tako da ovaj tekst ne biste trebali shvatiti kao gotov vodič. Nema analoga u suvremenom informatičkom poslovanju – zamislite da se banke, prije pokretanja sustava plaćanja, međusobno natječu tko će najbolje voditi transakcije klijenata. Tradicionalni pristupi vjerojatno vam neće pomoći u stvaranju velikih decentraliziranih mreža, stoga savladajte nove poslovne modele, pokrenite svoje igre, identificirajte one vrijedne, nagradite ih i održavajte svoje distribuirane sustave brzim i stabilnim radom.

Izvor: www.habr.com

Dodajte komentar