Mikä on validointipeli tai "kuinka käynnistää panoksen osoittava lohkoketju"

Joten tiimisi on saanut valmiiksi lohkoketjusi alfaversion, ja on aika käynnistää testnet ja sitten mainnet. Sinulla on todellinen lohkoketju riippumattomilla osallistujilla, hyvä talousmalli, turvallisuus, olet suunnitellut hallinnon ja nyt on aika kokeilla kaikkea tätä käytännössä. Ihanteellisessa krypto-anarkkisessa maailmassa laitat verkkoon genesilohkon, solmun lopullinen koodi ja validaattorit itse käynnistävät kaiken, nostavat kaikki apupalvelut ja kaikki tapahtuu itsestään. Mutta tämä on kuvitteellista maailmaa, mutta todellisessa maailmassa tiimin on valmisteltava melko paljon apuohjelmia ja erilaisia ​​​​manipulaatioita auttaakseen validaattoreita käynnistämään vakaan verkon. Tästä tässä artikkelissa on kyse.

"proof-of-stake" -tyyppisiin konsensuksiin perustuvien verkkojen käynnistäminen, joissa validoijat määräytyvät järjestelmän tokenin haltijoiden äänestyksellä, on melko spesifinen tapahtuma, koska edes perinteisten, keskitetysti hallittujen, kymmeniä ja satoja palvelimia sisältävien järjestelmien käynnistäminen ei ole helppoa. tehtävä sinänsä, ja lohkoketju on käynnistettävä vaivannäöllisillä mutta itsenäisillä osallistujilla. Ja jos yrityksessä järjestelmänvalvojilla on käynnistyksen yhteydessä täysi pääsy kaikkiin koneisiin, lokeihin, yleiseen valvontaan, niin validaattorit eivät salli kenenkään pääsyä palvelimiinsa ja todennäköisesti rakentavat infrastruktuurinsa mieluummin itsenäisesti, koska se hallitsee pääsyä validaattorin pääomaisuuteen - panokset äänestäjät. Juuri tämä käyttäytyminen mahdollistaa hajautettujen suojattujen verkkojen rakentamisen - käytettävien pilvipalveluntarjoajien riippumattomuus, virtuaaliset ja "paljasta" palvelimet, erilaiset käyttöjärjestelmät, kaikki tämä mahdollistaa hyökkäyksistä tällaiseen verkkoon erittäin tehottomia - liian erilaisia ohjelmistoa käytetään. Esimerkiksi Ethereum käyttää kahta pääsolmutoteutusta, Go ja Rust, ja hyökkäys, joka on tehokas toiselle toteutukselle, ei toimi toisessa.

Siksi kaikki lohkoketjujen käynnistämis- ja käyttöprosessit on järjestettävä siten, että kuka tahansa validaattori tai jopa pieni joukko validaattoreita voisi milloin tahansa heittää tietokoneensa ulos ikkunasta ja lähteä, kun taas mikään ei saisi rikkoutua ja jäljellä olevien validaattorien pitäisi jatkamaan toimintaverkoston tehokasta tukemista ja yhdistämään uusia validaattoreita. Verkostoa käynnistettäessä, kun yksi validoija on Euroopassa, toinen Etelä-Amerikassa ja kolmas Aasiassa, on melko vaikeaa saada aikaan useiden kymmenien itsenäisten ryhmien koordinoitua työtä ja kiinnostaa niitä sen seurauksena.

Validaattorit

Kuvitellaanpa hypoteettisen modernin lohkoketjun lanseerausta (suurin osa kuvatusta sopii lohkoketjuille, jotka perustuvat mihin tahansa nykyaikaiseen lohkoketjuperheeseen: Ethereum, EOS, Polkadot, Cosmos ja muut, jotka tarjoavat panoksen konsensuksen todisteita. Päähenkilöt Tällaiset lohkoketjut ovat validointiryhmiä, jotka asentavat omia itsenäisiä palvelimiaan, jotka validoivat ja tuottavat uusia lohkoja, ja saavat verkon tarjoamia palkintoja niille, jotka osallistuvat konsensukseen. Uusien verkkojen käynnistämiseen tarvitaan useita kymmeniä validaattoreita (niin monet voivat nyt päästään konsensukseen enemmän tai vähemmän tehokkaasti sekunneissa), joten projekti ilmoittaa rekisteröinnin, jossa validaattorit jakavat julkista tietoa itsestään käyttäjien kanssa vakuuttaen heidät siitä, että he aikovat tarjota laadukasta palvelua käynnistettyyn verkkoon.

Validointi on liiketoimintaa, jonka avulla voit arvioida äärimmäisen tarkasti validaattorin potentiaaliset tulot, siirtää voimaa nopeasti projektien välillä, ja jos hänen valitsemansa verkosto onnistuu, validaattori voi DAO:n täysivaltaisena osallistujana ja vastuuhenkilönä kehittää projektia tai yksinkertaisesti tarjota erinomaista teknistä palvelua täysin läpinäkyvällä, rehellisesti ansaitulla rahalla. Validaattorien palkkiota laskettaessa projektit yrittävät ottaa huomioon validaattoreiden kustannukset ja tehdä palkkioista lohkoista sellaisia, että tämä liiketoiminta on kannattavaa, mutta ei samalla anna validaattoreiden kaataa taloutta tulvimalla niitä rahalla ja riistää sen muilta verkon käyttäjiltä.

Validaattoriliiketoiminta edellyttää palvelujen korkean vikasietoisuuden varmistamista, mikä tarkoittaa korkeatasoista devoppien ja kehittäjien koulutusta sekä kalliita laskentaresursseja. Lohkoketjusolmu on iso palvelu, joka vie paljon muistia, kuluttaa paljon laskelmia, validoi, kirjoittaa levylle ja lähettää suuria määriä dataa verkkoon ilman tarvetta louhia tiivistettä työtodistusverkoissa. . Tapahtumalokien ja lohkoketjujen tallentamiseen lohkoketjussa, jossa on useita tuhansia pieniä tapahtumia lohkossa, tarvitaan nyt 50 Gt tai enemmän tallennustilaa, ja lohkoille sen on oltava SSD. Valtion lohkoketjujen tietokanta, joka tukee älykkäitä sopimuksia, voi jo ylittää 64 Gt RAM-muistia. Palvelimet, joilla on tarvittavat ominaisuudet, ovat melko kalliita; Ethereum- tai EOS-solmu voi maksaa 100-200 $/kk. Lisää tähän korotetut palkat kehittäjien ja devoppien ympärivuorokautisesta työstä, jotka käynnistysvaiheessa ratkaisevat ongelmia jopa yöllä, koska jotkut validaattorit voivat helposti sijaita toisella pallonpuoliskolla. Kuitenkin oikealla hetkellä validaattorisolmun omistaminen voi tuoda vakavia tuloja (EOS:n tapauksessa jopa 10 000 dollaria päivässä).

Validointi on vain yksi uusista mahdollisista IT-rooleista yrittäjille ja yrityksille; kun ohjelmoijat keksivät yhä kehittyneempiä algoritmeja, jotka palkitsevat rehellisyyttä ja rankaisevat petoksia ja varkauksia, ilmaantuu palveluita, jotka suorittavat tärkeän tiedon julkaisemisen (oraakkelit), valvonnan. (talletuksen leikkaaminen ja huijareiden rankaiseminen julkaisemalla todisteet petoksesta), riitojenratkaisupalvelut, vakuutukset ja optiot, jopa roskienkeräys on potentiaalisesti suuri markkina älykkäissä sopimusjärjestelmissä, joissa tiedon tallentamisesta on maksettava.

Ongelmia lohkoketjun käynnistämisessä

Lohkoketjun avoimuus, joka mahdollisti minkä tahansa maan tietokoneiden vapaan osallistumisen verkkoon ja minkä tahansa script-kiddin helppous liittää verkkoon GitHubin ohjeiden mukaan, ei ole aina etu. Uuden rahakkeen tavoittelu pakottaa validoijat usein "louhimaan uuden kolikon alussa" siinä toivossa, että korko nousee ja että heillä on mahdollisuus heittää tulojaan nopeasti pois. Tämä tarkoittaa myös sitä, että validoijasi voi olla kuka tahansa, jopa anonyymi henkilö, voit äänestää häntä samalla tavalla kuin muitakin validaattoreita (anonyymin henkilön on kuitenkin vaikea kerätä sidosryhmien ääniä itselleen, joten Jätän pelottavat tarinat nimettömistä kryptovaluutoista poliitikoille). tästä huolimatta

Projektiryhmällä on tehtävä - saada jollain tavalla verkostoonsa ne, jotka pystyvät tulevaisuudessa varmistamaan solmujen vakaan toiminnan, ymmärtämään turvallisuuden, osaavat ratkaista ongelmia nopeasti, tekevät yhteistyötä muiden validaattoreiden kanssa ja toimivat yhdessä - sen laatu kaikki riippuu täysin näistä ominaisuuksista, johon verkoston osallistujat aikovat sijoittaa aikaansa ja resurssejaan. Riittävät perustajat riskejä arvioidessaan ymmärtävät hyvin, että tämän kokoisia ohjelmistoja käynnistettäessä joutuu varmasti kohdatmaan virheitä solmujen koodissa ja konfiguraatiossa ja että verkon vakaus riippuu siitä, kuinka hyvin kehittäjät ja validaattorit yhdessä ratkaisevat. tällaisia ​​ongelmia.

Tiimi on valmis äänestämään pääverkossa kaikista validaattoreista, vain tietääkseen mitkä, mitkä ovat hyviä? Suurin portfolio? Nyt sitä ei ole melkein kenelläkään. Perustuuko joukkueen Linkedin-profiileihin? Kokeneet kehittäjät tai tietoturvaasiantuntijat eivät anna sinulle Linkedin-profiileja. Chatissa, postauksissa ja muiden auttamisessa valmisteluvaiheessa olevien lausuntojen mukaan? Hyvä, mutta subjektiivinen ja epätarkka.

Tällaisissa olosuhteissa jää yksi asia - jotain, joka ratkaisee kaikkien ongelmat hyvin - peli, jossa on mahdollista valita parhaat validaattorit, mutta tärkeintä on testata lohkoketjun vahvuus ja suorittaa täysimittainen taistelutesti. lohkoketju aktiivisen käytön olosuhteissa, konsensuksen muutokset, ulkonäkö ja virheiden korjaus . Cosmos-projektin kaverit esittelivät tämän menettelyn ensin pelinä, ja tämä idea on epäilemättä erinomainen tapa valmistella verkkoa luotettavan ja vikasietoisen verkkoverkon käynnistämiseen.

Peli of Validators

Kuvaan validaattoripeliä sellaisena kuin suunnittelimme sen EOS-haarukkaan perustuvalle DAO.Casino (DAOBet) -lohkoketjulle, joka on nimeltään Haya ja jolla on samanlainen hallintomekanismi - validaattorit valitaan äänestämällä miltä tahansa tililtä, ​​jossa osa validaattorin äänestämiseen käytetty saldo jäädytetään. Mikä tahansa tili, jonka saldossa on pääpanosmerkki, voi äänestää valittua validaattoria millä tahansa saldonsa osalla. Äänet lasketaan yhteen ja tulosten perusteella rakennetaan huippuvalidaattorit. Eri lohkoketjuissa tämä prosessi on järjestetty eri tavalla, ja yleensä juuri tässä osassa uusi lohkoketju eroaa emoketjusta, ja minun on sanottava, että meidän tapauksessamme EOS oikeuttaa täysin nimensä "käyttöjärjestelmän", käytämme todella EOS:ää. peruskäyttöjärjestelmänä lohkoketjun muokatun version käyttöönotolle DAOBet-tehtäviä varten.

Kuvaan yksittäisiä ongelmia ja kuinka ne voidaan ratkaista pelin sisällä. Kuvittelemme verkkoa, jossa palvelimeesi voidaan hyökätä avoimesti ja jossa validaattorin aseman säilyttämiseksi sinun on oltava jatkuvasti vuorovaikutuksessa verkon kanssa, mainostaa validaattoriasi ja varmistaa, että se tuottaa lohkoja ja ne toimitetaan muille validaattoreille aika, muuten validaattori heitetään pois luettelosta.

Kuinka valita parhaat voittajat?

Pelin tärkein tekninen vaatimus on, että sen tulokset ovat julkisesti todennettavissa. Tämä tarkoittaa, että pelin tulokset: TOP-voittajat, on muodostettava tiukasti sellaisten tietojen perusteella, jotka kuka tahansa osallistuja voi tarkistaa. Keskitetyssä järjestelmässä voisimme mitata kunkin validaattorin "käyttöaikaa" ja palkita niitä, jotka olivat verkossa eniten tai käyttivät suurimman verkkoliikenteen läpi. Voit kerätä tietoja prosessorin ja muistin kuormituksesta ja palkita niitä, jotka ovat työskennelleet hyvin. Mutta mikä tahansa tällainen mittareiden kokoelma tarkoittaa keräyskeskuksen olemassaoloa, ja solmut ovat kaikki itsenäisiä ja voivat käyttäytyä haluamallaan tavalla ja lähettää mitä tahansa dataa.

Siksi luonnollinen ratkaisu on, että voittajat määritetään lohkoketjun tietojen perusteella, koska sen avulla voidaan nähdä, mikä validaattori on tuottanut minkä lohkon ja mitä tapahtumia siihen sisältyi. Kutsuimme tätä numeroa Validator Pointeiksi (VP), ja niiden ansaitseminen on validaattorien päätavoite pelissä. Meidän tapauksessamme yksinkertaisin, helposti julkisesti todennettavissa oleva ja tehokas validaattorin "hyödyllisyyden" mittari on VP = validaattorin tietyn ajanjakson aikana tuottamien lohkojen lukumäärä.

Tämä yksinkertainen valinta johtuu siitä, että EOS:n hallinta tarjoaa jo monia uusia ongelmia, koska EOS on kolmen sukupolven tosiasiallisesti toimivien lohkoketjujen perillinen, jolla on laaja kokemus monimutkaisesta verkonhallinnasta ja lähes kaikista verkkoon, prosessoriin liittyvistä validaattoriongelmista, levy johtaa vain yhteen ongelmaan - hän allekirjoittaa vähemmän lohkoja, saa vähemmän palkkaa työstä, mikä taas johtaa meidät yksinkertaisesti allekirjoitettujen lohkojen määrään - EOS:lle tämä on erinomainen ja yksinkertainen vaihtoehto.

Muissa lohkoketjuissa validaattoripisteiden laskentatapa voi vaihdella, esimerkiksi pBFT-pohjaisissa konsensuksissa (Tendermint/Cosmos, Aura consensus from Parity Substrate), joissa jokainen lohko on allekirjoitettava useilla validoijilla, on järkevää laskea yksittäinen validaattori. Saattaa olla järkevää ottaa huomioon epätäydelliset konsensuskierrokset, jotka tuhlaavat muiden validoijien resursseja, yleensä tämä riippuu suuresti konsensuksen tyypistä.

Kuinka simuloida todellisia käyttöolosuhteita

Perustajien tehtävänä on testata validaattoreita lähellä todellisuutta olevissa olosuhteissa ilman keskitettyä valvontaa. Tämä ongelma voidaan ratkaista hanasopimuksella, joka jakaa samat määrät päätunnusta validaattoreille ja kaikille muille. Saadaksesi rahakkeita saldoosi, sinun on luotava tapahtuma ja varmistettava, että verkko sisällyttää sen lohkoon. Siten voidakseen voittaa validaattorin täytyy jatkuvasti täydentää saldoaan uusilla rahakkeilla ja äänestää itseään nostaen itsensä huipulle. Tämä toiminta kuormittaa verkkoa jatkuvasti, ja parametrit voidaan valita niin, että pyyntöjen virta on riittävän kovaa verkkotestaukseen. Suunnittele siksi hanasopimus etukäteen tärkeäksi työkaluksi verkon käynnistämisessä ja aloita sen parametrien valinta etukäteen.

Tokenien pyytäminen hanasta ja äänten vahvistaminen ei silti täysin jäljittele taistelukärjen toimintaa, etenkään erittäin ladatuissa tiloissa. Siksi blockchain-tiimin on silti kirjoitettava ylimääräisiä vertailuarvoja tavalla tai toisella verkon lataamiseksi. Erityinen rooli tässä on erityisesti luoduilla älykkäillä sopimuksilla, jotka mahdollistavat erillisen alijärjestelmän testaamisen. Tallennuksen testaamiseksi sopimus tallentaa satunnaista dataa lohkoketjuun, ja verkkoresurssien testaamiseksi testisopimus vaatii suuren määrän syöttödataa, mikä lisää tapahtumien määrää - käynnistämällä tällaisten tapahtumien virran mielivaltaisina aikoina, tiimi testaa samanaikaisesti koodin vakautta ja validaattorien vahvuutta.

Erillinen ongelma on solmukoodin päivittäminen ja kovien haarukoiden suorittaminen. Vaaditaan, että jos havaitaan virhe, haavoittuvuus tai haitallisten validaattoreiden välinen yhteistyö, validoijilla on oltava toimintasuunnitelma, joka on jo laadittu validaattorien pelissä. Täällä voit keksiä järjestelmiä VP:n keräämiseksi kovahaarukan nopeaa soveltamista varten, esimerkiksi sakkoamalla kaikkia validaattoreita, jotka eivät ole vielä julkaisseet uutta versiota solmukoodista, mutta tämä on vaikea toteuttaa ja vaikeuttaa laskentaa. Voit simuloida kovan haarukan hätäkäytön tilannetta "rikkomalla" keinotekoisesti tietyn lohkon lohkoketjun. Lohkojen tuotanto pysähtyy, ja lopulta voittajia ovat ne, jotka hyppäävät ensimmäisenä ja alkavat allekirjoittaa lohkoja, joten allekirjoitettujen lohkojen määrään perustuva VP sopii tähän hyvin.

Kuinka ilmoittaa osallistujille verkon tilasta ja korjata virheitä

Validaattorien välisestä epäluottamuksesta huolimatta ajantasaisen tiedon saaminen verkon tilasta on hyödyllistä kaikille, jotta päätökset voidaan tehdä nopeammin, joten projektitiimi nostaa palvelua useiden mittareiden keräämiseen ja visualisoimiseen validaattoripalvelimista, jonka avulla voit nähdä tilanteen samanaikaisesti koko verkossa, jolloin voit nopeasti määrittää, mitä tapahtuu. Lisäksi sekä validaattoreiden että projektin kannalta on hyödyllistä, että projektitiimi korjaa nopeasti löydetyt virheet, joten mittareiden keräämisen lisäksi on järkevää aloittaa heti lokien ja virhetietojen kerääminen validaattorien koneilta lohkoketjun käytettävissä olevalla koneella. kehittäjät. Tässä ei ole kenellekään hyödyllistä vääristää tietoa, joten nämä palvelut ovat projektiryhmän kehittämiä ja niihin voi luottaa. On järkevää kerätä järjestelmän mittareita validaattoreista, ja tietysti itse lohkoketjun tärkeimmät mittarit - DAOBetille - ovat viimeistelyaika ja viimeisen viimeistellyn lohkon viive. Tämän ansiosta tiimi näkee muistinkulutuksen lisääntyneen solmuissa vertailua suoritettaessa, ongelmia yksittäisten validaattoreiden kanssa.

Tärkeitä kohtia validointipelin suorittamisessa

Kuten käy ilmi, jos haluat virallisesti sallia validaattoreiden hyökätä toistensa koneisiin (epävirallisesti he voivat tehdä tämän joka tapauksessa), sinun on muotoiltava tämä erikseen laillisesti tietoturvatestauksena, koska joidenkin maiden lakien mukaan DDoS- tai verkkohyökkäykset voivat olla rangaistiin. Toinen tärkeä kysymys on validoijien palkitseminen. Luonnolliset palkinnot ovat projektitokeneita, jotka siirretään verkkoon, mutta tokenien massiivinen jakelu kaikille solmun käynnistäneille ei myöskään ole paras vaihtoehto. Todennäköisesti joudut tasapainottamaan kahden äärimmäisen vaihtoehdon välillä:

Jaa koko palkintopotti ansaitun VP:n mukaan
se on erittäin demokraattinen ja antaa kaikille, jotka ovat sijoittaneet aikaa ja resursseja validointipeliin, ansaita rahaa
mutta houkuttelee satunnaisia ​​ihmisiä peliin ilman valmisteltua infrastruktuuria

Jaa Top-N palkintopotti validaattoreille pelin tulosten perusteella
Voittajia ovat todennäköisesti ne validaattorit, jotka kestivät tasaisimmin pelin aikana ja ovat erittäin tiukasti päättäneet voittaa
jotkut validaattorit eivät halua osallistua, koska he arvioivat voittomahdollisuuksiaan, varsinkin jos osallistujien joukossa on kunnioitettavia validaattoreita

Kumpi vaihtoehto valita, on sinun

On vielä yksi seikka - ei ole ollenkaan tosiasia, että kymmenet validaattorit ryntäävät osallistumaan peliin kutsustasi, ja niistä, jotka päättävät kokeilla, eivät kaikki edes asenna ja käynnistä solmua - yleensä, Tässä vaiheessa projekteissa on melko niukkaa dokumentaatiota, virheitä tulee vastaan, eivätkä aikapaineessa työskentelevät kehittäjät vastaa kysymyksiin kovin nopeasti. Siksi ennen pelin käynnistämistä on myös tarpeen säätää toimista, jos vaadittua määrää validaattoreita ei saavuteta. Tässä tapauksessa pelin alussa projektitiimi käynnistää puuttuvat validaattorit, jotka osallistuvat konsensukseen, mutta eivät voi olla voittajia.

Johtopäätös

Lopuksi, yritin koota yllä olevasta luettelon siitä, mitä pitää keksiä, tehdä ja käynnistää, jotta validaattoripeli voidaan suorittaa tehokkaasti.

Mitä sinun tulee tehdä pelataksesi todellista validaattoripeliä:
kehitä oma lohkoketju :)

  • tehdä ja nostaa verkkokäyttöliittymä ja tarjota CLI validaattoreiden äänestämistä varten
  • varmista, että käynnissä olevan validointisolmun mittarit voidaan lähettää keskitettyyn palveluun (esimerkiksi Prometheus)
  • nosta mittauspalvelin (Prometheus + Grafana) validointipeliä varten
  • selvittää, kuinka validaattoripisteet (VP) lasketaan
  • kehittää julkinen komentosarja, joka laskee validaattorin VP:n lohkoketjun tietojen perusteella
  • kehittää verkkokäyttöliittymä, joka näyttää suosituimmat validaattorit ja validaattoreiden pelitilan (kuinka paljon aikaa on jäljellä loppuun, kenellä on kuinka paljon VP:tä jne.)
  • kehittää ja automatisoida mielivaltaisen määrän omia solmujasi, suunnitella validaattorien yhdistämisprosessi peliin (milloin ja miten solmut irrotetaan, niille annetaan ja poistetaan ääniä)
  • laskea kuinka monta tokenia on annettava ja laadi hanasopimus
  • tehdä vertailukomentosarja (tunnusten siirrot, massiivinen tallennustilan käyttö, massiivinen verkon käyttö)
  • kokoaa kaikki osallistujat yhteen chattiin nopeaa viestintää varten
  • käynnistä lohkoketju hieman aikaisemmin kuin pelin alku
  • odota aloituslohkoa, aloita peli
  • testaa verkkoa useilla tapahtumilla
  • kaulii kova haarukka
  • muuttaa validaattorien luetteloa
  • toista vaiheet 13,14,15, XNUMX, XNUMX eri järjestyksessä ylläpitäen verkon vakautta
  • odota viimeistä lohkoa, lopeta peli, laske VP

On sanottava, että validaattoripeli on uusi tarina, ja se toteutettiin vain pari kertaa, joten sinun ei pitäisi ottaa tätä tekstiä valmiina oppaana. Nykyaikaisessa IT-liiketoiminnassa ei ole analogeja - kuvittele, että pankit kilpailevat keskenään ennen maksujärjestelmän käynnistämistä nähdäkseen, kuka on paras hoitamaan asiakastapahtumia. Perinteiset lähestymistavat eivät todennäköisesti auta sinua luomaan suuria hajautettuja verkkoja, joten hallitse uusia liiketoimintamalleja, aja pelejäsi, tunnista kelvolliset, palkitse heidät ja pidä hajautetut järjestelmäsi käynnissä nopeasti ja vakaasti.

Lähde: will.com

Lisää kommentti