Šta je validatorska igra ili "kako pokrenuti blockchain dokaza o ulozima"

Dakle, vaš tim je završio alfa verziju vašeg blockchaina i vrijeme je da pokrenete testnet, a zatim mainnet. Imate pravi blockchain, sa nezavisnim učesnicima, dobar ekonomski model, sigurnost, dizajnirali ste upravljanje i sada je vrijeme da sve ovo isprobate na djelu. U idealnom kriptoanarhičnom svijetu, stavite genesis blok na mrežu, konačni kod čvora i sami validatori sve pokreću, podižu sve pomoćne usluge i sve se događa samo od sebe. Ali ovo je u izmišljenom 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 zasnovanih na konsenzusima tipa “proof-of-stake”, gdje se validatori određuju glasovima vlasnika sistemskih tokena, prilično je specifičan događaj, jer čak ni pokretanje tradicionalnih, centralno upravljanih sistema sa desetinama i stotinama servera nije lako zadatak sam po sebi, a blockchain treba pokrenuti uz trud lojalnih, ali nezavisnih sudionika. I, ako u korporaciji, po pokretanju, administratori imaju potpuni pristup svim mašinama, logovima, opštem nadzoru, onda validatori neće dozvoliti nikome da pristupe njihovim serverima i, najverovatnije, će radije da izgrade svoju infrastrukturu nezavisno, jer kontroliše pristup glavnim sredstvima validatora - ulozima glasača. Upravo takvo ponašanje omogućava izgradnju distribuiranih sigurnih mreža - neovisnost korištenih provajdera oblaka, virtualnih i "baremetalnih" servera, različitih operativnih sistema, sve to vam omogućava da napade na takvu mrežu učinite krajnje neefikasnim - previše različitim koristi se softver. Na primjer, Ethereum koristi dvije glavne implementacije čvora, u Go i u Rustu, a napad koji je efikasan za jednu implementaciju ne radi za drugu.

Stoga svi procesi za pokretanje i rad blockchaina moraju biti organizirani na način da svaki validator, ili čak mala grupa validatora, u svakom trenutku može baciti svoje računare kroz prozor i otići, dok se ništa ne smije pokvariti, a preostali validatori trebaju nastaviti djelotvorno podržavati operativnu mrežu i povezivati ​​nove validatore. Prilikom pokretanja mreže, kada je jedan validator u Evropi, drugi u Južnoj Americi, a treći u Aziji, prilično je teško postići koordiniran rad nekoliko desetina nezavisnih grupa i kao rezultat ih zainteresovati.

Validatori

Zamislimo pokretanje hipotetičkog modernog blockchaina (većina onoga što je opisano pogodno je za blockchaine bazirane na bilo kojoj modernoj porodici blockchaina: Ethereum, EOS, Polkadot, Cosmos i drugi, koji pružaju konsenzus o dokazima udjela. Glavni likovi takvi blockchaini su timovi validatora, angažovani na instaliranju sopstvenih nezavisnih servera koji validiraju i proizvode nove blokove, i primaju nagrade koje mreža obezbeđuje za one koji učestvuju u konsenzusu. Za pokretanje novih mreža potrebno je nekoliko desetina validatora (toliko ih sada može manje ili više efektivno postići konsenzus za nekoliko sekundi), pa projekt najavljuje registraciju, u kojoj validatori dijele javne podatke o sebi sa korisnicima, uvjeravajući ih da će pokrenutoj mreži pružiti kvalitetnu uslugu.

Validacija je posao koji vam omogućava da izuzetno precizno procenite potencijalne prihode validatora, brzo prenosite snagu između projekata, a ako je mreža koju je izabrao uspešna, validator može, kao punopravni učesnik u DAO-u i odgovorna osoba, razviti projekat, ili jednostavno pružiti odličnu tehničku uslugu za potpuno transparentan, pošteno zarađen novac. Prilikom izračunavanja nagrade za validatore, projekti pokušavaju da uzmu u obzir troškove validatora i da nagradu za blokove naprave tako da ovaj posao bude profitabilan, ali istovremeno ne dozvoljava validatorima da sruše privredu tako što će ih zatrpati novcem i lišavajući ga drugim korisnicima mreže.

Posao validatora zahtijeva osiguravanje visoke tolerancije na greške servisa, što podrazumijeva visok nivo obuke za devops i programere i skupe računarske resurse. Čak i bez potrebe za rudarenjem hashova u mrežama s dokazom rada, blockchain čvor je velika usluga koja zauzima puno memorije, troši puno kalkulacija, provjerava valjanost, upisuje na disk i šalje velike količine podataka u mrežu. . Za pohranjivanje dnevnika transakcija i blok lanaca za blockchain sa nekoliko hiljada malih transakcija u bloku, sada je potrebno skladište od 50 Gb ili više, a za blokove to mora biti SSD. Državna baza podataka blockchaina s podrškom za pametne ugovore već može premašiti 64Gb RAM-a. Serveri sa potrebnim karakteristikama su prilično skupi, Ethereum ili EOS čvor može koštati od 100 do 200 $ mjesečno. Dodajte ovome povećane plate za danonoćni rad programera i devopova, koji tokom perioda lansiranja rešavaju probleme čak i noću, pošto se neki validatori lako mogu locirati na drugoj hemisferi. Međutim, u pravim trenucima, posjedovanje čvora za validaciju može donijeti ozbiljan prihod (u slučaju EOS-a, do 10 dolara dnevno).

Validacija je samo jedna od novih potencijalnih IT uloga za poduzetnike i kompanije; kako programeri smišljaju sve sofisticiranije algoritme koji nagrađuju poštenje i kažnjavaju prijevare i krađe, pojavljuju se servisi koji obavljaju funkcije objavljivanja važnih podataka (proročišta), vršenja nadzora. (smanjivanje depozita i kažnjavanje varalica objavljivanjem dokaza o obmani), usluge rješavanja sporova, osiguranje i opcije, čak i odvoz smeća potencijalno je veliko tržište u sistemima pametnih ugovora gdje je potrebno platiti skladištenje podataka.

Problemi sa pokretanjem blockchaina

Otvorenost blockchaina, koja je omogućila računarima iz bilo koje zemlje da slobodno učestvuju u mreži i lakoća povezivanja bilo kog skriptnog klinca na mrežu prema uputstvima na GitHubu, nije uvijek prednost. Potraga za novim tokenom često prisiljava validatore da „iskopaju novi novčić 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 ko, č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, tako da mi' Strašne priče o anonimnim kriptovalutama ću ostaviti političarima). Ipak

Projektni tim ima zadatak – nekako ući u svoju mrežu one koji u budućnosti budu u stanju osigurati stabilan rad čvorova, razumjeti sigurnost, znati kako brzo rješavati probleme, sarađivati ​​s drugim validatorima i zajednički djelovati – kvaliteta toga mnogo toga u potpunosti zavisi od ovih kvaliteta tokena u koji će učesnici mreže uložiti svoje vreme i resurse. Adekvatni osnivači pri procjeni rizika dobro razumiju da ćete prilikom pokretanja softvera ove veličine sigurno morati naići na greške u kodu i konfiguraciji čvorova, te da stabilnost mreže ovisi o tome koliko će programeri i validatori zajednički riješiti takve probleme.

Tim je spreman da glasa na glavnoj mreži za sve validatore, samo da zna koji su, koji su dobri? Najveći portfolio? Sada ga skoro niko nema. Na osnovu Linkedin profila tima? Iskusni devops ili sigurnosni stručnjaci neće vam dati nikakve Linkedin profile. Prema izjavama u chatu, objavama i pomaganju drugima tokom pripremne faze? Dobro, ali subjektivno i netačno.

U takvim uvjetima ostaje jedno - nešto što dobro rješava svačije probleme - igra u kojoj će biti moguće odabrati najbolje validatore, ali glavno je testirati blockchain na snagu i provesti borbeni test pune razmjere blockchain u uvjetima aktivnog korištenja, promjena konsenzusa, pojava i ispravljanje grešaka. Ovu proceduru su kao igru ​​prvi predstavili momci iz projekta Cosmos, a ova ideja je nesumnjivo odličan način da se mreža pripremi za pokretanje pouzdane i otporne na greške mainneta.

Igra validatora

Opisaću igru ​​validatora onako kako smo je osmislili za DAO.Casino (DAOBet) blockchain baziran na EOS forku, koji se zove Haya i ima sličan mehanizam upravljanja - validatori se biraju glasanjem sa bilo kog naloga, na kojem je deo saldo korišten za glasanje za validatora je zamrznut. Svaki račun koji ima glavni BET token na svom saldu može glasati za odabranog validatora sa bilo kojim dijelom svog stanja. Glasovi se zbrajaju i na osnovu rezultata se izgrađuju najbolji validatori. U različitim blockchainima ovaj proces je različito organiziran i obično se upravo u tom dijelu novi blockchain razlikuje od roditeljskog, i moram reći da u našem slučaju EOS u potpunosti opravdava “OS” u ​​svom nazivu, mi zaista koristimo EOS kao osnovni operativni sistem za implementaciju modifikovane verzije blockchaina za DAOBet zadatke.

Opisaću pojedinačne probleme i kako se oni mogu riješiti unutar igre. Zamislimo mrežu u kojoj vaš server može biti otvoreno napadnut, gdje da biste zadržali poziciju validatora morate kontinuirano komunicirati s mrežom, promovirajući vaš validator i vodeći računa da on proizvodi blokove i da se oni isporučuju drugim validatorima na vrijeme, inače će validator biti izbačen sa liste.

Kako odabrati najbolje pobjednike?

Glavni tehnički zahtjev za igru ​​je da njeni rezultati budu javno provjerljivi. To znači da rezultati igre: TOP pobjednici, moraju biti formirani striktno na osnovu podataka koje svaki učesnik može provjeriti. U centralizovanom sistemu, mogli bismo da izmerimo „vreme rada“ svakog validatora i nagradimo one koji su bili na mreži najviše ili su prošli kroz maksimalan mrežni saobraćaj. Možete prikupiti podatke o opterećenju procesora i memorije i nagraditi one koji su dobro radili. Ali svaka takva zbirka metrike znači postojanje centra za prikupljanje, a svi čvorovi su nezavisni i mogu se ponašati kako žele i slati bilo koje podatke.

Stoga je prirodno rješenje da se pobjednici određuju na osnovu 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. Ovaj broj smo nazvali Validator Points (VP), a njihovo stjecanje je glavni cilj validatora u igri. U našem slučaju, najjednostavniji, lako javno provjerljiv i djelotvoran pokazatelj "korisnosti" validatora je VP = broj blokova koje je validator proizveo u datom vremenskom periodu.

Ovaj jednostavan izbor je zbog činjenice da upravljanje u EOS-u već nudi mnoge probleme koji se pojavljuju, budući da je EOS nasljednik tri generacije stvarno funkcionalnih blockchaina s velikim iskustvom u upravljanju složenom mrežom, i gotovo svim problemima validatora s mrežom, procesorom, disk dovodi do samo jednog problema - potpisuje manje blokova, prima manje plaćanja za rad, što nas opet jednostavno dovodi do broja potpisanih blokova - za EOS je ovo odlična i jednostavna opcija.

Za druge blockchaine, način na koji se izračunavaju bodovi validatora može se razlikovati, na primjer, za konsenzuse zasnovane na pBFT-u (Tendermint/Cosmos, Aura konsenzus sa paritetnog supstrata), gdje svaki blok mora biti potpisan od strane više validatora, ima smisla računati pojedinačni validator 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 uslove rada

Zadatak osnivača je da testira validatore u uslovima bliskim realnim, bez ikakve centralizovane kontrole. Ovaj problem se može riješiti korištenjem ugovora o slavini, koji distribuira jednake količine glavnog tokena validatorima i svima ostalima. Da biste primili tokene na svoje stanje, morate kreirati transakciju i osigurati da je mreža uključuje u blok. Dakle, da bi pobijedio, validator mora stalno dopunjavati svoj balans novim tokenima i glasati za sebe, promovišući se na vrh. Ova aktivnost stvara konstantno opterećenje na mreži, a parametri se mogu odabrati tako da protok zahtjeva bude dovoljno ozbiljan za potpuni mrežni test. Stoga unaprijed isplanirajte ugovor o slavini kao važnom alatu za pokretanje mreže i unaprijed počnite birati njegove parametre.

Zahtjev za tokene iz slavine i potvrđivanje glasova još uvijek ne oponaša u potpunosti rad bojeve glave, posebno u ekstremno opterećenim režimima. Stoga će blockchain tim i dalje morati pisati dodatna mjerila na ovaj ili onaj način kako bi učitao mrežu. Posebnu ulogu u tome imaju posebno kreirani pametni ugovori koji omogućavaju testiranje zasebnog podsistema. Za testiranje skladištenja, 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 obim transakcija - pokretanjem toka takvih transakcija u proizvoljnim vremenskim trenucima, tim istovremeno testira stabilnost koda i snagu validatora.

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

Kako obavijestiti učesnike o statusu mreže i popraviti greške

Unatoč nepovjerenju između validatora, blagovremeno primanje ažurnih informacija o stanju mreže svima je od koristi kako bi brže donosili odluke, pa projektni tim podiže servis za prikupljanje i vizualizaciju mnogih metrika sa servera validatora, što vam omogućava da vidite situaciju istovremeno za cijelu mrežu, omogućavajuć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 greške, tako da osim prikupljanja metrike, ima smisla odmah početi prikupljati logove i podatke o greškama sa mašina validatora na mašini dostupnoj blockchainu programeri. Ovdje nikome nije od koristi da iskrivljuje informacije, tako da ove usluge razvija projektni tim i njima se može vjerovati. Ima smisla prikupljati sistemske metrike od validatora, a, naravno, najvažnije metrike samog blockchaina - za DAOBet - su vrijeme finalizacije i kašnjenje posljednjeg finaliziranog bloka. Zahvaljujući tome, tim vidi povećanje potrošnje memorije na čvorovima pri pokretanju benchmark-a, probleme sa pojedinačnim validatorima

Važni bodovi za vođenje validatorske igre

Kako se ispostavilo, ako želite službeno dozvoliti validatorima da međusobno napadaju mašine (nezvanično oni to ionako mogu), morate to posebno formulirati kao sigurnosno testiranje, jer prema zakonima nekih zemalja DDoS ili mrežni napadi mogu biti kažnjen. Još jedno važno pitanje je kako nagraditi validatore. Prirodne nagrade su projektni tokeni, koji će biti prebačeni na glavnu mrežu, ali masovna distribucija tokena svima koji su uspjeli pokrenuti čvor također nije najbolja opcija. Najvjerovatnije ćete morati balansirati između dvije ekstremne opcije:

Raspodijelite cijeli nagradni fond prema zarađenom VP-u
vrlo je demokratski i omogućava svima koji su uložili vrijeme i resurse u validatorsku igru ​​da zarade novac
ali privlači nasumične ljude u igru ​​bez pripremljene infrastrukture

Podijelite top-N nagradni fond validatorima na osnovu rezultata igre
Pobjednici će najvjerovatnije biti validatori koji su najkonzistentnije izdržali tokom igre i koji su vrlo strogo odlučni u pobjedi
neki validatori neće htjeti sudjelovati, slabo procjenjujući svoje šanse za pobjedu, posebno ako sudionici uključuju poštovane validatore

Koju opciju da odaberete zavisi od vas

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

zaključak

U zaključku, pokušao sam da sastavim iz gore navedenog spisak onoga što treba smisliti, napraviti i pokrenuti da bi se efektivno vodila validatorska igra

Šta treba da uradite da pokrenete pravu igru ​​validatora:
razviti vlastiti blockchain :)

  • napraviti i podići web interfejs i obezbediti CLI za glasanje za validatore
  • pobrinite se da se metrika iz pokrenutog čvora validatora može poslati na centraliziranu uslugu (na primjer Prometheus)
  • podignite server za prikupljanje metrika (Prometheus + Grafana) za igru ​​validatora
  • shvatite kako će se izračunati bodovi validatora (VP).
  • razviti javnu skriptu koja izračunava VP validatora na osnovu podataka iz blockchaina
  • razviti web sučelje za prikaz najboljih validatora, i statusa igre validatora (koliko je vremena ostalo do kraja, ko ima koliko VP-a itd.)
  • razviti i automatizirati pokretanje proizvoljnog broja vlastitih čvorova, dizajnirati proces povezivanja validatora s igrom (kada i kako isključiti svoje čvorove, poslati i ukloniti glasove za njih)
  • izračunajte koliko tokena treba izdati i izradite ugovor o slavini
  • napravite benchmark skriptu (prijenos tokena, velika upotreba pohrane, velika upotreba mreže)
  • okupite sve učesnike u jednom chatu za brzu komunikaciju
  • pokrenite blockchain malo ranije od početka igre
  • sačekajte početni blok, započnite igru
  • testirati mrežu sa nekoliko vrsta transakcija
  • razvaljajte tvrdu viljušku
  • promijenite listu validatora
  • ponovite korake 13,14,15, XNUMX, XNUMX različitim redoslijedom, održavajući stabilnost mreže
  • sačekajte završni blok, završite igru, brojite VP

Mora se reći da je igra validatora nova priča, a izvedena je svega par puta, tako da ovaj tekst ne treba uzimati kao gotov vodič. U savremenom IT poslovanju nema analoga – zamislite da se banke, prije pokretanja platnog sistema, međusobno takmiče ko će biti najbolji u obavljanju transakcija klijenata. Malo je vjerovatno da će vam tradicionalni pristupi pomoći u stvaranju velikih decentraliziranih mreža, stoga ovladajte novim poslovnim modelima, pokrenite svoje igre, identificirajte one koji su dostojni, nagradite ih i održavajte svoje distribuirane sisteme da rade brzo i stabilno.

izvor: www.habr.com

Dodajte komentar