Wat is een validatorspel of “hoe lanceer je een proof-of-stake blockchain”

Uw team heeft dus de alfaversie van uw blockchain voltooid en het is tijd om testnet en vervolgens mainnet te starten. Je hebt een echte blockchain, met onafhankelijke deelnemers, een goed economisch model, veiligheid, je hebt het bestuur ontworpen en nu is het tijd om dit allemaal in actie te proberen. In een ideale crypto-anarchistische wereld plaats je het genesisblok op het netwerk, de uiteindelijke code van het knooppunt en de validators zelf lanceren alles, verhogen alle hulpdiensten en alles gebeurt vanzelf. Maar dit is in een fictieve wereld, maar in de echte wereld moet het team behoorlijk wat hulpsoftware en verschillende manipulaties voorbereiden om validators te helpen een stabiel netwerk te lanceren. Dit is waar dit artikel over gaat.

Het lanceren van netwerken op basis van consensussen van het ‘proof-of-stake’-type, waarbij validatoren worden bepaald door de stemmen van systeemtokenhouders, is een nogal specifieke gebeurtenis, omdat zelfs het lanceren van traditionele, centraal beheerde systemen met tientallen en honderden servers geen gemakkelijke taak is. taak op zich, en de blockchain moet worden gestart met inspanning van loyale maar onafhankelijke deelnemers. En als beheerders in een bedrijf bij het opstarten volledige toegang hebben tot alle machines, logs en algemene monitoring, dan zullen validators niemand toegang geven tot hun servers en zullen ze hoogstwaarschijnlijk de voorkeur geven aan het zelfstandig opbouwen van hun infrastructuur, omdat deze de toegang controleert. tot de belangrijkste troeven van de validator - stemmers. Het is dit gedrag dat het mogelijk maakt om gedistribueerde veilige netwerken te bouwen - de onafhankelijkheid van de gebruikte cloudproviders, virtuele en "baremetal" servers, verschillende besturingssystemen, dit alles stelt je in staat aanvallen op zo'n netwerk uiterst ineffectief te maken - te veel anders software wordt gebruikt. Ethereum gebruikt bijvoorbeeld twee hoofdknooppuntimplementaties, in Go en in Rust, en een aanval die effectief is voor de ene implementatie werkt niet voor de andere.

Daarom moeten alle processen voor het lanceren en exploiteren van blockchains zo worden georganiseerd dat elke validator, of zelfs een kleine groep validators, op elk moment zijn computers uit het raam kan gooien en kan vertrekken, terwijl er niets kapot mag gaan en de overige validators dat moeten doen. blijf het operationele netwerk effectief ondersteunen en nieuwe validators aansluiten. Bij het lanceren van een netwerk, wanneer één validator zich in Europa bevindt, de tweede in Zuid-Amerika en de derde in Azië, is het vrij moeilijk om het gecoördineerde werk van enkele tientallen onafhankelijke groepen te bewerkstelligen en hen als gevolg daarvan te interesseren.

Validatoren

Laten we ons de lancering voorstellen van een hypothetische moderne blockchain (het meeste van wat wordt beschreven is geschikt voor blockchains die zijn gebaseerd op elke moderne familie van blockchains: Ethereum, EOS, Polkadot, Cosmos en anderen, die consensus over de inzet van het bewijs bieden. De hoofdpersonen van Dergelijke blockchains zijn validatorteams, die zich bezighouden met het installeren van hun eigen onafhankelijke servers die nieuwe blokken valideren en produceren, en beloningen ontvangen van het netwerk voor degenen die deelnemen aan de consensus. Om nieuwe netwerken te lanceren zijn enkele tientallen validators nodig (zoveel kunnen er nu zijn min of meer effectief binnen enkele seconden consensus bereiken), dus kondigt het project registratie aan, waarbij validators openbare informatie over zichzelf delen met gebruikers en hen ervan overtuigen dat ze hoogwaardige diensten gaan leveren aan het gelanceerde netwerk.

Validatie is een bedrijf waarmee u het potentiële inkomen van de validator uiterst nauwkeurig kunt beoordelen, snel macht kunt overdragen tussen projecten, en als het door hem gekozen netwerk succesvol is, kan de validator, als volwaardige deelnemer aan de DAO en als verantwoordelijke persoon, het project ontwikkelen, of simpelweg uitstekende technische service bieden voor volledig transparant, eerlijk verdiend geld. Bij het berekenen van de beloning voor validators proberen projecten rekening te houden met de kosten van validators en de beloning voor blokken zo te maken dat dit bedrijf winstgevend is, maar tegelijkertijd niet toestaan ​​dat validators de economie neerhalen door ze te overspoelen met geld en andere netwerkgebruikers hiervan te beroven.

De werkzaamheden van validators vereisen het garanderen van een hoge fouttolerantie van services, wat een hoog trainingsniveau voor ontwikkelaars en ontwikkelaars en dure computerbronnen betekent. Zelfs zonder de noodzaak om hashes te minen in proof-of-work-netwerken, is een blockchain-knooppunt een grote service die veel geheugen in beslag neemt, veel berekeningen verbruikt, valideert, naar schijf schrijft en grote hoeveelheden gegevens naar het netwerk verzendt. . Om transactielogboeken en blokketens op te slaan voor een blockchain met enkele duizenden kleine transacties in een blok, is nu een opslagcapaciteit van 50 Gb of meer nodig, en voor blokken moet het een SSD zijn. De staatsdatabase van blockchains met ondersteuning voor slimme contracten kan al meer dan 64 GB RAM bevatten. Servers met de vereiste eigenschappen zijn vrij duur; een Ethereum- of EOS-node kan 100 tot 200 $/maand kosten. Voeg daarbij de hogere lonen voor het 10-uurswerk van ontwikkelaars en ontwikkelaars, die tijdens de lanceringsperiode zelfs 's nachts problemen oplossen, aangezien sommige validators gemakkelijk op een ander halfrond kunnen worden gevestigd. Op de juiste momenten kan het bezit van een validatornode echter serieuze inkomsten opleveren (in het geval van EOS tot $ 000 per dag).

Validatie is slechts een van de nieuwe potentiële IT-rollen voor ondernemers en bedrijven; naarmate programmeurs steeds geavanceerdere algoritmen bedenken die eerlijkheid belonen en fraude en diefstal bestraffen, verschijnen er diensten die de functies vervullen van het publiceren van belangrijke gegevens (orakels) en het uitvoeren van toezicht (het bezuinigen op deposito's en het bestraffen van valsspelers door het publiceren van bewijs van bedrog), diensten voor geschillenbeslechting, verzekeringen en opties, zelfs afvalophaling is een potentieel grote markt in slimme contractsystemen waar het nodig is om te betalen voor gegevensopslag.

Problemen bij het lanceren van een blockchain

De openheid van de blockchain, waardoor computers uit welk land dan ook vrij konden deelnemen aan het netwerk en het gemak waarmee elke scriptkiddie volgens de instructies op GitHub aan het netwerk kon worden gekoppeld, is niet altijd een voordeel. Het nastreven van een nieuw token dwingt validators vaak om ‘in het begin een nieuwe munt te minen’, in de hoop dat de koers zal stijgen en de mogelijkheid krijgt om snel hun inkomsten kwijt te raken. Dit betekent ook dat uw validator iedereen kan zijn, zelfs een anonieme persoon. U kunt op hem stemmen op dezelfde manier als voor andere validators (het zal echter moeilijk zijn voor een anonieme persoon om stemmen van belanghebbenden voor zichzelf te verzamelen, dus we' Ik laat de enge verhalen over anonieme cryptocurrencies over aan politici). Hoe dan ook

Het projectteam heeft een taak - om op de een of andere manier degenen in zijn netwerk te krijgen die in de toekomst de stabiele werking van knooppunten kunnen garanderen, de beveiliging begrijpen, weten hoe ze snel problemen moeten oplossen, samenwerken met andere validators en samen optreden - de kwaliteit daarvan Alles hangt volledig af van deze kwaliteiten, een teken waarin netwerkdeelnemers hun tijd en middelen gaan investeren. Adequate oprichters begrijpen bij het inschatten van de risico's goed dat je bij het lanceren van software van deze omvang zeker fouten zult tegenkomen in de code en configuratie van knooppunten, en dat de stabiliteit van het netwerk afhangt van hoe goed ontwikkelaars en validators gezamenlijk zullen oplossen zulke problemen.

Het team is klaar om op het mainnet te stemmen op eventuele validators, gewoon om te weten welke, welke goed zijn? De grootste portefeuille? Bijna niemand heeft het nu. Gebaseerd op de Linkedin-profielen van het team? Ervaren devops of beveiligingsspecialisten geven u geen Linkedin-profielen. Volgens uitspraken in de chat, posts en het helpen van anderen tijdens de voorbereidingsfase? Goed, maar subjectief en onnauwkeurig.

In dergelijke omstandigheden blijft één ding over: iets dat ieders problemen goed oplost, een spel waarin het mogelijk zal zijn om de beste validators te selecteren, maar het belangrijkste is om de blockchain te testen op kracht en een volledige gevechtstest uit te voeren van de blockchain in omstandigheden van actief gebruik, veranderingen in consensus, uiterlijk en correctie van fouten. Deze procedure werd voor het eerst gepresenteerd als een spel door de jongens van het Cosmos-project, en dit idee is ongetwijfeld een uitstekende manier om het netwerk voor te bereiden op de lancering van een betrouwbaar en fouttolerant mainnet

Spel van Validators

Ik zal het spel van validators beschrijven zoals we het hebben ontworpen voor de DAO.Casino (DAOBet) blockchain gebaseerd op de EOS-vork, die Haya wordt genoemd en een soortgelijk bestuursmechanisme heeft - validators worden gekozen door te stemmen vanaf elk account, waarbij een deel van het saldo dat is gebruikt om op de validator te stemmen, is bevroren. Elke account die het hoofd BET-token op zijn saldo heeft, kan met een deel van zijn saldo op de geselecteerde validator stemmen. De stemmen worden opgeteld en de beste validators worden samengesteld op basis van de resultaten. In verschillende blockchains is dit proces anders georganiseerd, en meestal is het in dit deel dat de nieuwe blockchain verschilt van de bovenliggende blockchain, en ik moet zeggen dat EOS in ons geval het “OS” in zijn naam volledig rechtvaardigt, we gebruiken EOS echt als basisbesturingssysteem voor de inzet van een aangepaste versie van de blockchain voor DAOBet-taken.

Ik zal individuele problemen beschrijven en hoe deze binnen het spel kunnen worden opgelost. Laten we ons een netwerk voorstellen waarin uw server openlijk kan worden aangevallen, waarbij u, om de positie van de validator te behouden, voortdurend met het netwerk moet communiceren, uw validator moet promoten en ervoor moet zorgen dat hij blokken produceert en deze op tijd aan andere validators worden afgeleverd. anders wordt de validator uit de lijst verwijderd.

Hoe kies je de beste winnaars?

De belangrijkste technische vereiste voor het spel is dat de resultaten publiekelijk verifieerbaar zijn. Dit betekent dat de resultaten van het spel: TOP-winnaars, strikt moeten worden gevormd op basis van gegevens die door elke deelnemer kunnen worden geverifieerd. In een gecentraliseerd systeem zouden we de “uptime” van elke validator kunnen meten en degenen kunnen belonen die het meest online waren of het maximale netwerkverkeer passeerden. U kunt gegevens verzamelen over de processor- en geheugenbelasting en degenen belonen die goed hebben gewerkt. Maar elke dergelijke verzameling van statistieken betekent het bestaan ​​van een verzamelcentrum, en de knooppunten zijn allemaal onafhankelijk en kunnen zich gedragen zoals ze willen en alle gegevens verzenden.

De logische oplossing is daarom dat de winnaars moeten worden bepaald op basis van data uit de blockchain, omdat daarmee kan worden bekeken welke validator welk blok heeft geproduceerd en welke transacties daarin zijn opgenomen. We noemden dit aantal Validatorpunten (VP), en het verdienen ervan is het belangrijkste doel van validators in het spel. In ons geval is de eenvoudigste, gemakkelijk publiekelijk verifieerbare en effectieve maatstaf voor het ‘nut’ van een validator VP = aantal blokken geproduceerd door de validator in een bepaalde tijdsperiode.

Deze eenvoudige keuze is te wijten aan het feit dat governance in EOS al voor veel opkomende problemen zorgt, aangezien EOS de erfgenaam is van drie generaties daadwerkelijk werkende blockchains met uitgebreide ervaring in complex netwerkbeheer, en vrijwel alle validatorproblemen met het netwerk, de processor, schijf leidde slechts tot één probleem - hij ondertekent minder blokken, ontvangt minder betaling voor het werk, wat ons wederom eenvoudigweg naar het aantal ondertekende blokken leidt - voor EOS is dit een uitstekende en eenvoudige optie.

Voor andere blockchains kan de manier waarop Validatorpunten worden berekend verschillen, bijvoorbeeld voor op pBFT gebaseerde consensussen (Tendermint/Cosmos, Aura-consensus van Parity Substrate), waarbij elk blok door meerdere validators moet worden ondertekend, is het zinvol om individuele validatoren te tellen Het kan zinvol zijn om rekening te houden met onvolledige consensusrondes, die de middelen van andere validators verspillen; in het algemeen hangt dit sterk af van het type consensus.

Hoe echte bedrijfsomstandigheden te simuleren

De taak van de oprichters is om validators te testen onder omstandigheden die dicht bij de realiteit liggen, zonder enige gecentraliseerde controle. Dit probleem kan worden opgelost met behulp van een kraancontract, dat gelijke hoeveelheden van het hoofdtoken uitdeelt aan validators en alle anderen. Om tokens op uw saldo te ontvangen, moet u een transactie aanmaken en ervoor zorgen dat het netwerk deze in het blok opneemt. Om te winnen moet een validator dus voortdurend zijn saldo aanvullen met nieuwe tokens en op zichzelf stemmen, waardoor hij zichzelf naar de top promoveert. Deze activiteit zorgt voor een constante belasting van het netwerk en de parameters kunnen zo worden geselecteerd dat de stroom verzoeken ernstig genoeg is voor een volledige netwerktest. Plan daarom vooraf het kraancontract als een belangrijk hulpmiddel voor het lanceren van het netwerk en begin vooraf met het selecteren van de parameters ervan.

Het aanvragen van tokens via een kraan en het valideren van stemmen emuleert nog steeds niet volledig de werking van een kernkop, vooral niet in extreem geladen modi. Daarom zal het blockchain-team op de een of andere manier nog aanvullende benchmarks moeten schrijven om het netwerk te belasten. Een speciale rol hierin wordt gespeeld door speciaal gecreëerde slimme contracten waarmee een afzonderlijk subsysteem kan worden getest. Om de opslag te testen, slaat het contract willekeurige gegevens op in de blockchain, en om netwerkbronnen te testen vereist het testcontract een grote hoeveelheid invoergegevens, waardoor het transactievolume wordt opgeblazen - door een stroom van dergelijke transacties op willekeurige tijdstippen te lanceren. het team test tegelijkertijd de stabiliteit van de code en de kracht van de validators.

Een apart probleem is het bijwerken van de code van knooppunten en het uitvoeren van harde vorken. Het is vereist dat in het geval van een bug, kwetsbaarheid of samenzwering van kwaadwillende validators, validators een actieplan moeten hebben dat al is uitgewerkt in het validators-spel. Hier kun je schema's bedenken om VP te verzamelen voor het snel toepassen van een harde vork, bijvoorbeeld door alle validators te beboeten die nog geen nieuwe versie van de knooppuntcode hebben uitgerold, maar dit is moeilijk te implementeren en bemoeilijkt de berekening. Je kunt de situatie van een noodgebruik van een harde vork simuleren door de blockchain op een bepaald blok kunstmatig te ‘breken’. De blokproductie stopt, en uiteindelijk zullen de winnaars degenen zijn die als eerste instappen en blokken beginnen te ondertekenen, dus VP op basis van het aantal ondertekende blokken past hier goed.

Hoe deelnemers te informeren over de netwerkstatus en fouten op te lossen

Ondanks het wantrouwen tussen validators is de tijdige ontvangst van actuele informatie over de status van het netwerk voor iedereen gunstig om sneller beslissingen te kunnen nemen. Daarom zet het projectteam een ​​dienst op voor het verzamelen en visualiseren van veel statistieken van validatorservers. Hierdoor zie je tegelijkertijd de situatie voor het hele netwerk, waardoor je snel kunt bepalen wat er gebeurt. Ook is het gunstig voor zowel de validators als het project dat het projectteam de gevonden fouten snel corrigeert. Dus naast het verzamelen van statistieken is het zinvol om onmiddellijk te beginnen met het verzamelen van logs en foutgegevens van de machines van validators op een machine die toegankelijk is voor blockchain. ontwikkelaars. Hier is het voor niemand nuttig om informatie te verdraaien, dus deze diensten zijn ontwikkeld door het projectteam en kunnen worden vertrouwd. Het is logisch om systeemstatistieken van validators te verzamelen, en natuurlijk zijn de belangrijkste statistieken van de blockchain zelf – voor DAOBet – de finalisatietijd en de vertraging van het laatste voltooide blok. Dankzij dit ziet het team een ​​toename van het geheugengebruik op knooppunten bij het uitvoeren van de benchmark, en problemen met individuele validators

Belangrijke punten voor het uitvoeren van een validatorspel

Het blijkt dat als je validators officieel wilt toestaan ​​elkaars machines aan te vallen (onofficieel kunnen ze dit toch), je dit juridisch apart moet formuleren als beveiligingstesten, aangezien onder de wetten van sommige landen DDoS- of netwerkaanvallen kunnen worden uitgevoerd. gestraft. Een andere belangrijke kwestie is hoe validators moeten worden beloond. Natuurlijke prijzen zijn projecttokens, die naar het mainnet worden overgebracht, maar een massale distributie van tokens aan iedereen die een knooppunt heeft kunnen lanceren is ook niet de beste optie. Hoogstwaarschijnlijk zul je een evenwicht moeten vinden tussen twee extreme opties:

Verdeel de volledige prijzenpot op basis van de verdiende OP
het is zeer democratisch en stelt iedereen die tijd en middelen in het validatorspel heeft geïnvesteerd in staat geld te verdienen
maar trekt willekeurige mensen naar het spel zonder voorbereide infrastructuur

Verdeel de top-N prijzenpot onder validators op basis van de resultaten van het spel
De winnaars zullen hoogstwaarschijnlijk de validators zijn die het tijdens het spel het meest consistent hebben volgehouden en die zeer vastbesloten zijn om te winnen
sommige validators zullen niet willen deelnemen, omdat ze hun kansen om te winnen laag inschatten, vooral als er onder de deelnemers ook eerbiedwaardige validators zijn

Welke optie u kiest, is aan u

Er is nog een punt: het is helemaal geen feit dat tientallen validators zich zullen haasten om op jouw oproep deel te nemen aan het spel, en van degenen die besluiten het te proberen, zullen ze niet allemaal het knooppunt zelfs installeren en starten - meestal, in dit stadium hebben projecten nogal schaarse documentatie, worden er fouten aangetroffen en reageren ontwikkelaars die onder tijdsdruk werken niet erg snel op vragen. Voordat het spel wordt gestart, is het daarom ook noodzakelijk om te voorzien in acties als het vereiste aantal validators niet wordt bereikt. In dit geval worden de ontbrekende validators aan het begin van het spel gelanceerd door het projectteam, nemen deel aan consensus, maar kunnen geen winnaars zijn.

Conclusie

Concluderend heb ik geprobeerd uit het bovenstaande een lijst samen te stellen van wat er moet worden bedacht, gemaakt en gelanceerd om een ​​validatorspel effectief uit te voeren.

Wat je moet doen om een ​​echt validatorspel te spelen:
ontwikkel je eigen blockchain :)

  • maak en verbeter een webinterface en zorg voor een CLI voor het stemmen op validators
  • zorg ervoor dat statistieken van een actief validatorknooppunt naar een gecentraliseerde service (bijvoorbeeld Prometheus) kunnen worden verzonden
  • richt een server voor het verzamelen van statistieken op (Prometheus + Grafana) voor het validatorspel
  • Ontdek hoe Validatorpunten (VP) worden berekend
  • ontwikkel een openbaar script dat validator VP berekent op basis van gegevens uit de blockchain
  • een webinterface ontwikkelen om de beste validators weer te geven, en de spelstatus van de validators (hoeveel tijd er nog is tot het einde, wie hoeveel OP heeft, enz.)
  • ontwikkel en automatiseer de lancering van een willekeurig aantal van uw eigen knooppunten, ontwerp het proces voor het verbinden van validators met het spel (wanneer en hoe u uw knooppunten moet loskoppelen, stemmen erop indienen en verwijderen)
  • bereken hoeveel tokens er moeten worden uitgegeven en ontwikkel een kraancontract
  • een benchmarkscript maken (tokenoverdrachten, enorm opslaggebruik, enorm netwerkgebruik)
  • verzamel alle deelnemers in één chat voor snelle communicatie
  • lanceer de blockchain iets eerder dan het begin van het spel
  • wacht op het startblok, start het spel
  • test het netwerk met verschillende soorten transacties
  • rol een harde vork uit
  • wijzig de lijst met validators
  • herhaal stappen 13,14,15, XNUMX, XNUMX in verschillende volgorde, waarbij u de netwerkstabiliteit behoudt
  • wacht op het laatste blok, beëindig het spel, tel OP

Het moet gezegd worden dat het spel van validators een nieuw verhaal is en dat het slechts een paar keer is uitgevoerd, dus je moet deze tekst niet als een kant-en-klare gids beschouwen. Er zijn geen analogen in de moderne IT-business. Stel je voor dat banken, voordat ze een betalingssysteem lanceren, met elkaar concurreren om te zien wie de beste is in het uitvoeren van klanttransacties. Het is onwaarschijnlijk dat traditionele benaderingen u zullen helpen grote gedecentraliseerde netwerken te creëren, dus beheers nieuwe bedrijfsmodellen, voer uw games uit, identificeer de waardevolle, beloon ze en zorg ervoor dat uw gedistribueerde systemen snel en stabiel blijven draaien.

Bron: www.habr.com

Voeg een reactie