Ce este un joc validator sau „cum se lansează un blockchain cu dovadă de miză”

Deci, echipa ta a terminat versiunea alfa a blockchain-ului tău și este timpul să lansezi testnet și apoi mainnet. Ai un blockchain adevărat, cu participanți independenți, un model economic bun, securitate, ai proiectat guvernanța și acum este timpul să încerci toate acestea în acțiune. Într-o lume cripto-anarhică ideală, pui blocul geneză în rețea, codul final al nodului și validatorii înșiși lansează totul, ridică toate serviciile auxiliare și totul se întâmplă de la sine. Dar acest lucru este într-o lume fictivă, dar în lumea reală, echipa trebuie să pregătească destul de mult software auxiliar și diverse manipulări pentru a ajuta validatorii să lanseze o rețea stabilă. Despre acest articol este vorba.

Lansarea rețelelor bazate pe consensuri de tip „dovadă de miză”, în care validatorii sunt determinați de voturile deținătorilor de token-uri de sistem, este un eveniment destul de specific, deoarece nici măcar lansarea sistemelor tradiționale, gestionate centralizat, cu zeci și sute de servere, nu este un lucru ușor. sarcina în sine, iar blockchain-ul trebuie început cu efort participanți loiali, dar independenți. Și, dacă într-o corporație, la pornire, administratorii au acces deplin la toate mașinile, jurnalele, monitorizarea generală, atunci validatorii nu vor permite nimănui să-și acceseze serverele și, cel mai probabil, vor prefera să-și construiască infrastructura independent, deoarece controlează accesul. la principalele active ale validatorului - mize alegătorilor. Acest comportament face posibilă construirea de rețele securizate distribuite - independența furnizorilor de cloud utilizați, servere virtuale și „baremetal”, sisteme de operare diferite, toate acestea vă permit să faceți atacurile asupra unei astfel de rețele extrem de ineficiente - prea diferite. se utilizează software-ul. De exemplu, Ethereum folosește două implementări de noduri principale, în Go și în Rust, iar un atac care este eficient pentru o implementare nu funcționează pentru cealaltă.

Prin urmare, toate procesele de lansare și operare a blockchain-urilor trebuie să fie organizate în așa fel încât orice validator, sau chiar un grup mic de validatori, să-și poată în orice moment să-și arunce computerele pe fereastră și să plece, în timp ce nimic nu ar trebui să se spargă, iar validatorii rămași ar trebui să să continue să sprijine eficient rețeaua de operare și să conecteze noi validatori. La lansarea unei rețele, când un validator se află în Europa, al doilea în America de Sud și al treilea în Asia, este destul de dificil să se realizeze munca coordonată a câtorva zeci de grupuri independente și, ca urmare, să le intereseze.

Validatori

Să ne imaginăm lansarea unui ipotetic blockchain modern (majoritatea din ceea ce este descris este potrivit pentru blockchain-uri bazate pe orice familie modernă de blockchain: Ethereum, EOS, Polkadot, Cosmos și altele, care oferă un consens proof-of-stake. Personajele principale ale astfel de blockchain-uri sunt echipe de validatori , angajate în instalarea propriilor servere independente care validează și produc noi blocuri și primesc recompense oferite de rețea pentru cei care participă la consens. Pentru a lansa noi rețele, sunt necesare câteva zeci de validatori (atât de mulți pot acum ajunge la un consens mai mult sau mai puțin eficient în câteva secunde), așa că proiectul anunță înregistrarea, în care validatorii împărtășesc informații publice despre ei înșiși cu utilizatorii, convingându-i că vor oferi servicii de înaltă calitate rețelei lansate.

Validarea este o afacere care vă permite să evaluați extrem de precis venitul potențial al validatorului, să transferați rapid puterea între proiecte și, dacă rețeaua pe care a ales-o are succes, validatorul poate, în calitate de participant cu drepturi depline la DAO și de persoană responsabilă, dezvolta proiectul sau pur și simplu oferi un serviciu tehnic excelent pentru bani complet transparenți, câștigați în mod onest. Atunci când calculează recompensa pentru validatori, proiectele încearcă să țină cont de costurile validatorilor și să facă recompensa pentru blocuri astfel încât această afacere să fie profitabilă, dar în același timp să nu permită validatorilor să doboare economia, inundându-i cu bani și privând alți utilizatori de rețea de aceasta.

Afacerea validatorilor necesită asigurarea unei toleranțe ridicate la erori a serviciilor, ceea ce înseamnă un nivel ridicat de pregătire pentru devopți și dezvoltatori și resurse de calcul costisitoare. Chiar și fără a fi nevoie de a extrage hashuri în rețelele de dovadă de lucru, un nod blockchain este un serviciu mare care ocupă multă memorie, consumă multe calcule, validează, scrie pe disc și trimite cantități mari de date în rețea . Pentru a stoca jurnalele de tranzacții și lanțurile de blocuri pentru un blockchain cu câteva mii de tranzacții mici într-un bloc, acum este necesară stocarea de 50 Gb sau mai mult, iar pentru blocuri trebuie să fie un SSD. Baza de date de stat a blockchain-urilor cu suport pentru contracte inteligente poate depăși deja 64 Gb de RAM. Serverele cu caracteristicile necesare sunt destul de scumpe; un nod Ethereum sau EOS poate costa de la 100 la 200 USD/lună. Adăugați la aceasta salariile crescute pentru munca non-stop a dezvoltatorilor și devopilor, care în perioada de lansare rezolvă probleme chiar și noaptea, deoarece unii validatori pot fi localizați cu ușurință în altă emisferă. Cu toate acestea, la momentele potrivite, deținerea unui nod validator poate aduce venituri serioase (în cazul EOS, până la 10 USD pe zi).

Validarea este doar unul dintre noile roluri IT potențiale pentru antreprenori și companii; pe măsură ce programatorii vin cu algoritmi din ce în ce mai sofisticați care răsplătesc onestitatea și pedepsesc frauda și furtul, apar servicii care îndeplinesc funcțiile de publicare a datelor importante (oracole), efectuarea de supraveghere. (reducerea depozitelor și pedepsirea trișorilor prin publicarea dovezilor de înșelăciune), servicii de soluționare a litigiilor, asigurări și opțiuni, chiar și colectarea gunoiului este o piață potențial mare în sistemele de contracte inteligente în care este necesar să se plătească pentru stocarea datelor.

Probleme de lansare a unui blockchain

Deschiderea blockchain-ului, care a făcut posibil ca computerele din orice țară să participe liber la rețea și ușurința de a conecta orice copil cu script la rețea conform instrucțiunilor de pe GitHub, nu este întotdeauna un avantaj. Căutarea unui nou token îi obligă adesea pe validatori să „mineze o monedă nouă la început”, în speranța că rata va crește și oportunitatea de a-și pierde rapid câștigurile. De asemenea, acest lucru înseamnă că validatorul dumneavoastră poate fi oricine, chiar și o persoană anonimă, puteți vota pentru el în același mod ca și pentru alți validatori (cu toate acestea, va fi dificil pentru o persoană anonimă să colecteze pentru el însuși voturile părților interesate, așa că noi" Voi lăsa politicienilor poveștile înfricoșătoare despre criptomonede anonime). cu toate acestea

Echipa de proiect are o sarcină - să intre cumva în rețeaua sa pe cei care în viitor sunt capabili să asigure funcționarea stabilă a nodurilor, să înțeleagă securitatea, să știe să rezolve rapid problemele, să coopereze cu alți validatori și să acționeze împreună - calitatea acesteia foarte mult depinde pe deplin de aceste calități, un simbol în care participanții rețelei își vor investi timpul și resursele. Fondatorii adecvați, atunci când evaluează riscurile, înțeleg bine că la lansarea unui software de această dimensiune, cu siguranță va trebui să întâmpinați erori în codul și configurația nodurilor și că stabilitatea rețelei depinde de cât de bine vor rezolva împreună dezvoltatorii și validatorii. astfel de probleme.

Echipa este pregătită să voteze pe rețeaua principală pentru orice validatori, doar pentru a ști care, care sunt buni? Cel mai mare portofoliu? Aproape nimeni nu o are acum. Pe baza profilurilor Linkedin ale echipei? Devopii cu experiență sau specialiști în securitate nu vă vor oferi niciun profil Linkedin. Conform declarațiilor din chat, postări și ai ajuta pe alții în faza de pregătire? Bun, dar subiectiv și inexact.

În astfel de condiții, rămâne un lucru - ceva care rezolvă bine problemele tuturor - un joc în care va fi posibil să selectați cei mai buni validatori, dar principalul lucru este să testați blockchain-ul pentru rezistență și să efectuați un test de luptă la scară largă a blockchain în condiții de utilizare activă, modificări ale consensului, apariția și corectarea erorilor. Această procedură a fost prezentată pentru prima dată ca un joc de către băieții din proiectul Cosmos, iar această idee este, fără îndoială, o modalitate excelentă de a pregăti rețeaua pentru lansarea unei rețele principale fiabile și tolerante la erori.

Jocul Validatorilor

Voi descrie jocul validatorilor așa cum l-am proiectat pentru blockchain-ul DAO.Casino (DAOBet) bazat pe EOS fork, care se numește Haya și are un mecanism de guvernare similar - validatorii sunt aleși prin vot din orice cont, în care parte din soldul folosit pentru a vota validatorul este înghețat. Orice cont care are jetonul BET principal pe sold poate vota pentru validatorul selectat cu orice parte a soldului său. Voturile sunt însumate și validatorii de top sunt construiți pe baza rezultatelor. În diferite blockchain-uri, acest proces este organizat diferit și, de obicei, în această parte noul blockchain diferă de cel părinte și trebuie să spun că în cazul nostru, EOS justifică pe deplin „OS” în numele său, cu adevărat folosim EOS. ca sistem de operare de bază pentru implementarea unei versiuni modificate a blockchain-ului pentru sarcini DAOBet.

Voi descrie probleme individuale și cum pot fi rezolvate în cadrul jocului. Să ne imaginăm o rețea în care serverul tău poate fi atacat în mod deschis, unde pentru a menține poziția unui validator trebuie să interacționezi continuu cu rețeaua, promovându-ți validatorul și asigurându-te că acesta produce blocuri și acestea sunt livrate altor validatori pe timp, altfel validatorul va fi scos din listă.

Cum să alegi cei mai buni câștigători?

Principala cerință tehnică pentru joc este ca rezultatele acestuia să fie verificabile public. Aceasta înseamnă că rezultatele jocului: TOP câștigători, trebuie formate strict pe baza unor date care pot fi verificate de orice participant. Într-un sistem centralizat, am putea măsura „uptime”-ul fiecărui validator și îi recompensăm pe cei care au fost online cel mai mult sau au trecut prin traficul maxim de rețea. Puteți colecta date despre încărcarea procesorului și a memoriei și îi puteți recompensa pe cei care au lucrat bine. Dar orice astfel de colecție de metrici înseamnă existența unui centru de colectare, iar nodurile sunt toate independente și se pot comporta așa cum doresc și pot trimite orice date.

Prin urmare, soluția naturală este ca câștigătorii să fie determinați pe baza datelor din blockchain, deoarece poate fi folosit pentru a vedea ce validator a produs ce bloc și ce tranzacții au fost incluse în acesta. Am numit acest număr Validator Points (VP), iar câștigarea acestora este obiectivul principal al validatorilor din joc. În cazul nostru, cea mai simplă, ușor de verificat public și eficientă măsură a „utilității” unui validator este VP = numărul de blocuri produse de validator într-o anumită perioadă de timp.

Această alegere simplă se datorează faptului că guvernarea în EOS oferă deja multe probleme emergente, deoarece EOS este moștenitorul a trei generații de blockchain-uri care funcționează efectiv, cu o experiență vastă în managementul rețelelor complexe și aproape orice probleme de validare cu rețea, procesor, disc duce la o singură problemă - el semnează mai puține blocuri, primește mai puțină plată pentru lucrare, ceea ce din nou ne duce pur și simplu la numărul de blocuri semnate - pentru EOS aceasta este o opțiune excelentă și simplă.

Pentru alte blockchain-uri, modul în care sunt calculate Punctele de validare poate diferi, de exemplu, pentru consensurile bazate pe pBFT (Tendermint/Cosmos, Aura consensus de la Parity Substrate), în care fiecare bloc trebuie să fie semnat de mai mulți validatori, este logic să contați validatorul individual. semnături mai degrabă decât blocuri.Ar putea avea sens să se ia în considerare rundele de consens incomplete, care irosesc resursele altor validatori, în general, acest lucru depinde foarte mult de tipul de consens.

Cum se simulează condițiile reale de funcționare

Sarcina fondatorilor este de a testa validatorii în condiții apropiate de realitate, fără a avea niciun control centralizat. Această problemă poate fi rezolvată folosind un contract de robinet, care distribuie cantități egale din simbolul principal validatorilor și tuturor celorlalți. Pentru a primi jetoane pe soldul dvs., trebuie să creați o tranzacție și să vă asigurați că rețeaua o include în bloc. Astfel, pentru a câștiga, un validator trebuie să-și umple constant echilibrul cu noi jetoane și să se voteze pentru el însuși, promovându-se în vârf. Această activitate creează o încărcare constantă în rețea, iar parametrii pot fi selectați astfel încât fluxul de solicitări să fie suficient de sever pentru un test complet al rețelei. Prin urmare, planificați în avans contractul de robinet ca un instrument important pentru lansarea rețelei și începeți să selectați parametrii acesteia în avans.

Solicitarea de jetoane de la un robinet și validarea voturilor încă nu emulează pe deplin funcționarea unui focos, mai ales în moduri extrem de încărcate. Prin urmare, echipa blockchain va trebui în continuare să scrie benchmark-uri suplimentare într-un fel sau altul pentru a încărca rețeaua. Un rol special în acest sens îl au contractele inteligente create special, care permit testarea unui subsistem separat. Pentru a testa stocarea, contractul stochează date aleatorii în blockchain, iar pentru a testa resursele rețelei, contractul de testare necesită o cantitate mare de date de intrare, umflând astfel volumul tranzacțiilor - prin lansarea unui flux de astfel de tranzacții în momente arbitrare, echipa testează simultan stabilitatea codului și puterea validatorilor.

O problemă separată este actualizarea codului nodurilor și efectuarea hard fork-urilor. Este necesar ca, în cazul unei erori, a unei vulnerabilități sau a unei coliziuni a validatorilor rău intenționați, validatorii să aibă un plan de acțiune care a fost deja elaborat în jocul validatorilor. Aici puteți veni cu scheme pentru acumularea VP pentru aplicarea rapidă a unui hard fork, de exemplu, amendând toți validatorii care nu au lansat încă o nouă versiune a codului nodului, dar acest lucru este dificil de implementat și complică calculul. Puteți simula situația unei utilizări de urgență a unui hard furk prin „ruperea” artificială a blockchain-ului pe un anumit bloc. Producția de blocuri se oprește, iar în cele din urmă câștigătorii vor fi cei care sar primii și încep să semneze blocuri, așa că VP bazat pe numărul de blocuri semnate se potrivește bine aici.

Cum să informați participanții despre starea rețelei și cum să remediați erorile

În ciuda neîncrederii dintre validatori, primirea la timp a informațiilor actualizate despre starea rețelei este benefică pentru toată lumea pentru a lua decizii mai rapid, astfel încât echipa de proiect ridică un serviciu de colectare și vizualizare a multor metrici de pe serverele de validare, care vă permite să vedeți simultan situația pentru întreaga rețea, permițându-vă să determinați rapid ce se întâmplă. De asemenea, este benefic atât pentru validatori, cât și pentru proiect, ca echipa de proiect să corecteze rapid erorile găsite, așa că, pe lângă colectarea de valori, este logic să începeți imediat colectarea jurnalelor și a datelor de eroare de la mașinile validatorilor pe o mașină accesibilă pentru blockchain. dezvoltatori. Aici, nu este benefic pentru nimeni să distorsioneze informațiile, așa că aceste servicii sunt dezvoltate de echipa de proiect și pot fi de încredere. Are sens să colectăm valori de sistem de la validatori și, desigur, cele mai importante valori ale blockchain-ului în sine - pentru DAOBet - sunt timpul de finalizare și decalajul ultimului bloc finalizat. Datorită acestui fapt, echipa vede o creștere a consumului de memorie pe noduri atunci când rulează benchmark-ul, probleme cu validatorii individuali

Puncte importante pentru desfășurarea unui joc de validare

După cum se dovedește, dacă doriți să permiteți oficial validatorilor să-și atace mașinile unul altuia (neoficial, oricum pot face acest lucru), trebuie să formulați acest lucru separat ca testare de securitate, deoarece, în conformitate cu legile unor țări, atacurile DDoS sau de rețea pot fi pedepsit. O altă problemă importantă este cum să recompensezi validatorii. Premiile naturale sunt jetoane de proiect, care vor fi transferate pe rețeaua principală, dar o distribuție masivă de jetoane către oricine a reușit să lanseze un nod nu este, de asemenea, cea mai bună opțiune. Cel mai probabil va trebui să echilibrați între două opțiuni extreme:

Distribuiți întregul fond de premii în funcție de VP-ul câștigat
este foarte democratic și permite tuturor celor care au investit timp și resurse în jocul validator să câștige bani
dar atrage oameni la întâmplare la joc fără infrastructură pregătită

Distribuiți fondul de premii de top N către validatori pe baza rezultatelor jocului
Câștigătorii vor fi cel mai probabil validatorii care au rezistat cel mai constant în timpul jocului și sunt foarte strict hotărâți să câștige
unii validatori nu vor dori să participe, evaluând scăzut șansele lor de câștig, mai ales dacă participanții includ validatori venerabili

Ce opțiune să alegi depinde de tine

Mai există un punct - nu este deloc un fapt că zeci de validatori se vor grăbi să participe la joc la apelul tău, iar dintre cei care decid să încerce, nu toți chiar vor instala și lansa nodul - de obicei, în această etapă, proiectele au documentație destul de rară, se întâlnesc erori, iar dezvoltatorii care lucrează sub presiunea timpului nu răspund la întrebări foarte repede. Prin urmare, înainte de lansarea jocului, este necesar să se prevadă și acțiuni dacă nu este atins numărul necesar de validatori. În acest caz, la începutul jocului, validatorii lipsă sunt lansați de echipa de proiect, participă la consens, dar nu pot fi câștigători.

Concluzie

În concluzie, am încercat să alcătuiesc din cele de mai sus o listă cu ceea ce trebuie gândit, realizat și lansat pentru a desfășura eficient un joc de validare

Ce trebuie să faceți pentru a rula un joc de validare real:
dezvolta-ti propriul blockchain :)

  • creați și ridicați o interfață web și furnizați un CLI pentru votarea validatorilor
  • asigurați-vă că valorile de la un nod validator care rulează pot fi trimise la un serviciu centralizat (de exemplu, Prometheus)
  • ridicați un server de colectare de valori (Prometheus + Grafana) pentru jocul validator
  • aflați cum vor fi calculate punctele de validare (VP).
  • dezvolta un script public care calculează validatorul VP pe baza datelor din blockchain
  • dezvolta o interfață web pentru a afișa validatorii de top și starea jocului a validatorilor (cât timp mai rămâne până la sfârșit, cine are cât VP etc.)
  • dezvoltați și automatizați lansarea unui număr arbitrar de noduri proprii, proiectați procesul de conectare a validatorilor la joc (când și cum să vă deconectați nodurile, trimiteți și eliminați voturi pentru ele)
  • calculați câte jetoane trebuie emise și dezvoltați un contract de robinet
  • faceți un script de referință (transferuri de token, utilizare masivă a stocării, utilizare masivă a rețelei)
  • reuniți toți participanții într-un singur chat pentru o comunicare rapidă
  • lansați blockchain-ul puțin mai devreme decât începerea jocului
  • așteptați blocul de start, începeți jocul
  • testați rețeaua cu mai multe tipuri de tranzacții
  • întinde o furculiță tare
  • modifica lista validatorilor
  • repetați pașii 13,14,15, XNUMX, XNUMX în ordine diferite, menținând stabilitatea rețelei
  • așteptați blocul final, terminați jocul, numărați VP

Trebuie spus că jocul validatorilor este o poveste nouă și a fost realizat doar de câteva ori, așa că nu ar trebui să luați acest text ca pe un ghid gata făcut. Nu există analogi în domeniul IT modern - imaginați-vă că băncile, înainte de a lansa un sistem de plată, concurează între ele pentru a vedea cine va fi cel mai bun la efectuarea tranzacțiilor cu clienții. Este puțin probabil ca abordările tradiționale să vă ajute să creați rețele descentralizate mari, așa că stăpâniți noi modele de afaceri, rulați jocurile, identificați-le pe cele demne, recompensați-le și mențineți sistemele distribuite să funcționeze rapid și stabil.

Sursa: www.habr.com

Adauga un comentariu