Çfarë është loja e validatorëve, ose “si të nisni një blockchain proof-of-stake”

Pra, ekipi juaj përfundoi versionin alpha të blockchain-it tuaj, dhe është koha për të nisur testnet-in dhe më pas mainnet-in. Keni një blockchain të vërtetë, me pjesëmarrës të pavarur, një model ekonomik të mirë, siguri, keni projektuar qeverisjen dhe tani është koha ta provoni gjithë këtë në praktikë. Në botën ideale të kripto-anarkizmit, ju e publikoni block-in e parë në rrjet, kodin përfundimtar të nodit dhe validuesit e nisin gjithçka vetë, ngrisin të gjitha shërbimet anësore dhe gjithçka ndodh vetvetiu. Por kjo është në një botë imagjinare, ndryshe nga realiteti, ekipi duhet të përgatisë shumë softuer ndihmës dhe manovrime të ndryshme për t'i ndihmuar validuesit të krijojnë një rrjet të qëndrueshëm. Ky është tema e këtij artikulli.

Nisja e rrjeteve mbi bazën e konsensusit të tipit "proof-of-stake", ku validuesit përcaktohen nga votat e mbajtësve të tokeneve të sistemit, është një aktivitet mjaft specifik, sepse madje edhe nisja e sistemeve tradicionale, të menaxhuara në mënyrë qendrore, me dhjetëra e qindra përfshin vetë një sfidë të vështirë. serverësh Një detyrë e tillë nuk është e thjeshtë, dhe blockchain-i duhet të niset me përpjekjet e pjesëmarrësve që janë besnikë, por të pavarur. Nëse, në një korporatë, gjatë nisjes administratorët kanë qasje të plotë në të gjitha makinat, log-et, monitorimin e përbashkët, atëherë validuesit nuk lejojnë askënd të hyjë në serverët e tyre dhe, me shumë gjasë, do të preferojnë të ndërtojnë infrastrukturën e tyre në mënyrë të pavarur, sepse ajo kontrollon qasjen në aktivat kryesore të validuesit - stake-t e votuesve. Kjo sjellje është ajo që lejon ndërtimin e rrjeteve të sigurta dhe të shpërndara - pavarësia e ofruesve të cloud, serverëve virtualë dhe "baremetal", sistemeve të ndryshme operative, e gjitha kjo e bën sulmet ndaj një rrjeti të tillë jashtëzakonisht të pamundura - shumë softuer të ndryshëm përdoret. Për shembull, në Ethereum përdoren dy implementime kryesore të nodit, në Go dhe në Rust, dhe një sulm efektiv për një implementim nuk funksionon për tjetrin.

Prandaj, të gjitha proceset për nisjen dhe funksionimin e bllokverjeve duhet të organizohen në një mënyrë që çdo validues, ose madje edhe një grup i vogël validuesish, mund të hidhnin kompjuterët e tyre nga dritarja në çdo moment dhe të largoheshin, pa asnjë problem, dhe validuesit e mbetur duhet të vazhdojnë të mbështesin efektivisht funksionimin e rrjetit dhe të lidhin validues të rinj. Gjatë nisjes së rrjetit, kur një validues ndodhet në Evropë, tjetri në Amerikën e Jugut dhe treti në Azi, arrijmë një funksionim të koordinuar të disa dhjetëra grupeve të pavarura dhe të angazhojmë ato në rezultate është mjaft e vështirë.

Validuesit

Le të imagjinojmë nisjen e një bllokverzi hipotezike moderne (një pjesë e madhe e përshkruar këtu është e përshtatshme për bllokverzët që janë të bazuar në çdo familje moderne bllokverzash: Ethereum, EOS, Polkadot, Cosmos dhe të tjera, në të cilat parashihet konsensusi proof-of-stake. Aktorët kryesorë të këtyre bllokverzave janë ekipet-validues, të cilat merren me vendosjen e serverave të tyre të pavarur, që validojnë dhe prodhojnë blloket e reja dhe marrin shpërblime të parashikuara nga rrjeti për ata që kontribuojnë në konsensus. Për të nisur rrjete të reja nevojiten disa dhjetëra validuesish (aq sa mund të arrijnë më ose më pak efektivisht konsensusin brenda disa sekondave), prandaj projekti shpall regjistrimin, ku validuesit ndajnë informacionin publik rreth vetes me përdoruesit, duke i bindur ata se planifikojnë të ofrojnë shërbim cilësor për rrjetin që po nis.

Validueshmëria është biznesi që lejon që të vlerësohet me saktësi potenciali i të ardhurave të një validuesi, të transferohet shpejt fuqia midis projekteve, dhe në rastin e suksesit të rrjetit të zgjedhur, një validues mund të zhvillojë projektin si një pjesëmarrës i plote në DAO dhe si një person përgjegjës, ose thjeshtë të ofrojë një shërbim teknik të shkëlqyer për para të fituara në mënyrë të transparencës. Gjatë llogaritjes së shpërblimeve për validuesit, projektet përpiqen të marrin parasysh shpenzimet e validuesve dhe të bëjnë shpërblimin për blloqet në një mënyrë që ky biznes të jetë fitimprurës, por në të njëjtën kohë të mos i lejojë validuesit të shkatërrojnë ekonominë duke i mbushur ata me para dhe duke privuar përdoruesit e tjerë të rrjetit.

Përfundimet e biznesit të validuesve kërkojnë ofrimin e një qëndrueshmërie të lartë të shërbimeve, që do të thotë - një nivel të lartë përgatitjeje të zhvilluesve dhe devopsëve, si dhe burime kompjuterike që nuk janë të lira. Edhe pa nevojën për të minuar hash në rrjetet proof-of-work, një nodë blockchain është një shërbim i madh që zë shumë memorie, konsumon shumë energji kompjuterike, valide, regjistron në disk dhe përcjell në rrjet volume të mëdha të të dhënave. Për ruajtjen e logut të transaksioneve dhe zinxhirëve të bllokëve për një blockchain me disa mijëra transaksione të vogla në bllok, aktualisht kërkohet një storage prej 50 Gb e më shumë, dhe për bllokët duhet të jetë SSD. Baza e të dhënave të shtetet të blockchain-eve që mbështesin kontratat inteligjente tashmë mund të kalojë 64Gb memorie të rastit. Serverët me karakteristika të nevojshme janë mjaft të shtrenjtë, një nodë Ethereum ose EOS mund të kushtojë nga 100 deri në 200 $/muaj. Shtoni në këtë pagesën e rritur për punën e zhvilluesve dhe devopsëve që, gjatë periudhës së nisjes, zgjidhin problemet edhe natën, pasi një pjesë e validuesve mund të jetë lehtësisht në hemisferën tjetër. Megjithatë, në momente të favorshme, posedimi i një nodë validuesi mund të sjellë të ardhura të konsiderueshme (në rastin e EOS - deri në 10,000$ në ditë).

Validimi është vetëm një nga rolet e reja potenciale të IT për sipërmarrësit dhe kompanitë, ndërsa programuesit po shpikim algoritme gjithnjë e më të sofistikuara, duke u dhënë çmime nderi dhe duke ndëshkuar mashtrimet dhe vjedhjet. Shërbimet që kryejnë funksionin e publikimit të të dhënave të rëndësishme (orakuj) po shfaqen, shërbime mbikëqyrëse (shkurtime depozitash dhe ndëshkimi i mashtruesve përmes publikimit të provave të mashtrimit), shërbime për zgjidhjen e mosmarrëveshjeve, sigurimeve dhe opsioneve, madje edhe mbledhja e mbeturinave është një treg potencialisht i madh në sistemet e kontratave inteligjente, ku është e nevojshme të paguhet për ruajtjen e të dhënave.

Problemet e nisjes së blockchain

Hapësira e hapur e blockchain-it, e cila bëri të mundur pjesëmarrjen e lirë në funksionimin e rrjetit të kompjuterave nga çdo vend dhe thjeshtësia e lidhjes në rrjet për çdo script kiddie sipas udhëzimeve në GitHub, nuk është gjithmonë një avantazh. Nxitja për një token të ri shpesh i detyron validuesit "të minojnë një monedhë të re në start", me shpresën për rritjen e çmimit dhe mundësinë për ta hequr shpejt atë që kanë fituar. Gjithashtu, kjo do të thotë se validuesi juaj mund të jetë kushdo, madje edhe anonim; për të mund të votohet ashtu si për validuesit e tjerë (ndonëse, për një anonim do të jetë e vështirë të mbledhë votat e aksionarëve, prandaj lëmë në politikë historitë e frikshme për kriptovalutat anonime). Megjithatë

Ekipi i projektit ka një detyrë — ndonjëherë të sigurojë në rrjetin e tij ata, që në të ardhmen mund të sigurojnë funksionimin e stabil të nodave, të njohin sigurinë, të jenë në gjendje të zgjidhin shpejt problemet, të bashkëpunojnë me validues të tjerë dhe të veprojnë së bashku — nga këto cilësi varet në plotni cilësia e atij token-i, në të cilin pjesëmarrësit e rrjetit kanë ndërmend të investojnë kohën dhe burimet e tyre. Fondatorët e arsyeshëm, duke vlerësuar rrezikun, e kuptojnë mirë se gjatë lansimit të një programi të tillë të madh, patjetër do të përballen me gabime në kod, konfigurimin e nodave, dhe se stabiliteti i rrjetit varet nga sa mirë zhvilluesit dhe validuesit do të zgjidhin këto probleme së bashku.

Ekipi është i gatshëm të votojë në mainnet për çdo validues; por do të ishte mirë të dinit se për kë, cilët janë të mirë? Atyre që kanë portofolin më të madh? Tani për tani pothuajse askush nuk e ka atë. Nga profiles në ekip në Linkedin? DevOps të përvojshëm ose ekspertë në siguri nuk do t'ju japin asnjë profil në Linkedin. Nga deklaratat në bisedë, postime dhe ndihmë për të tjerët në fazën e përgatitjes? E mira, por subjektive dhe e pasaktë.

Në këto kushte mbetet një gjë — ajo që zgjidh problemet e të gjithëve — një lojë, në të cilën do të jetë e mundur të zgjidhen validuesit më të mirë, por mbi të gjitha — të kontrollohet që blockchain-i është i fortë dhe të kryhet një test i plotë operacional i blockchain-it në kushte aktive përdorimi, ndryshimeve në konsensus, shfaqjes dhe rregullimit të gabimeve. Kjo procedurë u paraqit për herë të parë si një lojë nga ekipi i projektit Cosmos, dhe kjo ide pa dyshim është një mënyrë e shkëlqyer për të përgatitur rrjetin për lançimin e një mainnet-i të besueshëm dhe të qëndrueshëm.

Lojë e Validuesve

Do të përshkruaj lojën e validatorëve ashtu siç e kemi projektuar atë për blockchain DAO.Casino (DAOBet) bazuar në forkun EOS, i quajtur Haya, i cili ka një mekanizëm të ngjashëm qeverisës — validatorët zgjidhen me vota nga çdo llogari, në të cilën një pjesë e bilancit që votohet për validatorin ngritet. Çdo llogari që ka në bilancin e saj monedhën kryesore BET mund të votojë për validatorin e zgjedhur me çdo pjesë të bilancit të saj. Votat mblidhen dhe në përfundim përbëhet një listë e validatorëve kryesorë. Në blockchain të ndryshme, ky proces është organizuar në mënyra të ndryshme, dhe zakonisht në këtë pjesë një blockchain i ri ndryshon nga prindi, dhe, duhet thënë, që në rastin tonë, EOS plotësisht justifikon “OS” në emrin e tij, ne në të vërtetë e përdorim EOS si sistemin operativ bazë për të zhvilluar një version të modifikuar të blockchain-it për detyrat e DAOBet.

Do të përshkruaj probleme të veçanta dhe si mund të zgjidhen ato brenda lojës. Të imagjinojmë një rrjet, në të cilin serveri yt mund të sulmohet hapur, ku për të mbajtur pozicionin e validatorit duhet të ndërveprosh vazhdimisht me rrjetin, duke promovuar validatorin tënd dhe duke ndjekur që ai të prodhojë blloqe dhe ato të çohen në kohë te validatorët e tjerë, ndryshe, validatori do të përjashtohet nga lista.

Si të zgjidhni fituesit kryesorë?

Kërkesa kryesore teknike për lojën është që rezultatet e saj të jenë të verifikueshme publikisht. Kjo do të thotë se rezultatet e lojës: TOP fituesit, duhet të formohen strikt mbi të dhënat që çdo pjesëmarrës mund t'i verifikojë. Në një sistem të centralizuar, ne mund të masim “uptime”-in e çdo validatori dhe t'i shpërblejmë ata që kanë qenë më shumë online ose kanë kaluar maksimumin e trafikut rrjetor. Mund të mbledhim të dhëna mbi ngarkesën e procesorit, memories dhe t'i shpërblejmë ata që kanë punuar me dinjitet. Por çdo mbledhje e tillë e metrikave nënkupton ekzistencën e një qendre mbledhjeje, dhe nodet janë të pavarura dhe mund të sjellin veten siç dëshirojnë dhe të dërgojnë çdo të dhënë.

Prandaj, zgjidhja më e natyrshme është që fituesit të përcaktohen nga të dhënat e blockchain-it, pasi prej tij mund të shohim se cili nga validuesit ka prodhuar cilin bllok dhe cilat transaksione janë përfshirë atje. Ne e quajmë këtë numrin e Pikave të Validuesve (VP), dhe fitimi i tyre është objekti kryesor i validuesve në lojë. Në rastin tonë, metrika më e thjeshtë, e verifikueshme publikisht dhe efikase e 'përdorshmërisë' së një validuesi është VP = numri_i_blloqeve_të_produkuara_nga_validuesi në një periudhë të caktuar kohore.

Ky përzgjedhje e thjeshtë është e arsyeshme sepse qeverisja në EOS tashmë parashikon shumë nga problemet që shfaqen, për shkak se EOS është pasardhësi i tre brezave të blockchain-eve që funksionojnë realisht me një përvojë të madhe në menaxhimin kompleks të rrjetit, dhe pothuajse çdo problem i validuesit me rrjetin, procesorin, disqin çon vetëm në një problem — ai nënshkruan më pak blloqe, merr një pagesë më të vogël për punën e tij, çka na çon përsëri thjesht në numrin e blloqeve të nënshkruara — për EOS, kjo është një mundësi e shkëlqyer dhe e thjeshtë.

Në blockchain-e të tjera, mënyra e llogaritjes së Pikave të Validuesve mund të ndryshojë, për shembull për konsensuset e bazuara në pBFT (Tendermint/Cosmos, konsensusi Aura nga Parity Substrate), ku çdo bllok duhet të nënshkruhet nga shumë validues, ka kuptim të numërohen nënshkrimet e veçanta të validuesve, dhe ndoshta ka kuptim të merret në konsideratë raundet e pa përfunduar të konsensusit, të cilat shpenzojnë resurset e validuesve të tjerë, kështu që gjithçka varet shumë nga lloji i konsensusit.

Si të modelojmë kushtet reale të përdorimit

Detyra e themeluesve është të verifikojnë validatorët nën kushte që i ngjajnë realitetit, pa pasur kontroll të centralizuar. Ky problem mund të zgjidhet përmes një kontrate faucet, e cila shpërndan sasi të barabarta të tokenit kryesor për validatorët dhe të gjithë të interesuarit. Për të marrë tokenet në bilancin e saj, nevojitet të formohet një transaksion dhe të arrihet që rrjeti ta përfshijë atë në bllok. Në këtë mënyrë, për një validator që të fitojë, është e nevojshme të rifreskoni vazhdimisht bilancin e tij me tokena të rinj dhe të votojë për veten, duke e promovuar veten në majë. Kjo aktivitet krijon një ngarkesë të vazhdueshme në rrjet, dhe parametrat mund të rregullohen në mënyrë që fluksi i kërkesave të jetë mjaft i rëndësishëm për një test të plotë të rrjetit. Prandaj, planifikoni kontratën faucet paraprakisht, si një mjet të rëndësishëm për lançimin e rrjetit dhe filloni të përcaktoni parametrat e saj përpara se të filloni.

Kërkesa për tokena nga faucet dhe votimi i validatorëve megjithatë nuk e imiton plotësisht në mënyrë të ndershme funksionimin e BÇ, veçanërisht në mënyrat ekstremisht të ngarkuara. Prandaj, ekipi i bllokëve do të duhet, në një mënyrë ose një tjetër, të shkruajë benchmark të shtuar, që lejojnë ngarkimin e rrjetit. Një rol të veçantë në këtë e luajnë kontratat inteligjente të krijuara paraprakisht, që lejojnë testimin e një nën-sistemi të veçantë. Për testimin e ruajtjes, kontrata ruan të dhëna rastësore në bllokçin, dhe për të kontrolluar burimet e rrjetit, kontrata testuese kërkon një sasi të madhe të dhënash hyrëse, duke fryrë kështu volumin e transaksioneve — duke nisur një fluks të tillë transaksionesh në momente të rastit, ekipi në të njëjtën kohë teston stabilitetin e kodit dhe qëndrueshmërinë e validatorëve.

Një çështje e veçantë është përditësimi i kodit të nodave dhe krijimi i hardforqeve. Nevojitet që, në rast të shfaqjes së një problemi, një dobie, ose një marrëveshjeje të ligjshme midis validuesve, validuesit të kenë një plan veprimi, i cili është testi në lojën e validuesve. Këtu mund të mendohet për skema shpërblimi VP për përdorimin e shpejtë të hardforqeve, p.sh. duke ndëshkuar të gjithë validuesit që nuk e kanë përditësuar versionin e ri të kodit të nodës, por kjo është e vështirë për t'u realizuar, e komplikon llogaritjen. Simulimi i një situate emergjente të përdorimit të hardforqeve mund të bëhet duke

Si të informoni pjesëmarrësit për gjendjen e rrjetit dhe të rregulloni gabimet

Megjithëse ka mosbesim midis validuesve, marrja në kohë e informacionit të saktë mbi gjendjen e rrjetit është e dobishme për të gjithë, për të marrë vendime më shpejt, prandaj ekipi i projektit ngre shërbimin për mbledhjen dhe vizualizimin e shumë metrike nga serverët e validuesve, i cili lejon të shohim situatën njëkohësisht për të gjithë rrjetin, duke lejuar të përcaktojmë shpejt se çfarë po ndodh. Gjithashtu, është e dobishme për validuesit dhe projektin që ekipi i projektit të rregullojë shpejt gabimet e gjetura, prandaj, përveç mbledhjes së metrikeve, ka kuptim të nisni menjëherë mbledhjen e skedarëve log dhe të dhënave mbi gabimet nga makinat e validuesve në një makinë që është e aksesueshme për zhvilluesit e blockchain-it. Këtu askush nuk ka interes të deformojë informacionin, prandaj këto shërbime ngrihen nga ekipi i projektit dhe mund të besohen. Ka kuptim të mbledhim metrikat sistemike nga validuesit dhe, patjetër, metrikat më të rëndësishme të vetë blockchain-it — për DAOBet — është koha e përfundimit dhe vonesa e bllokut të fundit të finalizuar. Falë kësaj, ekipi sheh rritjen e konsumit të memories në nodat kur nis bencmarkun, problemet e disa validuesve

Çështje të rëndësishme mbi zhvillimin e lojës së validuesve

Si duket, nëse dëshironi që të autorizoni zyrtarisht validuesit të sulmojnë njëri-tjetrin (në mënyrë jozyrtare ata tashmë mund ta bëjnë këtë) - duhet ta formuloni këtë ndarazi si testim të sigurisë, sepse sipas ligjeve të disa vendeve, sulmet DDoS ose sulmet në rrjet mund të sjellin ndëshkime. Një tjetër çështje e rëndësishme është se si të shpërblehen validuesit. Ndihmat natyrale janë tokenat e projektit, të cilat do të transferohen në mainnet, por shpërndarja masive e tokenave për çdo person që mund të nisë një nodë - gjithashtu nuk është një mundësi e mirë. Shumë të ngjarë, do t'ju duhet të balanconi mes dy ekstremesh:

Të shpërndani të gjithë fondin e shpërblimit në përputhje me VP të fituara
kjo është shumë demokratike dhe lejon të fitojnë të gjithë ata që kanë investuar kohë dhe burime në lojën e validuesve
por tërheq në lojë njerëz rastësorë pa një infrastrukturë të përgatitur

Të shpërndani fondin e shpërblimit top-N validuesve sipas rezultateve të lojës
fituesit shumë mirë mund të jenë validuesit që kanë qëndruar më stabilisht gjatë lojës, shumë të përqendruar në fitore
disa validues nuk do të duan të marrin pjesë, duke e vlerësuar ulët mundësinë e tyre për të fituar, veçanërisht nëse në përbërje janë validues të njohur

Cili variant të preferoni - është në duar tuaja

Ka edhe një moment tjetër - nuk është aspak fakt se dhjetëra validues do të përpiqen të marrin pjesë në lojë sipas thirrjes tuaj, dhe nga ata që vendosin të provojnë, jo të gjithë madje do të instalojnë dhe nisin një nodë - zakonisht në këtë fazë dokumentacioni i projekteve është mjaft i varfër, hasen gabime, dhe zhvilluesit që punojnë në kohë të ngjeshur nuk përgjigjen shumë shpejt në pyetje. Prandaj, para nisjes së lojës duhet gjithashtu të parashikohen veprimet nëse numri i duhur i validuesve nuk arrin. Në këtë rast, në fillim të lojës, validuesit e munguar nisen nga ekipi i projektit, marrin pjesë në konsensus, por nuk mund të jenë fitues.

Përfundim

Në përfundim, kam përpiquar të mbledh një listë të asaj që nevojitet të krijojmë, realizojmë dhe nisnim për një zhvillim efektiv të lojës së validuesve

Çfarë nevojitet për të nisur një lojë të vërtetë validuesish:
të zhvilloni blockchain-in tuaj 🙂

  • të krijoni dhe ngrini një ndërfaqe web dhe të ofroni CLI për të votuar për validuesit
  • të bëni që metrikat nga nodi i verifikuesit të nisur të dërgohen në një shërbim të centralizuar (p.sh. Prometheus)
  • ngritni serverin e mbledhjes së metrikave (Prometheus + Grafana) për lojën e verifikuesve
  • të mendoni se si do të llogariten Pikat e Verifikuesve (VP)
  • të zhvilloni një skript publik që llogarit VP-në e verifikuesit në bazë të të dhënave nga blockchain
  • të zhvilloni një ndërfaqe web për të shfaqur top-in e verifikuesve, dhe gjendjen e lojës së verifikuesve (sa kohë ka mbetur deri në fund, kush ka sa VP dhe tjerë)
  • të zhvilloni dhe automatizoni nisjen e një numri të pakufizuar nodash të veta, të projektone procesin e lidhjes së verifikuesve me lojën (kur dhe si të çaktivizojnë nodat e veta, të japin dhe të heqin votat për to)
  • të llogaritet se sa duhet të shpërndahen token-ët dhe të zhvillohet një kontratë-faucet
  • të bëni një skript benchmark (transferime token-s, përdorim masiv të storage, përdorim masiv të rrjetit)
  • të mblidhen të gjithë pjesëmarrësit në një chat për komunikim të shpejtë
  • të nisin blockchain-in pak më herët se fillimi i lojës
  • të presin bllokun fillestar, të nisin lojën
  • të testojnë rrjetin me disa lloje transaksionesh
  • të realizojnë një hard fork
  • të ndryshojnë listën e verifikuesve
  • të ripërsërisin p.13,14,15 në rend të ndryshëm, duke mbështetur stabilitetin e rrjetit
  • të presin bllokun përfundimtar, të përfundojnë lojën, të llogarisin VP

Duhet thënë se lojmari i verifikuesve është një histori e re, dhe është zhvilluar vetëm disa herë, prandaj nuk është e arsyeshme ta perceptoni këtë tekst si një udhëzues të gatshëm. Nuk ka asnjë analogji në biznesin modern të IT - imagjinoni se bankat para nisjes së sistemit të pagesave konkurrojnë me njëra-tjetrën, kush do të jetë më i miri në realizimin e transaksioneve të klientëve. Qasjet tradicionale ndoshta nuk do t'ju ndihmojnë të krijoni rrjeta të mëdha të decentralizuara, kështu që mësoni modele të reja biznesi, organizoni lojërat tuaja, përcaktoni ata që meritojnë, shpërbleni ata dhe lejoni që sistemet tuaja të shpërndara të funksionojnë me shpejtësi dhe stabilitet.

Burimi: habr.com

Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS 🔥 Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS | ProHoster