Posible ba nga makamugna og mga random nga numero kung wala kami pagsalig sa usag usa? Bahin 1

Hoy Habr!

Niini nga artikulo maghisgot ako bahin sa henerasyon sa pseudo-random nga mga numero sa mga partisipante nga wala’y pagsalig sa usag usa. Sama sa atong makita sa ubos, ang pagpatuman sa usa ka "halos" maayo nga generator kay yano ra, apan ang usa ka maayo kaayo lisud.

Ngano nga gikinahanglan nga makamugna og random nga mga numero sa mga partisipante nga dili mosalig sa usag usa? Ang usa ka lugar sa aplikasyon mao ang mga desentralisadong aplikasyon. Pananglitan, ang usa ka aplikasyon nga modawat ug pusta gikan sa usa ka partisipante ug magdoble sa kantidad nga adunay 49% nga posibilidad o magkuha sa usa ka 51% nga posibilidad magamit lamang kung kini dili mapihigon nga makadawat sa usa ka random nga numero. Kung ang usa ka tig-atake makaimpluwensya sa sangputanan sa random number generator, ug bisan gamay nga pagtaas sa iyang higayon nga makadawat usa ka bayad sa aplikasyon, dali ra niya kini gub-on.

Kung nagdesinyo kami og usa ka giapod-apod nga random nga numero nga henerasyon nga protocol, gusto namon nga kini adunay tulo nga mga kabtangan:

  1. Kinahanglang dili siya mapihigon. Sa laing pagkasulti, walay partisipante ang kinahanglan sa bisan unsang paagi makaimpluwensya sa resulta sa random number generator.

  2. Kinahanglang dili siya matag-an. Sa laing pagkasulti, walay partisipante ang kinahanglang makatag-an kon unsa nga numero ang mabuhat (o isulti ang bisan unsa sa mga kabtangan niini) sa dili pa kini mamugna.

  3. Ang protocol kinahanglan nga mabuhi, nga mao, makasugakod sa kamatuoran nga ang usa ka porsyento sa mga partisipante nga nag-disconnect gikan sa network o tinuyo nga mosulay sa pagpahunong sa protocol.

Niini nga artikulo atong tan-awon ang duha ka mga pamaagi: RANDAO + VDF ug ang pagduol sa mga erasure code. Sa sunod nga bahin, atong susihon sa detalye ang pamaagi base sa mga pirma sa threshold.

Apan una, atong tan-awon ang usa ka yano ug kasagarang gigamit nga algorithm nga mabuhi, dili matag-an, apan mapihigon.

RANDAO

Ang RANDAO usa ka yano kaayo ug busa kasagarang gigamit nga pamaagi sa pagmugna og randomness. Ang tanan nga mga partisipante sa network una nga nagpili sa usa ka pseudorandom nga numero, dayon ang matag partisipante magpadala usa ka hash sa napili nga numero. Sunod, ang mga partisipante magpuli-puli sa pagpadayag sa ilang gipili nga mga numero ug paghimo sa XOR nga operasyon sa gipadayag nga mga numero, ug ang resulta niini nga operasyon nahimong resulta sa protocol.

Ang lakang sa pagmantala sa mga hash sa dili pa ibutyag ang mga numero gikinahanglan aron ang tig-atake dili makapili sa iyang numero human niya makita ang mga numero sa ubang mga partisipante. Kini magtugot kaniya sa halos usa ka kamot sa pagtino sa output sa random number generator.

Atol sa dagan sa protocol, ang mga partisipante kinahanglan nga moabut sa usa ka komon nga desisyon (gitawag nga consensus) kaduha: kanus-a magsugod sa pagpadayag sa pinili nga mga numero, ug busa mohunong sa pagdawat sa mga hash, ug kanus-a mohunong sa pagdawat sa pinili nga mga numero ug pagkalkula sa resulta nga random numero. Ang paghimo sa ingon nga mga desisyon tali sa mga partisipante nga wala’y pagsalig sa usag usa dili usa ka dali nga buluhaton sa iyang kaugalingon, ug balikan namon kini sa umaabot nga mga artikulo; sa kini nga artikulo among hunahunaon nga ang ingon nga algorithm sa konsensus magamit kanamo.

Asa sa mga kabtangan nga atong gihulagway sa ibabaw ang anaa sa RANDAO? Kini dili matag-an, adunay sama nga kalagsik sa nagpahiping consensus protocol, apan kini mapihigon. Sa piho, ang usa ka tig-atake mahimong maobserbahan ang network, ug pagkahuman ang ubang mga partisipante magpadayag sa ilang mga numero, mahimo niyang kuwentahon ang ilang XOR, ug magdesisyon kung ipadayag o dili ang iyang numero aron maimpluwensyahan ang sangputanan. Samtang kini nagpugong sa tig-atake sa usa ka kamot sa pagtino sa output sa random number generator, kini naghatag gihapon kaniya og 1 ka gamay nga impluwensya. Ug kon ang mga tig-atake mokontrolar sa pipila ka mga partisipante, nan ang gidaghanon sa mga bits nga ilang kontrolahon mahimong katumbas sa gidaghanon sa mga partisipante ubos sa ilang kontrol.

Posible ba nga makamugna og mga random nga numero kung wala kami pagsalig sa usag usa? Bahin 1

Ang impluwensya sa mga tig-atake mahimong mapakunhod pag-ayo pinaagi sa pag-require nga ang mga partisipante magpadayag sa mga numero sa han-ay. Unya ang tig-atake makahimo lamang sa pag-impluwensya sa resulta kung kini giablihan sa katapusan. Samtang ang impluwensya gamay ra kaayo, ang algorithm gipihig gihapon.

RANDAO+VDF

Usa ka paagi sa paghimo sa RANDAO nga walay pagpihig mao kini: human mapadayag ang tanan nga mga numero ug ang XOR makalkula, ang resulta niini ipakaon sa input sa usa ka function, nga nagkinahanglan og taas nga panahon sa pagkalkulo, apan nagtugot kanimo sa pagsusi sa pagkahusto sa dali kaayo ang pagkalkula.

(vdf_output, vdf_proof) = VDF_compute(input) // это очень медленно
correct = VDF_verify(input, vdf_output, vdf_proof) // это очень быстро

Kini nga function gitawag ug Verifiable Delay Function, o VDF. Kung ang pagkuwenta sa katapusang resulta mas dugay kay sa yugto sa pagbutyag sa numero, nan ang tig-atake dili makatagna sa epekto sa pagpakita o pagtago sa iyang numero, ug busa mawad-an siya sa kahigayonan nga maimpluwensyahan ang resulta.

Ang pag-ugmad ug maayong mga VDF lisud kaayo. Adunay pipila ka mga breakthroughs bag-o lang, e.g. kini и kini, nga naghimo sa VDF nga mas praktikal sa praktis, ug ang Ethereum 2.0 nagplano sa paggamit sa RANDAO uban sa VDF isip usa ka random nga tinubdan sa numero sa taas nga termino. Gawas sa kamatuoran nga kini nga pamaagi dili matag-an ug dili mapihigon, kini adunay dugang nga kaayohan nga mahimong mabuhi kung labing menos duha ka mga partisipante ang anaa sa network (nagtuo nga ang consensus protocol nga gigamit mahimo nga mahimo kung makig-atubang sa gamay nga gidaghanon sa mga partisipante).

Ang pinakadako nga hagit niini nga pamaagi mao ang pag-set up sa VDF sa ingon nga bisan ang usa ka partisipante nga adunay mahal kaayo nga espesyal nga hardware dili makahimo sa pagkalkulo sa VDF sa dili pa matapos ang bahin sa pagkadiskobre. Sa tinuud, ang algorithm kinahanglan nga adunay usa ka hinungdanon nga margin sa kaluwasan, ingon 10x. Ang numero sa ubos nagpakita sa usa ka pag-atake sa usa ka aktor nga adunay espesyal nga ASIC nga nagtugot kaniya sa pagpadagan sa usa ka VDF nga mas paspas kaysa sa oras nga gigahin aron ipadayag ang RANDAO nga kumpirmasyon. Ang maong partisipante mahimo gihapong kuwentahon ang kataposang resulta gamit o dili gamit ang iyang numero, ug unya, base sa kalkulasyon, pilion kon ipakita ba kini o dili.

Posible ba nga makamugna og mga random nga numero kung wala kami pagsalig sa usag usa? Bahin 1

Alang sa pamilyang VDF nga gihisgutan sa ibabaw, ang paghimo sa usa ka gipahinungod nga ASIC mahimong 100+ ka beses nga mas taas kaysa sa naandan nga hardware. Mao nga kung ang yugto sa pag-deploy molungtad og 10 segundos, nan ang VDF nga nakalkula sa ingon nga ASIC kinahanglan nga molungtad labaw pa sa 100 segundos aron adunay usa ka 10x nga margin sa kaluwasan, ug sa ingon ang parehas nga VDF nga nakalkula sa hardware sa produkto kinahanglan nga 100x 100 segundo = ~3 ka oras.

Ang Ethereum Foundation nagplano nga sulbaron kini nga problema pinaagi sa paghimo sa kaugalingon nga magamit sa publiko, libre nga mga ASIC. Sa higayon nga kini mahitabo, ang tanan nga uban nga mga protocol mahimo usab nga mapahimuslan niini nga teknolohiya, apan hangtud niana ang RANDAO + VDF nga pamaagi dili mahimo nga mahimo alang sa mga protocol nga dili mamuhunan sa pagpalambo sa ilang kaugalingong mga ASIC.

Daghang mga artikulo, video ug uban pang impormasyon bahin sa VDF ang nakolekta sa kini nga site.

Gigamit namo ang mga erasure code

Niini nga seksyon, atong tan-awon ang usa ka random number generation protocol nga gigamit pagwagtang sa mga code. Makatugot kini hangtod sa ⅓ nga mga tig-atake samtang nagpabilin nga mabuhi, ug gitugotan hangtod sa ⅔ mga tig-atake nga maglungtad sa dili pa nila matagna o maimpluwensyahan ang sangputanan.

Ang nag-unang ideya sa protocol mao ang mosunod. Alang sa kayano, atong isipon nga adunay eksaktong 100 ka mga partisipante. Atong isipon usab nga ang tanang partisipante sa lokal adunay pipila ka pribado nga yawe, ug ang publikong yawe sa tanang partisipante nahibaloan sa tanang partisipante:

  1. Ang matag partisipante sa lokal nga adunay usa ka taas nga hilo, gibahin kini sa 67 ka bahin, nagmugna og mga erasure code aron makakuha og 100 ka bahin aron ang bisan unsang 67 igo na aron mabawi ang hilo, i-assign ang matag usa sa 100 nga bahin sa usa sa mga partisipante, ug i-encrypt kini sa publiko nga yawe sa parehas nga partisipante. Ang tanan nga gi-encode nga bahin gipatik dayon.

  2. Ang mga partisipante naggamit og usa ka matang sa consensus aron makab-ot ang kasabutan sa coded sets gikan sa piho nga 67 ka partisipante.

  3. Sa higayon nga maabot ang consensus, ang matag partisipante mokuha sa na-encode nga mga bahin sa matag usa sa 67 ka set nga gi-encrypt sa ilang publikong yawe, nag-decrypt sa tanan nga mga bahin, ug nagmantala sa tanan nga na-decrypted nga mga bahin.

  4. Kung ang 67 ka mga partisipante nakakompleto sa lakang (3), ang tanan nga gikasabutan nga mga set mahimong hingpit nga ma-decode ug matukod pag-usab tungod sa mga kabtangan sa mga erasure code, ug ang katapusang numero mahimong makuha isip XOR sa mga inisyal nga laray nga gisugdan sa mga partisipante sa (1) .

Posible ba nga makamugna og mga random nga numero kung wala kami pagsalig sa usag usa? Bahin 1

Kini nga protocol mahimong ipakita nga dili mapihigon ug dili matag-an. Ang resulta nga random nga numero madeterminar human maabot ang consensus, apan wala mahibaloi ni bisan kinsa hangtod sa ⅔ sa mga partisipante mag-decode sa mga bahin nga gi-encrypt gamit ang ilang public key. Busa, ang random nga numero matino sa dili pa ang impormasyon nga igo sa pagtukod pag-usab niini gimantala.

Unsa ang mahitabo kung sa lakang (1) ang usa sa mga partisipante nagpadala sa mga naka-encode nga bahin sa ubang mga partisipante nga dili husto nga kodigo sa pagpapas alang sa pipila ka mga string? Kung wala’y dugang nga mga pagbag-o, ang lainlaing mga partisipante dili na makabawi sa hilo, o mabawi nila ang lainlaing mga kuwerdas, nga moresulta sa lainlaing mga partisipante nga makadawat usa ka lahi nga random nga numero. Aron mapugngan kini, mahimo nimo ang mga musunud: ang matag partisipante, dugang sa mga gi-encode nga bahin, nagkalkula usab Merkla nga kahoy ang tanan nga mga bahin, ug nagpadala sa matag partisipante ang gi-encode nga bahin mismo ug ang gamut sa kahoy nga merkle, ug pamatuod sa paglakip sa bahin sa kahoy nga merkle. Sa consensus sa lakang (2), ang mga partisipante unya dili lamang magkauyon sa usa ka set sa mga set, apan sa usa ka hugpong sa mga piho nga mga gamut sa maong mga kahoy (kon ang pipila ka partisipante mitipas gikan sa protocol, ug nagpadala sa lain-laing mga merkle mga gamot sa kahoy ngadto sa lain-laing mga partisipante, ug duha ka ingon nga mga gamut gipakita sa panahon sa consensus, ang iyang laray wala gilakip sa set sa resulta). Isip resulta sa consensus, aduna kitay 67 ka na-encode nga mga linya ug ang katugbang nga mga gamot sa merkle tree nga adunay labing menos 67 ka partisipante (dili kinahanglan nga pareho ang mga nagsugyot sa katugbang nga mga linya), kinsa alang sa matag usa sa 67 ka mga linya adunay usa ka mensahe nga adunay bahin sa erasure code, ug usa ka pruweba nga ang pagkahitabo sa ilang bahin sa katugbang nga kahoy nahanaw.

Sa diha nga sa lakang (4) ang partisipante mag-decipher sa 67 ka beats para sa usa ka string ug mosulay sa pagtukod pag-usab sa orihinal nga string gikan kanila, usa sa mga opsyon mao ang posible nga:

  1. Ang hilo gipahiuli, ug kung kini mapapas-encode pag-usab, ug ang Merkle nga kahoy gikalkulo alang sa lokal nga kalkulado nga mga bahin, ang gamut motakdo sa usa diin ang consensus naabot.

  2. Ang laray gipasig-uli, apan ang lokal nga kalkulado nga gamut dili motakdo sa usa diin naabot ang consensus.

  3. Ang laray wala mabalik.

Sayon nga ipakita nga kung ang kapilian (1) nahitabo alang sa labing menos usa ka partisipante sa ibabaw, unya ang kapilian (1) nahitabo alang sa tanan nga mga partisipante, ug vice versa, kung ang kapilian (2) o (3) nahitabo alang sa labing menos usa ka partisipante, nan para sa tanang partisipante ang opsyon (2) o (3) mahitabo. Busa, alang sa matag laray sa set, ang tanan nga mga partisipante malampuson nga makabawi niini, o ang tanan nga mga partisipante mapakyas sa pagbawi niini. Ang resulta nga random nga numero usa ka XOR sa mga laray lamang nga nakuha sa mga partisipante.

Mga pirma sa threshold

Ang laing paagi sa pagka- random mao ang paggamit sa gitawag nga BLS threshold signatures. Ang usa ka random number generator base sa threshold signatures adunay parehas nga mga garantiya sa erasure code-based algorithm nga gihulagway sa ibabaw, apan adunay mas ubos nga asymptotic nga gidaghanon sa mga mensahe nga gipadala sa network alang sa matag namugna nga numero.

Ang mga pirma sa BLS usa ka disenyo nga nagtugot sa daghang mga partisipante sa paghimo og usa ka komon nga pirma alang sa usa ka mensahe. Kini nga mga pirma sagad gigamit aron makadaginot sa wanang ug bandwidth pinaagi sa dili kinahanglan nga daghang mga pirma nga ipadala. 

Usa ka kasagarang aplikasyon alang sa mga pirma sa BLS sa mga protocol sa blockchain, dugang sa pagmugna og mga random nga numero, mao ang pagpirma sa block sa mga protocol sa BFT. Ingnon ta nga 100 ka mga partisipante ang naghimo og mga bloke, ug ang usa ka bloke giisip nga final kung 67 kanila ang mopirma niini. Mahimo nilang tanan nga isumite ang ilang mga bahin sa pirma sa BLS ug mogamit sa pipila ka consensus algorithm aron magkauyon sa 67 niini ug dayon i-merge sila sa usa ka pirma sa BLS. Ang bisan unsang 67 (o daghan pa) nga mga bahin mahimong magamit sa paghimo sa katapusan nga pirma, nga magdepende kung diin ang 67 nga mga pirma gihiusa ug busa mahimo’g magkalainlain, bisan kung ang lainlaing mga kapilian sa 67 nga mga partisipante maghimo usa ka lahi nga pirma, bisan unsang ingon nga pirma mahimong balido. pirma para sa block. Ang nahabilin nga mga partisipante kinahanglan ra nga makadawat ug pamatud-an ang usa lamang ka pirma matag bloke, imbes nga 67, sa network, nga makapakunhod pag-ayo sa load sa network.

Kini nahimo nga kung ang mga pribadong yawe nga gigamit sa mga partisipante gihimo sa usa ka piho nga paagi, nan bisan unsa nga 67 nga pirma (o daghan pa, apan dili moubos) ang giipon, ang sangputanan nga pirma parehas. Mahimo kining gamiton isip usa ka tinubdan sa randomness: ang mga partisipante una nga nagkauyon sa pipila ka mensahe nga ilang pirmahan (kini mahimo nga ang output sa RANDAO o ang hash sa katapusan nga block, dili kini importante basta kini mag-usab sa matag higayon. ug makanunayon) ug paghimo usa ka pirma sa BLS alang niini. Ang resulta sa henerasyon dili matag-an hangtod ang 67 ka mga partisipante maghatag sa ilang mga bahin, ug pagkahuman ang output gitakda nang daan ug dili magdepende sa mga aksyon sa bisan kinsa nga partisipante.

Kini nga pamaagi sa randomness mahimo basta dili moubos sa ⅔ sa mga partisipante nga online pareho nga nagsunod sa protocol, ug walay bias ug dili matag-an basta labing menos ⅓ sa mga partisipante nagsunod sa protocol. Importante nga hinumdoman nga ang tig-atake nga nagkontrol sa labaw sa ⅓ apan ubos sa ⅔ sa mga partisipante makapugong sa protocol, apan dili makatagna o makaimpluwensya sa output niini.

Ang mga pirma sa threshold mismo usa ka makapaikag kaayo nga hilisgutan. Sa ikaduhang bahin sa artikulo, atong tukion sa detalye kon sa unsang paagi sila nagtrabaho, ug sa unsang paagi tukma nga gikinahanglan ang pagmugna sa mga yawe sa partisipante aron ang mga pirma sa threshold mahimong magamit isip usa ka random number generator.

Sa konklusyon

Kini nga artikulo mao ang una sa usa ka serye sa mga teknikal nga artikulo sa blog DUOL. Ang NEAR usa ka protocol sa blockchain ug plataporma alang sa pagpalambo sa mga desentralisadong aplikasyon nga adunay gibug-aton sa kasayon ​​sa pagpalambo ug kasayon ​​sa paggamit alang sa mga end user.

Ang protocol code bukas, ang among pagpatuman gisulat sa Rust, kini makita dinhi.

Makita nimo kung unsa ang hitsura sa pag-uswag alang sa NEAR ug mag-eksperimento sa online IDE dinhi.

Mahimo nimong sundon ang tanan nga balita sa Russian sa grupo sa telegrama ug sa grupo sa VKontakte, ug sa English sa opisyal twitter.

О скорых встреч!

Source: www.habr.com

Idugang sa usa ka comment