NejauÅ”i skaitļi un decentralizÄti tÄ«kli: implementÄcijas
Ievads
function getAbsolutelyRandomNumer() {
return 4; // returns absolutely random number!
}
TÄpat kÄ ar absolÅ«ti spÄcÄ«ga Å”ifra jÄdzienu no kriptogrÄfijas, arÄ« reÄlie āPublicly Verifiable Random Beaconā (turpmÄk PVRB) protokoli tikai cenÅ”as maksimÄli pietuvoties ideÄlajai shÄmai, jo reÄlos tÄ«klos tas nav piemÄrojams tÄ«rÄ veidÄ: ir stingri jÄvienojas par vienu bitu, jÄbÅ«t daudzÄm kÄrtÄm, un visiem ziÅojumiem jÄbÅ«t perfekti Ätriem un vienmÄr piegÄdÄtiem. Protams, reÄlos tÄ«klos tas tÄ nav. TÄpÄc, izstrÄdÄjot PVRB specifiskiem uzdevumiem mÅ«sdienu blokÄ·ÄdÄs, papildus neiespÄjamÄ«bai kontrolÄt no tÄ izrietoÅ”o nejauŔību un kriptogrÄfisko stiprumu, rodas vÄl daudzas tÄ«ri arhitektoniskas un tehniskas problÄmas.
PVRB gadÄ«jumÄ pati blokÄ·Äde bÅ«tÄ«bÄ ir saziÅas lÄ«dzeklis, kurÄ ziÅojumi = darÄ«jumi. Tas ļauj daļÄji abstrahÄties no tÄ«kla problÄmÄm, ziÅojumu nepiegÄdÄÅ”anas, problÄmÄm ar starpprogrammatÅ«ru - visus Å”os riskus uzÅemas decentralizÄtais tÄ«kls, un tÄ galvenÄ vÄrtÄ«ba PVRB ir nespÄja atsaukt vai sabojÄt jau nosÅ«tÄ«tu darÄ«jumu - tas notiek neļaut dalÄ«bniekiem atteikties piedalÄ«ties protokolÄ, ja vien viÅi nav veiksmÄ«gi uzbrukuÅ”i vienprÄtÄ«bai. Å Äds droŔības lÄ«menis ir pieÅemams, tÄpÄc PVRB jÄbÅ«t izturÄ«gam pret dalÄ«bnieku slepenu vienoÅ”anos tieÅ”i tÄdÄ paÅ”Ä mÄrÄ kÄ galvenajai blokÄ·Ädes Ä·Ädei. Tas arÄ« norÄda uz to, ka PVRB ir jÄbÅ«t daļai no vienprÄtÄ«bas, ja tÄ«kls vienojas par galveno blokÄ·Ädi, pat ja tas vienojas arÄ« par vienÄ«go godÄ«go iegÅ«to nejauŔību. Vai arÄ« PVRB ir vienkÄrÅ”i atseviŔķs protokols, kas ieviests ar viedo lÄ«gumu, kas darbojas asinhroni attiecÄ«bÄ uz blokÄ·Ädi un blokiem. AbÄm metodÄm ir savas priekÅ”rocÄ«bas un trÅ«kumi, un izvÄle starp tÄm ir ÄrkÄrtÄ«gi vienkÄrÅ”a.
Divi veidi, kÄ ieviest PVRB
SÄ«kÄk aprakstÄ«sim divas PVRB ievieÅ”anas iespÄjas - savrupo versiju, kas darbojas, izmantojot viedo lÄ«gumu neatkarÄ«gi no blokÄ·Ädes, un vienprÄtÄ«gi integrÄto versiju, kas iebÅ«vÄta protokolÄ, saskaÅÄ ar kuru tÄ«kls vienojas par blokÄ·Ädi un iekļaujamie darÄ«jumi. Visos gadÄ«jumos es domÄju populÄros blokÄ·Ädes dzinÄjus: Ethereum, EOS un visus lÄ«dzÄ«gus viedo lÄ«gumu mitinÄÅ”anas un apstrÄdes veidÄ.
AtseviŔķs līgums
Å ajÄ versijÄ PVRB ir viedais lÄ«gums, kas pieÅem nejauÅ”o ražotÄju (turpmÄk tekstÄ RP) darÄ«jumus, apstrÄdÄ tos, apvieno rezultÄtus un rezultÄtÄ iegÅ«st noteiktu vÄrtÄ«bu, ko no Ŕī lÄ«guma var saÅemt jebkurÅ” lietotÄjs. Å o vÄrtÄ«bu nedrÄ«kst tieÅ”i glabÄt lÄ«gumÄ, bet gan attÄlot tikai ar datiem, no kuriem deterministiski var iegÅ«t vienu un tikai vienu iegÅ«tÄ nejauŔības vÄrtÄ«bu. Å ajÄ shÄmÄ RP ir blokÄ·Ädes lietotÄji, un Ä£enerÄÅ”anas procesÄ var ļaut piedalÄ«ties ikvienam.
IespÄja ar atseviŔķu lÄ«gumu ir laba:
pÄrnesamÄ«ba (lÄ«gumus var vilkt no blokÄ·Ädes uz blokÄ·Ädi)
ievieÅ”anas un testÄÅ”anas vienkÄrŔība (lÄ«gumus ir viegli rakstÄ«t un pÄrbaudÄ«t)
ÄrtÄ«ba ekonomisko shÄmu ievieÅ”anÄ (ir vienkÄrÅ”i izveidot savu marÄ·ieri, kura loÄ£ika kalpo PVRB mÄrÄ·iem)
iespÄja palaist jau strÄdÄjoÅ”Äs blokÄ·Ädes
Tam ir arī trūkumi:
stingri ierobežojumi skaitļoÅ”anas resursiem, darÄ«jumu apjomam un krÄtuvei (citiem vÄrdiem sakot, cpu/mem/io)
ierobežojumi operÄcijÄm lÄ«guma ietvaros (nav pieejamas visas instrukcijas, ir grÅ«ti savienot ÄrÄjÄs bibliotÄkas)
nespÄja organizÄt ziÅojumapmaiÅu ÄtrÄk nekÄ darÄ«jumi tiek iekļauti blokÄ·ÄdÄ
Å Ä« opcija ir piemÄrota PVRB ievieÅ”anai, kas jÄdarbina esoÅ”ajÄ tÄ«klÄ, nesatur sarežģītu kriptogrÄfiju un neprasa lielu mijiedarbÄ«bu skaitu.
VienprÄtÄ«gi integrÄts
Å ajÄ versijÄ PVRB ir ieviests blokÄ·Ädes mezgla kodÄ, iebÅ«vÄts vai darbojas paralÄli ziÅojumu apmaiÅai starp blokÄ·Ädes mezgliem. Protokola rezultÄti tiek ierakstÄ«ti tieÅ”i saražotajos blokos, un protokola ziÅojumi tiek nosÅ«tÄ«ti pa p2p tÄ«klu starp mezgliem. TÄ kÄ protokola rezultÄtÄ tiek iegÅ«ti skaitļi, kas jÄraksta blokos, tÄ«klam par tiem ir jÄpanÄk vienprÄtÄ«ba. Tas nozÄ«mÄ, ka PVRB ziÅojumi, tÄpat kÄ transakcijas, ir jÄapstiprina mezgliem un jÄiekļauj blokos, lai jebkurÅ” tÄ«kla dalÄ«bnieks varÄtu apstiprinÄt atbilstÄ«bu PVRB protokolam. Tas automÄtiski noved pie acÄ«mredzamÄ risinÄjuma ā ja tÄ«kls vienojas par konsensu par bloku un darÄ«jumiem tajÄ, tad PVRB ir jÄbÅ«t daļai no vienprÄtÄ«bas, nevis atseviŔķam protokolam. PretÄjÄ gadÄ«jumÄ ir iespÄjams, ka bloks ir derÄ«gs no konsensa viedokļa, bet netiek ievÄrots PVRB protokols, un no PVRB viedokļa bloku nevar pieÅemt. TÄtad, ja tiek izvÄlÄta opcija āvienprÄtÄ«gi integrÄtaā, PVRB kļūst par svarÄ«gu vienprÄtÄ«bas daļu.
Aprakstot PVRB ievieÅ”anas tÄ«kla vienprÄtÄ«bas lÄ«menÄ«, nekÄdÄ gadÄ«jumÄ nevar izvairÄ«ties no galÄ«guma problÄmÄm. GalÄ«gums ir mehÄnisms, ko izmanto deterministiskÄ vienprÄtÄ«bÄ, kas bloÄ·Ä bloku (un Ä·Ädi, kas ved uz to), kas ir galÄ«gs un nekad netiks izmests, pat ja notiek paralÄla dakÅ”a. PiemÄram, Bitcoin nav Å”Äda mehÄnisma - ja jÅ«s publicÄjat sarežģītÄku Ä·Ädi, tÄ aizstÄs jebkuru mazÄk sarežģītu neatkarÄ«gi no Ä·Äžu garuma. Un EOS, piemÄram, galÄ«gie ir tÄ sauktie Last Irreversible Blocks, kas parÄdÄs vidÄji ik pÄc 432 blokiem (12*21 + 12*15, pre-vote + pre-commit). Å is process bÅ«tÄ«bÄ gaida 2/3 bloku ražotÄju (turpmÄk tekstÄ BP) parakstu. Kad parÄdÄs dakÅ”as, kas ir vecÄkas par pÄdÄjo LIB, tÄs vienkÄrÅ”i tiek izmestas. Å is mehÄnisms ļauj garantÄt, ka darÄ«jums ir iekļauts blokÄ·ÄdÄ un nekad netiks atsaukts neatkarÄ«gi no uzbrucÄja resursiem. ArÄ« pÄdÄjie bloki ir bloki, ko paraksta 2/3 BP Hyperledger, Tendermint un citos uz pBFT balstÄ«tos konsensos. Ir arÄ« lietderÄ«gi protokolu galÄ«guma nodroÅ”inÄÅ”anai padarÄ«t par vienprÄtÄ«bas papildinÄjumu, jo tas var darboties asinhroni ar bloku izveidi un publicÄÅ”anu. Å eit ir labs raksts par galÄ«gumu Ethereum.
GalÄ«gums ir ÄrkÄrtÄ«gi svarÄ«gs lietotÄjiem, kuri bez tÄ var kļūt par "dubulto izdevumu" uzbrukuma upuriem, kur BP "tur" blokus un publicÄ tos pÄc tam, kad tÄ«kls ir "redzÄjis" labu darÄ«jumu. Ja galÄ«guma nav, publicÄtÄ dakÅ”a aizstÄj bloku ar ālabuā darÄ«jumu ar citu, no āsliktasā dakÅ”as, kurÄ tie paÅ”i lÄ«dzekļi tiek pÄrskaitÄ«ti uz uzbrucÄja adresi. PVRB gadÄ«jumÄ prasÄ«bas pÄc galÄ«guma ir vÄl stingrÄkas, jo PVRB veidoÅ”anas dakÅ”as nozÄ«mÄ iespÄju uzbrucÄjam sagatavot vairÄkus nejauÅ”us variantus, lai publicÄtu izdevÄ«gÄko, un iespÄjamÄ uzbrukuma laika ierobežoÅ”ana ir labs risinÄjums.
TÄpÄc labÄkais variants ir apvienot PVRB un galÄ«gumu vienÄ protokolÄ - tad pabeigtais bloks = finalized random, un tas ir tieÅ”i tas, ko mums vajadzÄja iegÅ«t. Tagad spÄlÄtÄji saÅems garantÄtu nejauŔību N sekundÄs un var bÅ«t pÄrliecinÄti, ka to nav iespÄjams atgriezt vai atkÄrtoti atskaÅot.
VienprÄtÄ«gi integrÄtÄ iespÄja ir laba:
asinhronas ievieÅ”anas iespÄja saistÄ«bÄ ar bloku ražoÅ”anu - bloki tiek ražoti kÄ parasti, bet paralÄli tam var darboties PVRB protokols, kas nerada nejauŔību katram blokam
iespÄja ieviest pat smagu kriptogrÄfiju bez ierobežojumiem, kas noteikti viedajiem lÄ«gumiem
iespÄja organizÄt ziÅojumu apmaiÅu ÄtrÄk nekÄ darÄ«jumi ir iekļauti blokÄ·ÄdÄ, piemÄram, daļa protokola var darboties starp mezgliem, neizplatot ziÅojumus tÄ«klÄ
IevieÅ”anas kļūdÄm ir nepiecieÅ”ama tÄ«kla cietÄ daļa
AbÄm PVRB ievieÅ”anas metodÄm ir tiesÄ«bas uz dzÄ«vÄ«bu, taÄu viedo lÄ«gumu ievieÅ”ana mÅ«sdienu blokÄ·ÄdÄs joprojÄm ir diezgan ierobežota skaitļoÅ”anas resursos, un jebkura pÄreja uz nopietnu kriptogrÄfiju bieži vien ir vienkÄrÅ”i neiespÄjama. Un mums bÅ«s nepiecieÅ”ama nopietna kriptogrÄfija, kÄ tas tiks parÄdÄ«ts tÄlÄk. Lai gan Ŕī problÄma nepÄrprotami ir Ä«slaicÄ«ga, daudzu problÄmu risinÄÅ”anai ir nepiecieÅ”ama nopietna kriptogrÄfija lÄ«gumos, un tÄ pakÄpeniski parÄdÄs (piemÄram, sistÄmas lÄ«gumi zkSNARKs Ethereum)
Blockchain, kas nodroÅ”ina caurspÄ«dÄ«gu un uzticamu protokola ziÅojumapmaiÅas kanÄlu, to nedara bez maksas. JebkurÄ decentralizÄtajÄ protokolÄ ir jÄÅem vÄrÄ Sybil uzbrukuma iespÄja; jebkuru darbÄ«bu var veikt vairÄku kontu saskaÅoti spÄki, tÄpÄc, izstrÄdÄjot, ir jÄÅem vÄrÄ uzbrucÄju spÄja izveidot patvaļīgu skaitu protokolu dalÄ«bnieki, kas rÄ«kojas slepenÄ nolÄ«gumÄ.
PVRB un bloku mainīgie.
Es nemeloju, sakot, ka neviens blokÄ·ÄdÄs vÄl nav ieviesis labu PVRB, ko pÄrbaudÄ«juÅ”as daudzas azartspÄļu lietojumprogrammas. KÄpÄc tad Ethereum un EOS ir tik daudz azartspÄļu lietojumprogrammu? Tas mani pÄrsteidz tikpat ļoti kÄ jÅ«s, no kurienes viÅi ieguva tik daudz ānoturÄ«guā nejauŔību pilnÄ«gi deterministiskÄ vidÄ?
IecienÄ«tÄkais veids, kÄ iegÅ«t nejauŔību blokÄ·ÄdÄ, ir paÅemt no bloka kaut kÄdu āneprognozÄjamuā informÄciju un, pamatojoties uz to, izveidot nejauÅ”u informÄciju - vienkÄrÅ”i sajaucot vienu vai vairÄkas vÄrtÄ«bas. Labs raksts par Å”Ädu shÄmu problÄmÄm Å”eit. BlokÄ varat Åemt jebkuru no āneprognozÄjamÄmā vÄrtÄ«bÄm, piemÄram, bloka jaucÄjkodu, darÄ«jumu skaitu, tÄ«kla sarežģītÄ«bu un citas iepriekÅ” nezinÄmas vÄrtÄ«bas. PÄc tam sajauciet tos, vienu vai vairÄkus, un teorÄtiski jums vajadzÄtu iegÅ«t Ä«stu nejauŔību. JÅ«s pat varat pievienot papÄ«ram, ka jÅ«su shÄma ir āpÄckvantu droÅ”aā (jo ir kvantu droÅ”as jaucÄjfunkcijas :)).
DiemžÄl pat pÄckvantu droÅ”Äm jaukÅ”anÄm nepietiek. NoslÄpums slÄpjas prasÄ«bÄs PVRB, atgÄdinÄÅ”u tÄs no iepriekÅ”ÄjÄ raksta:
RezultÄtam ir jÄbÅ«t pierÄdÄmi vienmÄrÄ«gam sadalÄ«jumam, t.i., tam jÄbÅ«t balstÄ«tam uz pierÄdÄmi spÄcÄ«gu kriptogrÄfiju.
Nav iespÄjams kontrolÄt nevienu rezultÄta bitu. TÄ rezultÄtÄ iznÄkumu nevar paredzÄt iepriekÅ”.
JÅ«s nevarat sabotÄt Ä£enerÄÅ”anas protokolu, nepiedaloties protokolÄ vai pÄrslogojot tÄ«klu ar uzbrukuma ziÅojumiem
Visam iepriekÅ”minÄtajam jÄbÅ«t izturÄ«gam pret pieļaujamÄ skaita negodprÄtÄ«gu protokola dalÄ«bnieku (piemÄram, 1/3 dalÄ«bnieku) saskaÅoÅ”anu.
Å ajÄ gadÄ«jumÄ ir izpildÄ«ta tikai prasÄ«ba 1, bet nav izpildÄ«ta prasÄ«ba 2. Jaukjot no bloka neparedzamas vÄrtÄ«bas, mÄs iegÅ«sim vienmÄrÄ«gu sadalÄ«jumu un labus nejauŔības. Bet BP vismaz ir iespÄja āpublicÄt bloku vai nÄā. TÄdÄjÄdi BP var izvÄlÄties vismaz no DIVÄM nejauŔības iespÄjÄm: āsavÄjoā un to, kas izrÄdÄ«sies, ja bloku izveidos kÄds cits. BP jau iepriekÅ” var ānoziegtā, kas notiks, ja viÅÅ” publicÄs bloku, un vienkÄrÅ”i izlems to darÄ«t vai nÄ. TÄdÄjÄdi, spÄlÄjot, piemÄram, āpÄra nepÄraā vai āsarkans/melnsā ruletÄ, viÅÅ” var publicÄt bloku tikai tad, ja redz laimestu. Tas arÄ« padara neÄ«stenojamu stratÄÄ£iju, piemÄram, bloka hash āno nÄkotnesā izmantoÅ”anas. Å ajÄ gadÄ«jumÄ viÅi saka, ka ātiks izmantota nejauŔība, ko iegÅ«st, jaukjot paÅ”reizÄjos datus un nÄkotnes bloka jaukÅ”anu ar augstumu, piemÄram, N + 42, kur N ir paÅ”reizÄjais bloka augstums. Tas nedaudz pastiprina shÄmu, bet tomÄr ļauj BP, lai arÄ« nÄkotnÄ, izvÄlÄties, vai paturÄt bloku vai publicÄt.
BP programmatÅ«ra Å”ajÄ gadÄ«jumÄ kļūst sarežģītÄka, bet ne daudz. VienkÄrÅ”i, apstiprinot un iekļaujot darÄ«jumu blokÄ, tiek Ätri pÄrbaudÄ«ts, vai bÅ«s laimests, un, iespÄjams, tiek atlasÄ«ts viens darÄ«juma parametrs, lai iegÅ«tu lielu laimesta iespÄjamÄ«bu. TajÄ paÅ”Ä laikÄ Å”ÄdÄm manipulÄcijÄm ir gandrÄ«z neiespÄjami noÄ·ert gudru BP, katru reizi var izmantot jaunas adreses un pamazÄm uzvarÄt, neradot aizdomas.
TÄtad metodes, kas izmanto informÄciju no bloka, nav piemÄrotas kÄ universÄla PVRB ievieÅ”ana. IerobežotÄ versijÄ ar likmju lieluma ierobežojumiem, spÄlÄtÄju skaita ierobežojumiem un/vai KYC reÄ£istrÄciju (lai viens spÄlÄtÄjs nevarÄtu izmantot vairÄkas adreses), Ŕīs shÄmas var darboties mazÄs spÄlÄs, bet nekas vairÄk.
PVRB un apÅemties-atklÄt.
Labi, pateicoties jaukÅ”anai un vismaz relatÄ«vajai bloka jaukÅ”anas un citu mainÄ«go neparedzamÄ«bai. Ja atrisinÄsit progresÄ«vo kalnraÄu problÄmu, jums vajadzÄtu iegÅ«t kaut ko piemÄrotÄku. Pievienosim Å”ai shÄmai lietotÄjus - lai viÅi arÄ« ietekmÄ nejauŔību: jebkurÅ” tehniskÄ atbalsta darbinieks pateiks, ka IT sistÄmÄs visnejauÅ”ÄkÄ lieta ir lietotÄju rÄ«cÄ«ba :)
Nav piemÄrota naiva shÄma, kad lietotÄji vienkÄrÅ”i nosÅ«ta nejauÅ”us skaitļus un rezultÄts tiek aprÄÄ·inÄts kÄ, piemÄram, viÅu summas jaucÄjvÄrds. Å ajÄ gadÄ«jumÄ pÄdÄjais spÄlÄtÄjs, izvÄloties savu nejauŔību, var kontrolÄt, kÄds bÅ«s rezultÄts. TÄpÄc tiek izmantots ļoti plaÅ”i izmantotais commit-reveal modelis. DalÄ«bnieki vispirms nosÅ«ta jaucÄjvÄrtÄ«bas no savÄm nejauŔībÄm (commits), un pÄc tam paÅ”i atver nejauŔības (atklÄj). āAtklÄÅ”anasā fÄze sÄkas tikai pÄc tam, kad ir savÄktas nepiecieÅ”amÄs saistÄ«bas, tÄpÄc dalÄ«bnieki var nosÅ«tÄ«t tieÅ”i to nejauÅ”o jaucÄjkodu, no kura viÅi sÅ«tÄ«ja iepriekÅ”. Tagad saliksim to visu kopÄ ar bloka parametriem, un labÄk par to, kas Åemts no nÄkotnes (nejauŔību var atrast tikai vienÄ no nÄkotnes blokiem), un voila - nejauŔība ir gatava! Tagad jebkurÅ” spÄlÄtÄjs ietekmÄ iegÅ«to nejauŔību un var āuzveiktā ļaunprÄtÄ«go BP, ignorÄjot to ar savu, iepriekÅ” nezinÄmo nejauŔību... Varat arÄ« pievienot aizsardzÄ«bu pret protokola sabotÄÅ”anu, neatverot to atklÄÅ”anas stadijÄ - vienkÄrÅ”i izdarot darÄ«jumu, pieprasot pievienot noteiktu summu ā droŔības naudu, kas tiks atgriezta tikai atklÄÅ”anas procedÅ«ras laikÄ. Å ajÄ gadÄ«jumÄ apÅemÅ”anÄs un neizpauÅ”ana bÅ«s neizdevÄ«ga.
Tas bija labs mÄÄ£inÄjums, un Å”Ädas shÄmas pastÄv arÄ« spÄļu DApps, taÄu diemžÄl ar to atkal nepietiek. Tagad ne tikai kalnracis, bet arÄ« jebkurÅ” protokola dalÄ«bnieks var ietekmÄt rezultÄtu. JoprojÄm ir iespÄjams kontrolÄt paÅ”u vÄrtÄ«bu, ar mazÄku mainÄ«gumu un ar izmaksÄm, bet, tÄpat kÄ kalnraÄu gadÄ«jumÄ, ja izlozes rezultÄti ir vÄrtÄ«gÄki par maksu par dalÄ«bu PVRB protokolÄ, tad izlases veidÄ. -producer(RP) var izlemt, vai atklÄt, un joprojÄm var izvÄlÄties no vismaz divÄm nejauÅ”Äm iespÄjÄm.
Bet kļuva iespÄjams sodÄ«t tos, kas apÅemas un neatklÄj, un Ŕī shÄma noderÄs. TÄ vienkÄrŔība ir nopietna priekÅ”rocÄ«ba ā nopietnÄki protokoli prasa daudz jaudÄ«gÄkus aprÄÄ·inus.
PVRB un deterministiskie paraksti.
Ir vÄl viens veids, kÄ piespiest RP nodroÅ”inÄt pseidogadÄ«juma skaitli, ko tas nevar ietekmÄt, ja tam ir āpriekÅ”attÄlsā - tas ir deterministisks paraksts. Å Äds paraksts ir, piemÄram, RSA, nevis ECS. Ja RP ir atslÄgu pÄris: RSA un ECC, un viÅÅ” paraksta noteiktu vÄrtÄ«bu ar savu privÄto atslÄgu, tad RSA gadÄ«jumÄ viÅÅ” saÅems VIENU UN TIKAI VIENU parakstu, un ECS gadÄ«jumÄ viÅÅ” var Ä£enerÄt jebkuru skaitu dažÄdi derÄ«gi paraksti. Tas ir tÄpÄc, ka, veidojot ECS parakstu, tiek izmantots nejauÅ”s numurs, kuru izvÄlas parakstÄ«tÄjs, un to var izvÄlÄties jebkurÄ veidÄ, dodot iespÄju parakstÄ«tÄjam izvÄlÄties vienu no vairÄkiem parakstiem. RSA gadÄ«jumÄ: āviena ievades vÄrtÄ«baā + āviens atslÄgu pÄrisā = āviens parakstsā. Nav iespÄjams paredzÄt, kÄdu parakstu iegÅ«s cits RP, tÄpÄc PVRB ar deterministiskajiem parakstiem var organizÄt, apvienojot vairÄku dalÄ«bnieku, kuri parakstÄ«juÅ”i vienu un to paÅ”u vÄrtÄ«bu, RSA parakstus. PiemÄram, iepriekÅ”ÄjÄ nejauÅ”Ä. Å Ä« shÄma ietaupa daudz resursu, jo paraksti ir gan apstiprinÄjums pareizai uzvedÄ«bai saskaÅÄ ar protokolu, gan nejauŔības avots.
TomÄr pat ar deterministiskiem parakstiem shÄma joprojÄm ir neaizsargÄta pret āpÄdÄjÄ dalÄ«bniekaā problÄmu. PÄdÄjais dalÄ«bnieks joprojÄm var izlemt, vai publicÄt parakstu vai nÄ, tÄdÄjÄdi kontrolÄjot rezultÄtu. JÅ«s varat modificÄt shÄmu, pievienot tai bloku jaucÄjus, veikt apļus tÄ, lai rezultÄts nebÅ«tu iepriekÅ” prognozÄjams, taÄu visi Å”ie paÅÄmieni, pat Åemot vÄrÄ daudzas modifikÄcijas, joprojÄm atstÄj neatrisinÄtu problÄmu par viena dalÄ«bnieka ietekmi uz kolektÄ«vu. rada neuzticamu vidi un var darboties tikai ar ekonomiskiem un laika ierobežojumiem. TurklÄt RSA atslÄgu izmÄrs (1024 un 2048 biti) ir diezgan liels, un blokÄ·Ädes transakciju lielums ir ÄrkÄrtÄ«gi svarÄ«gs parametrs. AcÄ«mredzot nav vienkÄrÅ”a veida, kÄ atrisinÄt problÄmu, turpinÄsim.
PVRB un slepenÄs koplietoÅ”anas shÄmas
KriptogrÄfijÄ ir shÄmas, kas var ļaut tÄ«klam vienoties par vienu un tikai vienu PVRB vÄrtÄ«bu, savukÄrt Å”Ädas shÄmas ir izturÄ«gas pret jebkÄdÄm dažu dalÄ«bnieku ļaunprÄtÄ«gÄm darbÄ«bÄm. Viens noderÄ«gs protokols, ar kuru ir vÄrts iepazÄ«ties, ir Shamir slepenÄ koplietoÅ”anas shÄma. Tas kalpo, lai sadalÄ«tu noslÄpumu (piemÄram, slepeno atslÄgu) vairÄkÄs daļÄs un izplatÄ«tu Ŕīs daļas N dalÄ«bniekiem. NoslÄpums tiek izplatÄ«ts tÄ, ka M daļas no N ir pietiekami, lai to atgÅ«tu, un tÄs var bÅ«t jebkuras M daļas. Ja uz pirkstiem, tad ar nezinÄmas funkcijas grafiku dalÄ«bnieki apmainÄs ar punktiem grafikÄ, un pÄc M punktu saÅemÅ”anas var atjaunot visu funkciju.
Ir sniegts labs skaidrojums Wiki bet spÄlÄties ar to praktiski, lai galvÄ nospÄlÄtu protokolu, noder demo lappuse.
Katrs dalÄ«bnieks Ä£enerÄ savu nejauŔību un izplata no tÄ daļas citiem dalÄ«bniekiem
Katrs dalÄ«bnieks atklÄj savu daļu no pÄrÄjo dalÄ«bnieku noslÄpumiem
Ja dalÄ«bniekam ir vairÄk par M akcijÄm, tad var aprÄÄ·inÄt Ŕī dalÄ«bnieka skaitu, un tas bÅ«s unikÄls neatkarÄ«gi no atklÄto dalÄ«bnieku kopas
AtklÄto nejauŔību kombinÄcija ir vÄlamÄ PVRB
Å eit atseviŔķs dalÄ«bnieks protokola rezultÄtus vairs neietekmÄ, izÅemot gadÄ«jumus, kad nejauŔības izpauÅ”anas sliekÅ”Åa sasniegÅ”ana ir atkarÄ«ga tikai no viÅa. LÄ«dz ar to Å”is protokols, ja ir vajadzÄ«gÄ proporcija RP, kas strÄdÄ pie protokola un ir pieejams, darbojas, ievieÅ”ot kriptogrÄfijas stipruma prasÄ«bas un ir izturÄ«gs pret āpÄdÄjÄ dalÄ«bniekaā problÄmu.
Tas varÄtu bÅ«t ideÄls risinÄjums, Ŕī PVRB shÄma, kuras pamatÄ ir Fiat-Shamir slepenÄ koplietoÅ”ana, ir aprakstÄ«ta, piemÄram, Å”is rakstu. Bet, kÄ minÄts iepriekÅ”, ja mÄÄ£inÄt to pielietot blokÄ·ÄdÄ, parÄdÄs tehniski ierobežojumi. Å eit ir EOS viedÄ lÄ«guma protokola testa ievieÅ”anas piemÄrs un tÄ svarÄ«gÄkÄ daļa - publicÄtÄ koplietoÅ”anas dalÄ«bnieka pÄrbaude: kods. No koda var redzÄt, ka pierÄdÄ«jumu validÄcijai ir nepiecieÅ”ami vairÄki skalÄri reizinÄjumi, un izmantotie skaitļi ir ļoti lieli. JÄsaprot, ka blokÄ·ÄdÄs verifikÄcija notiek brÄ«dÄ«, kad bloku ražotÄjs apstrÄdÄ darÄ«jumu, un kopumÄ jebkuram dalÄ«bniekam ir viegli jÄpÄrbauda protokola pareizÄ«ba, tÄpÄc prasÄ«bas verifikÄcijas funkcijas Ätrumam ir ļoti nopietnas. . Å ajÄ opcijÄ opcija izrÄdÄ«jÄs neefektÄ«va, jo pÄrbaude neietilpa darÄ«jumu limitÄ (0.5 sekundes).
PÄrbaudes efektivitÄte ir viena no vissvarÄ«gÄkajÄm prasÄ«bÄm, lai vispÄrÄji izmantotu visas uzlabotÄs kriptogrÄfijas shÄmas blokÄ·ÄdÄ. PierÄdÄ«jumu veidoÅ”ana, ziÅojumu sagatavoÅ”ana - Ŕīs procedÅ«ras var izÅemt no Ä·Ädes un veikt augstas veiktspÄjas datoros, bet verifikÄciju nevar apiet - tÄ ir vÄl viena svarÄ«ga PVRB prasÄ«ba.
PVRB un sliekÅ”Åa paraksti
IepazÄ«stoties ar slepenÄs koplietoÅ”anas shÄmu, mÄs atklÄjÄm veselu protokolu klasi, ko vieno atslÄgvÄrds āslieksnisā. Ja kÄdas informÄcijas izpauÅ”anai ir nepiecieÅ”ama M godÄ«gu dalÄ«bnieku no N lÄ«dzdalÄ«ba, un godÄ«go dalÄ«bnieku kopa var bÅ«t patvaļīga N apakÅ”kopa, mÄs runÄjam par āsliekÅ”Åaā shÄmÄm. TieÅ”i viÅi ļauj mums tikt galÄ ar āpÄdÄjÄ aktieraā problÄmu, tagad, ja uzbrucÄjs neatklÄs savu noslÄpuma daļu, viÅa vietÄ to izdarÄ«s cits, godÄ«gs dalÄ«bnieks. Å Ä«s shÄmas ļauj vienoties par vienu un tikai vienu nozÄ«mi, pat ja daži dalÄ«bnieki ir sabotÄjuÅ”i protokolu.
Deterministisko parakstu un sliekÅ”Åa shÄmu kombinÄcija ļÄva izstrÄdÄt ļoti Ärtu un daudzsoloÅ”u shÄmu PVRB ievieÅ”anai - tie ir deterministiski sliekÅ”Åa paraksti. Å eit raksts par dažÄdiem sliekÅ”Åa parakstu lietojumiem, un Å”eit ir vÄl viens labs sen lasÄ«ts no Dash.
PÄdÄjÄ rakstÄ ir aprakstÄ«ti BLS paraksti (BLS apzÄ«mÄ Boneh-Lynn-Shacham, Å”eit rakstu), kurÄm ir ļoti svarÄ«ga un programmÄtÄjiem ÄrkÄrtÄ«gi Ärta kvalitÄte ā publiskÄs, slepenÄs, publiskÄs atslÄgas un BLS parakstus var kombinÄt savÄ starpÄ, izmantojot vienkÄrÅ”as matemÄtiskas darbÄ«bas, savukÄrt to kombinÄcijas paliek derÄ«gas atslÄgas un paraksti, ļaujot Ärti apkopot daudzas. parakstus vienÄ un daudzas publiskÄs atslÄgas vienÄ. Tie ir arÄ« deterministiski un tiem paÅ”iem ievades datiem rada vienu un to paÅ”u rezultÄtu. Pateicoties Å”ai kvalitÄtei, BLS parakstu kombinÄcijas paÅ”as ir derÄ«gas atslÄgas, kas ļauj realizÄt opciju, kurÄ M no N dalÄ«bniekiem rada vienu un tikai vienu parakstu, kas ir deterministisks, publiski pÄrbaudÄms un neprognozÄjams lÄ«dz brÄ«dim, kad to atver Mth. dalÄ«bnieks.
ShÄmÄ ar sliekÅ”Åa BLS parakstiem katrs dalÄ«bnieks paraksta kaut ko, izmantojot BLS (piemÄram, iepriekÅ”Äjo nejauŔību), un kopÄjais sliekÅ”Åa paraksts ir vÄlamais nejauÅ”s. BLS parakstu kriptogrÄfiskÄs Ä«paŔības atbilst izlases kvalitÄtes prasÄ«bÄm, sliekÅ”Åa daļa aizsargÄ pret āpÄdÄjo dalÄ«bniekuā, un unikÄlÄ atslÄgu kombinÄjamÄ«ba ļauj realizÄt daudz interesantÄkus algoritmus, kas ļauj, piemÄram, efektÄ«vi apkopot protokola ziÅojumus. .
TÄtad, ja jÅ«s veidojat PVRB savÄ blokÄ·ÄdÄ, jÅ«s, visticamÄk, nonÄksit pie BLS sliekÅ”Åa parakstu shÄmas, un vairÄki projekti jau to izmanto. PiemÄram, DFinity (Å”eit etalons, kas ievieÅ” Ä·Ädi, un Å”eit pÄrbaudÄmas slepenÄs koplietoÅ”anas ievieÅ”anas piemÄrs) vai Keep.network (Å”eit ir viÅu izlases bÄka). dzeltenais papÄ«rs, Bet piemÄrs viedais lÄ«gums, kas apkalpo protokolu).
PVRB ievieŔana
DiemžÄl joprojÄm neredzam PVRB blokÄ·ÄdÄs ieviestu gatavu protokolu, kas bÅ«tu pierÄdÄ«jis savu droŔību un stabilitÄti. Lai arÄ« paÅ”i protokoli ir gatavi, tehniski tos piemÄrot esoÅ”ajiem risinÄjumiem nav viegli. CentralizÄtÄm sistÄmÄm PVRB nav jÄgas, un decentralizÄtÄs ir stingri ierobežotas visos skaitļoÅ”anas resursos: CPU, atmiÅÄ, krÄtuvÄ, I/O. PVRB projektÄÅ”ana ir dažÄdu protokolu kombinÄcija, lai izveidotu kaut ko tÄdu, kas atbilst visÄm prasÄ«bÄm vismaz kÄdai dzÄ«votspÄjÄ«gai blokÄ·Ädei. Viens protokols aprÄÄ·ina efektÄ«vÄk, bet prasa vairÄk ziÅojumu starp RP, bet otrs prasa ļoti maz ziÅojumu, bet pierÄdÄ«juma izveide var bÅ«t uzdevums, kas aizÅem desmitiem minÅ«Å”u vai pat stundu.
Es uzskaitÄ«Å”u faktorus, kas jums bÅ«s jÄÅem vÄrÄ, izvÄloties kvalitatÄ«vu PVRB:
KriptogrÄfiskais spÄks. JÅ«su PVRB ir jÄbÅ«t stingri objektÄ«vam, bez iespÄjas kontrolÄt nevienu bitu. DažÄs shÄmÄs tas tÄ nav, tÄpÄc zvaniet kriptogrÄfam
āPÄdÄjÄ aktieraā problÄma. JÅ«su PVRB ir jÄbÅ«t izturÄ«gam pret uzbrukumiem, kad uzbrucÄjs, kas kontrolÄ vienu vai vairÄkus RP, var izvÄlÄties vienu no diviem rezultÄtiem.
Protokola sabotÄžas problÄma. JÅ«su PVRB ir jÄbÅ«t izturÄ«gam pret uzbrukumiem, kad uzbrucÄjs, kurÅ” kontrolÄ vienu vai vairÄkus RP, izlemj, vai tas ir nejauÅ”s vai nÄ, un tas var tikt garantÄts vai ar noteiktu varbÅ«tÄ«bu to ietekmÄt.
ZiÅojumu skaita problÄma. JÅ«su RP ir jÄnosÅ«ta minimÄlais skaits ziÅojumu blokÄ·Ädei un pÄc iespÄjas jÄizvairÄs no sinhronÄm darbÄ«bÄm, piemÄram, tÄdÄm situÄcijÄm kÄ āEs nosÅ«tÄ«ju informÄciju, gaidu atbildi no konkrÄta dalÄ«bniekaā. P2p tÄ«klos, Ä«paÅ”i Ä£eogrÄfiski izkliedÄtajos, nevajadzÄtu paļauties uz Ätru atbildi
AprÄÄ·inu sarežģītÄ«bas problÄma. Jebkura PVRB Ä·Ädes posma pÄrbaudei jÄbÅ«t ÄrkÄrtÄ«gi vienkÄrÅ”ai, jo to veic visi tÄ«kla pilnie klienti. Ja ievieÅ”ana tiek veikta, izmantojot viedo lÄ«gumu, tad Ätruma prasÄ«bas ir ļoti stingras
PieejamÄ«bas un dzÄ«vÄ«guma problÄma. JÅ«su PVRB jÄcenÅ”as bÅ«t noturÄ«gam pret situÄcijÄm, kad daļa tÄ«kla kÄdu laiku kļūst nepieejama un daļa RP vienkÄrÅ”i pÄrstÄj darboties.
Uzticamas iestatÄ«Å”anas un sÄkotnÄjÄs atslÄgas izplatÄ«Å”anas problÄma. Ja jÅ«su PVRB izmanto protokola primÄro iestatÄ«jumu, tas ir atseviŔķs liels un nopietns stÄsts. Å eit piemÄrs. Ja dalÄ«bniekiem pirms protokola sÄkÅ”anas jÄpasaka viens otram savas atslÄgas, tÄ ir problÄma arÄ« tad, ja mainÄs dalÄ«bnieku sastÄvs
AttÄ«stÄ«bas problÄmas. BibliotÄku pieejamÄ«ba nepiecieÅ”amajÄs valodÄs, to droŔība un veiktspÄja, publicitÄte, kompleksie testi u.c.
PiemÄram, sliekÅ”Åa BLS parakstiem ir bÅ«tiska problÄma ā pirms darba uzsÄkÅ”anas dalÄ«bniekiem ir jÄizdala atslÄgas vienam otram, organizÄjot grupu, kurÄ darbosies slieksnis. Tas nozÄ«mÄ, ka vismaz viena apmaiÅas kÄrta decentralizÄtÄ tÄ«klÄ bÅ«s jÄgaida, un, Åemot vÄrÄ, ka Ä£enerÄtais rands, piemÄram, ir nepiecieÅ”ams spÄlÄs, gandrÄ«z reÄllaikÄ, tas nozÄ«mÄ, ka Å”ajÄ posmÄ ir iespÄjama protokola sabotÄža. , un tiek zaudÄtas sliekÅ”Åa shÄmas priekÅ”rocÄ«bas. Å Ä« problÄma jau ir vienkÄrÅ”Äka nekÄ iepriekÅ”ÄjÄs, taÄu joprojÄm ir jÄizstrÄdÄ atseviŔķa kÄrtÄ«ba sliekÅ”Åu grupu veidoÅ”anai, kas bÅ«s jÄaizsargÄ ekonomiski, izmantojot noguldÄ«jumus un lÄ«dzekļu izÅemÅ”anu (slashing) no dalÄ«bniekiem, kuri neievÄro noteikumus. protokols. ArÄ« BLS verifikÄcija ar pieÅemamu droŔības lÄ«meni vienkÄrÅ”i neiederas, piemÄram, standarta EOS vai Ethereum darÄ«jumÄ - verifikÄcijai vienkÄrÅ”i nepietiek laika. LÄ«guma kods ir WebAssembly vai EVM, ko izpilda virtuÄlÄ maŔīna. KriptogrÄfiskÄs funkcijas nav ieviestas sÄkotnÄji (vÄl), un tÄs darbojas desmitiem reižu lÄnÄk nekÄ parastÄs kriptogrÄfijas bibliotÄkas. Daudzi protokoli neatbilst prasÄ«bÄm, vienkÄrÅ”i pamatojoties uz atslÄgas apjomu, piemÄram, 1024 un 2048 biti RSA, kas ir 4ā8 reizes lielÄks nekÄ standarta darÄ«juma paraksts Bitcoin un Ethereum.
Savu lomu spÄlÄ arÄ« implementÄciju klÄtbÅ«tne dažÄdÄs programmÄÅ”anas valodÄs, kuru ir maz, it Ä«paÅ”i jauniem protokoliem. Opcijai ar integrÄciju konsensÄ ir nepiecieÅ”ams protokols rakstÄ«t platformas valodÄ, tÄpÄc jums bÅ«s jÄmeklÄ kods Go for geth, Rust for Parity, C++ EOS. Katram bÅ«s jÄmeklÄ JavaScript kods, un, tÄ kÄ JavaScript un kriptogrÄfija nav Ä«paÅ”i tuvi draugi, palÄ«dzÄs WebAssembly, kas tagad noteikti pretendÄ uz nÄkamo svarÄ«go interneta standartu.
SecinÄjums
Ceru, ka iepriekÅ”ÄjÄ raksts Man izdevÄs jÅ«s pÄrliecinÄt, ka nejauÅ”u skaitļu Ä£enerÄÅ”ana blokÄ·ÄdÄ ir ļoti svarÄ«ga daudzos decentralizÄto tÄ«klu dzÄ«ves aspektos, un ar Å”o rakstu es parÄdÄ«ju, ka Å”is uzdevums ir ÄrkÄrtÄ«gi ambiciozs un grÅ«ts, taÄu labi risinÄjumi jau pastÄv. KopumÄ protokola galÄ«gais dizains ir iespÄjams tikai pÄc masveida testu veikÅ”anas, kas Åem vÄrÄ visus aspektus, sÄkot no iestatÄ«Å”anas lÄ«dz kļūdu emulÄcijai, tÄpÄc jÅ«s, visticamÄk, neatradÄ«sit gatavas receptes komandu dokumentos un rakstos, un mÄs noteikti to neatradÄ«sim. izlemiet tuvÄkÄ gada vai divu laikÄ un uzrakstiet ādari tÄ, tieÅ”i tÄā.
Äau, mÅ«su PVRB blokÄ·ÄdÄ, kas tiek izstrÄdÄta Haya, mÄs apÅÄmÄmies izmantot sliekÅ”Åa BLS parakstus, mÄs plÄnojam ieviest PVRB konsensa lÄ«menÄ«, jo viedajos lÄ«gumos ar pieÅemamu droŔības lÄ«meni verifikÄcija vÄl nav iespÄjama. IespÄjams, ka mÄs izmantojam divas shÄmas vienlaikus: pirmkÄrt, dÄrgu slepeno koplietoÅ”anu, lai izveidotu ilgtermiÅa random_seed, un pÄc tam mÄs to izmantojam kÄ pamatu augstfrekvences nejauŔības Ä£enerÄÅ”anai, izmantojot deterministiskus sliekÅ”Åa BLS parakstus, iespÄjams, aprobežosimies ar tikai viena no shÄmÄm. DiemžÄl iepriekÅ” pateikt, kÄds bÅ«s protokols, nav iespÄjams, vienÄ«gais labums ir tas, ka, tÄpat kÄ zinÄtnÄ, arÄ« inženiertehniskajÄs problÄmÄs rezultÄts ir negatÄ«vs, un katrs jauns problÄmas risinÄÅ”anas mÄÄ£inÄjums ir vÄl viens solis. visu problÄmu iesaistÄ«to personu izpÄte. Lai apmierinÄtu biznesa prasÄ«bas, mÄs risinÄm konkrÄtu praktisku problÄmu - spÄļu aplikÄciju nodroÅ”inÄÅ”anu ar uzticamu entropijas avotu, tÄpÄc mums ir jÄpievÄrÅ” uzmanÄ«ba arÄ« paÅ”ai blokÄ·Ädei, jo Ä«paÅ”i Ä·Ädes galÄ«guma un tÄ«kla pÄrvaldÄ«bas jautÄjumiem.
Un, lai gan mÄs blokÄ·ÄdÄs vÄl neredzam pÄrbaudÄ«tu izturÄ«gu PVRB, kas bÅ«tu izmantots pietiekami ilgu laiku, lai to pÄrbaudÄ«tu reÄlas lietojumprogrammas, vairÄkas pÄrbaudes, slodzes un, protams, reÄli uzbrukumi, taÄu iespÄjamo ceļu skaits apstiprina, ka risinÄjums pastÄv, un kÄds no Å”iem algoritmiem galu galÄ atrisinÄs problÄmu. MÄs labprÄt dalÄ«simies ar rezultÄtiem un pateicamies citÄm komandÄm, kas arÄ« strÄdÄ pie Ŕī jautÄjuma, par rakstiem un kodu, kas ļauj inženieriem divreiz neuzkÄpt uz viena grÄbekļa.
TÄpÄc, satiekot programmÄtÄju, kurÅ” izstrÄdÄ decentralizÄtu nejauŔību, esiet uzmanÄ«gs un gÄdÄ«gs, un vajadzÄ«bas gadÄ«jumÄ sniedziet psiholoÄ£isku palÄ«dzÄ«bu :)