Numeri aleatorii è rete decentralizate: implementazioni

Introduzione

function getAbsolutelyRandomNumer() {
        return 4; // returns absolutely random number!
}

Cum'è cù u cuncettu di un cifru assolutamente forte da a criptografia, i veri protokolli "Publicly Verifiable Random Beacon" (in seguitu PVRB) pruvate solu di avvicinassi u più pussibule à u schema ideale, perchè in e rete reale ùn hè micca applicabile in a so forma pura: hè necessariu d'accordu rigurosu nantu à un pocu, ci deve esse parechje volte, è tutti i missaghji deve esse perfettamenti veloci è sempre consegnati. Di sicuru, questu ùn hè micca u casu in e rete reale. Per quessa, quandu cuncepisce PVRBs per i travaglii specifichi in i blockchains muderni, in più di l'impossibilità di cuntrullà l'aleatoriu resultanti è a forza criptografica, sò assai più prublemi puramente architetturali è tecnichi.

Per PVRB, u blockchain stessu hè essenzialmente un mediu di cumunicazione in quale messagi = transazzione. Questu permette di astrazione parzialmente da i prublemi di a rete, a non consegna di i missaghji, i prublemi cù middleware - tutti questi risichi sò assunti da a rete decentralizata, è u so valore principale per PVRB hè l'incapacità di revocà o di corruzzione una transazzione digià mandata - questu hè. ùn permettenu micca i participanti di ricusà di participà à u protocolu, salvu chì ùn anu realizatu un attaccu successu à u cunsensu. Stu livellu di sicurità hè accettabile, cusì PVRB deve esse resistenti à a collusione da i participanti à esattamente u listessu puntu cum'è a catena principale di blockchain. Inoltre, questu suggerenu chì u PVRB deve esse parti di u cunsensu se a reta d'accordu nantu à u bloccu principale, ancu s'ellu hè ancu d'accordu nantu à l'unicu risultatu aleatoriu ghjustu. Or, PVRB hè simplicemente un protokollu standalone implementatu da un cuntrattu intelligente chì travaglia in modu asincronu cù u rispettu à u blockchain è i blocchi. I dui metudi anu i so vantaghji è disadvantages, è l'scelta trà elli hè assai micca triviale.

Dui manere di implementà PVRB

Descrivemu in più dettaglio duie opzioni per l'implementazione di PVRB - a versione standalone, chì travaglia cù un cuntrattu intelligente indipendente da u blockchain, è a versione integrata di cunsensu, integrata in u protokollu, secondu a quale a reta accunsente nantu à u blockchain è u bloccu. transazzioni da esse incluse. In tutti i casi, vogliu dì i mutori di blockchain populari: Ethereum, EOS, è tutti quelli chì sò simili à elli in a manera chì ospitu è ​​processanu cuntratti intelligenti.

Cuntrattu standalone

In questa versione, PVRB hè un cuntrattu intelligente chì accetta transazzione di pruduttori aleatorii (in seguitu RP), li processa, combina i risultati, è, in u risultatu, ghjunghje à un certu valore chì ogni utilizatore pò riceve da stu cuntrattu. Stu valore ùn pò micca esse guardatu direttamente in u cuntrattu, ma piuttostu esse rapprisintatu solu da dati da quale unu è solu un valore di l'aleatoriu resultanti pò esse ottenutu deterministicamente. In questu schema, i RP sò utilizatori di u blockchain, è qualcunu pò esse permessu di participà à u prucessu di generazione.

L'opzione cù u cuntrattu standalone hè bona:

  • portabilità (i cuntratti ponu esse trascinati da blockchain à blockchain)
  • facilità di implementazione è teste (i cuntratti sò faciuli di scrive è di pruvà)
  • comodità in l'implementazione di schemi ecunomichi (hè faciule fà u vostru propiu token, chì a logica serve à i scopi di PVRB)
  • pussibilità di lanciari nant'à blockchains digià travagliatu

Havi ancu svantaghji:

  • limitazioni forti nantu à e risorse informatiche, u voluminu di transazzione è u almacenamentu (in altre parolle, cpu/mem/io)
  • restrizioni à l'operazioni in u cuntrattu (micca tutte l'istruzzioni sò dispunibili, hè difficiule di cunnette biblioteche esterne)
  • incapacità di urganizà a messageria più veloce di e transazzione sò incluse in u blockchain

Questa opzione hè adattata per implementà un PVRB chì deve esse eseguitu in una reta esistente, ùn cuntene micca criptografia cumplessa è ùn deve micca un gran numaru d'interazzione.

Consensus-integrated

In questa versione, PVRB hè implementatu in u codice di node blockchain, integratu o in parallelu cù u scambiu di messagi trà i nodi blockchain. I risultati di u protokollu sò scritti direttamente in i blocchi pruduciutu, è i missaghji di protokollu sò mandati nantu à a reta p2p trà i nodi. Siccomu u protokollu risultati in numeri chì anu da esse scritti in blocchi, a reta deve ghjunghje à un cunsensu nantu à elli. Questu significa chì i missaghji PVRB, cum'è e transazzione, devenu esse validati da i nodi è inclusi in blocchi per chì ogni participante di a rete pò cunvalidà u rispettu di u protocolu PVRB. Questu automaticamente ci porta à a suluzione ovvia - se a reta d'accordu nantu à un cunsensu nantu à un bloccu è transazzione in questu, allura PVRB deve esse parti di u cunsensu, è micca un protokollu stand-alone. Altrimenti, hè pussibule chì un bloccu hè validu da un puntu di vista di cunsensu, ma u protocolu PVRB ùn hè micca seguitu, è da u puntu di vista PVRB u bloccu ùn pò micca esse accettatu. Allora se l'opzione "consensus-integrated" hè sceltu, u PVRB diventa una parte impurtante di u cunsensu.

Quandu si descrizanu l'implementazioni di PVRB à u livellu di u cunsensu di a rete, ùn si pò in ogni modu evità prublemi di finalità. A finalità hè un mecanismu utilizatu in i consensi deterministici chì chjude in un bloccu (è a catena chì porta à questu) chì hè finale è ùn serà mai ghjittatu, ancu s'ellu si trova una forchetta parallela. Per esempiu, in Bitcoin ùn ci hè micca un tali mecanismu - se pubblicà una catena di più cumplessità, rimpiazzarà qualsiasi menu cumplessu, indipendentemente da a durata di e catene. È in EOS, per esempiu, i finali sò i chjamati Ultimi Blocchi Irreversibili, chì appariscenu in media ogni 432 blocchi (12 * 21 + 12 * 15, pre-vote + pre-commit). Stu prucessu hè essenzialmente aspittendu 2/3 di i pruduttori di blocchi (in seguitu chjamati BP) firme. Quandu i forchetti appariscenu chì sò più vechji di l'ultimu LIB, sò solu scartati. Stu mecanismu permette di guarantiscia chì a transazzione hè inclusa in u blockchain è ùn serà mai ritruvatu, ùn importa ciò chì risorse l'attaccante hà. Inoltre, i blocchi finali sò blocchi firmati da 2/3 BP in Hyperledger, Tendermint è altri cunsensi basati in pBFT. Inoltre, hè sensu di fà un protokollu per assicurà a finalità un add-on à u cunsensu, postu chì pò travaglià in modu asincronu cù a produzzione è a publicazione di blocchi. Eccu un bonu un articulu circa a finalità in Ethereu.

A finalità hè estremamente impurtante per l'utilizatori, chì senza ellu ponu esse vittime di un attaccu di "doppiu spende", induve BP "tene" blocchi, è li publiche dopu chì a reta hà "vittu" una bona transazzione. Se ùn ci hè micca una finalità, a furchetta publicata rimpiazza u bloccu cù una transazzione "bona" ​​cù un altru, da una furchetta "mala", in quale i stessi fondi sò trasferiti à l'indirizzu di l'attaccante. In u casu di PVRB, i requisiti per a finalità sò ancu più stretti, postu chì a custruzione di furchetti per PVRB significa l'uppurtunità per un attaccante di preparà parechje opzioni aleatorii per pubblicà a più prufittuosa, è limità u tempu di un attaccu pussibule hè un bona suluzione.

Dunque, a megliu opzione hè di cunghjuntà PVRB è finalità in un protokollu - allora u bloccu finalizatu = finalizatu aleatoriu, è questu hè esattamente ciò chì avemu bisognu. Avà i ghjucatori riceveranu un aleatoriu garantitu in N seconde, è ponu esse sicuru chì hè impussibile di rinvià o ripiglià di novu.

L'opzione integrata in cunsensu hè bona:

  • a pussibilità di implementazione asincrona in relazione à a produzzione di blocchi - i blocchi sò pruduciuti cum'è di solitu, ma in parallelu cù questu, u protocolu PVRB pò travaglià, chì ùn pruduce micca casualità per ogni bloccu.
  • a capacità di implementà ancu a criptografia pesante, senza e restrizioni imposte à i cuntratti intelligenti
  • l'abilità di urganizà u scambiu di messagi più veloce di e transacciones sò inclusi in u blockchain, per esempiu, una parte di u protokollu pò travaglià trà i nodi senza distribuisce missaghji nantu à a reta.

Havi ancu svantaghji:

  • Difficultà in a prova è u sviluppu - duverete emulà errori di rete, nodi mancanti, forche duru di rete
  • L'errori di implementazione necessitanu un hardfork di rete

I dui metudi di implementazione di PVRB anu u dirittu à a vita, ma l'implementazione nantu à i cuntratti intelligenti in i blockchains muderni hè sempre abbastanza limitata in risorse informatiche, è ogni transizione à a criptografia seria hè spessu impussibile. È avemu bisognu di criptografia seria, cum'è serà dimustratu quì sottu. Ancu s'è stu prublema hè chjaramente tempurale, a criptografia seria in i cuntratti hè necessariu per risolve parechji prublemi, è apparisce gradualmente (per esempiu, cuntratti di sistema per zkSNARKs in Ethereu)

Blockchain, chì furnisce un canale di messageria di protokollu trasparente è affidabile, ùn face micca per liberu. Ogni protokollu decentralizatu deve piglià in contu a pussibilità di un attaccu Sybil; ogni azzione pò esse fatta da e forze concertate di più cunti, per quessa, in u disignu, hè necessariu di piglià in contu a capacità di l'attaccanti per creà un numeru arbitrariu di protokollu. i participanti chì agiscenu in collusione.

PVRB è variabili di bloccu.

Ùn aghju micca mentitu quandu aghju dettu chì nimu hà ancu implementatu un bonu PVRB, pruvatu da parechje applicazioni di ghjocu, in blockchains. Da induve venenu tante applicazioni di ghjocu nantu à Ethereu è EOS? Questu mi sorprende quant'è vi sorprende, induve anu ottinutu tanti randoms "persistenti" in un ambiente cumpletamente deterministicu?

U modu favuritu per ottene casualità in u blockchain hè di piglià qualchì tipu d'informazione "imprevisible" da u bloccu è fà una aleatoria basatu annantu à questu - solu per hashing unu o più valori. Bon articulu nantu à i prublemi di tali schemi ccà. Pudete piglià qualsiasi di i valori "imprevisible" in u bloccu, per esempiu, u bloccu hash, u numeru di transazzione, a cumplessità di a rete, è altri valori scunnisciuti in anticipu. Allora l'hash, unu o più, è, in teoria, duvete ottene un veru aleatoriu. Pudete ancu aghjunghje à u wihitepaper chì u vostru schema hè "post-quantum secure" (perchè ci sò funzioni di hash quantum-proof :)).

Ma ancu i hashes sicuri post-quantum ùn sò micca abbastanza, alas. U sicretu si trova in i requisiti per PVRB, lasciami ricurdà di elli da l'articulu precedente:

  1. U risultatu deve avè una distribuzione pruvably uniforme, vale à dì esse basatu annantu à una criptografia pruvably forte.
  2. Ùn hè micca pussibule di cuntrullà alcunu di i pezzi di u risultatu. In cunsiquenza, u risultatu ùn pò micca esse previstu in anticipu.
  3. Ùn pudete micca sabotà u protokollu di generazione per ùn participà micca in u protokollu o per sopracarcà a reta cù messagi d'attaccu
  4. Tuttu u sopra deve esse resistente à a collusione di un numeru permissibile di participanti di protocolu disonesti (per esempiu, 1/3 di i participanti).

In questu casu, solu u requisitu 1 hè cumpletu, è u requisitu 2 ùn hè micca cumpletu. Hashing valori imprevisible da u bloccu, averemu una distribuzione uniforme è boni randoms. Ma BP almenu hà l'opzione di "pubblicà u bloccu o micca". Cusì, BP pò almenu sceglie trà DUE ozzione aleatorii: "u so propiu" è quellu chì si vulerà se qualcunu altru faci u bloccu. BP pò "snoop" in anticipu ciò chì succede s'ellu publica un bloccu, è solu decide di fà o micca. Cusì, quandu ghjucanu, per esempiu, "paru-stranu" o "rossu / neru" in roulette, pò pubblicà un bloccu solu s'ellu vede una vittoria. Questu rende ancu l'estrategia di utilizà, per esempiu, un bloccu hash "da u futuru" imprudente. In questu casu, dicenu chì "serà utilizatu aleatoriu, chì hè ottenutu da l'hashing di i dati attuali è l'hash di un bloccu futuru cù una altezza di, per esempiu, N + 42, induve N hè l'altezza di bloccu attuale. Questu rinforza u schema un pocu, ma ancu permette à BP, anche in u futuru, di sceglie s'ellu tene u bloccu o pubblicà.

U software BP in questu casu diventa più cumplicatu, ma micca assai. Simply, quandu validate è includendu una transazzione in un bloccu, ci hè un cuntrollu rapidu per vede s'ellu ci sarà una vittoria, è, possibbilmente, selezzione di una transazzione paràmetri per ottene una alta probabilità di vincere. À u listessu tempu, hè quasi impussibile di catturà un BP intelligente per tali manipulazioni; ogni volta pudete aduprà novi indirizzi è vince pocu à pocu senza suscitarà suspetti.

Allora i metudi chì utilizanu l'infurmazioni da u bloccu ùn sò micca adattati cum'è una implementazione universale di PVRB. In una versione limitata, cù restrizioni à e dimensioni di scumessa, restrizioni à u numeru di ghjucatori è / o iscrizzione KYC (per impedisce à un ghjucatore di utilizà parechje indirizzi), sti schemi ponu travaglià per i picculi ghjochi, ma nunda di più.

PVRB è commit-reveal.

Va bè, grazia à l'hashing è almenu l'imprevedibilità relative di u bloccu hash è altre variàbili. Sè vo risolve u prublema di i minatori di front-running, duvete ottene qualcosa più adattatu. Aghjunghjite l'utilizatori à questu schema - lasciate ancu influenzà l'aleatoriu: ogni impiigatu di supportu tecnicu vi dicerà chì a cosa più aleatoria in i sistemi IT hè l'azzioni di l'utilizatori :)

Un schema ingenu, quandu l'utilizatori simpricimenti mandanu numeri aleatorii è u risultatu hè calculatu cum'è, per esempiu, un hash di a so summa, ùn hè micca adattatu. In questu casu, l'ultimu ghjucatore pò, scegliendu u so propiu aleatoriu, cuntrullà ciò chì serà u risultatu. Hè per quessa chì u mudellu di commit-reveal assai utilizatu hè utilizatu. I participanti prima mandanu hashes da i so randoms (commits), è dopu apre i randoms stessi (reveals). A fase di "reveal" principia solu dopu chì l'impegni necessarii sò stati raccolti, cusì i participanti ponu mandà esattamente l'hash aleatoriu da quale anu mandatu prima. Avà mettimu tuttu questu inseme cù i paràmetri di un bloccu, è megliu di quellu pigliatu da u futuru (l'aleatoriu pò esse truvatu solu in unu di i blocchi futuri), è voilà - a randomness hè pronta! Avà ogni ghjucatore influenza l'aleatoriu resultanti, è pò "sconfigge" u BP maliziusu annunziendu cù u so propiu, scunnisciutu in anticipu, casualità ... Pudete ancu aghjunghje a prutezzione contru à sabotaging u protokollu ùn aprendu micca in u stadiu di rivelazione - simpricimenti. esigendu una certa quantità per esse attaccata à a transazzione quandu si cummette - un accontu di sicurità, chì serà rimbursatu solu durante a prucedura di rivelazione. In questu casu, l'impegnu è micca revelatu ùn serà micca prufittu.

Era un bon tentativu, è tali schemi esistenu ancu in DApps di ghjoculi, ma sfortunatamente, questu ùn hè micca abbastanza. Avà micca solu u minatore, ma ancu ogni participante in u protocolu pò influenzà u risultatu. Hè sempre pussibule di cuntrullà u valore stessu, cù menu variabilità è à un costu, ma, cum'è in u casu di u minatore, se i risultati di u disegnu sò più preziosi cà a tarifa per a participazione à u protokollu PVRB, allora l'aleatoriu. -producer (RP) pò decide s'ellu revelà è pò ancu sceglie da almenu duie opzioni aleatorii.
Ma hè diventatu pussibule di punisce quelli chì cummettenu è ùn rivelanu micca, è questu schema serà utile. A so simplicità hè un vantaghju seriu - i protokolli più serii necessitanu calculi assai più putenti.

PVRB è signatures deterministiche.

Ci hè una altra manera di furzà u RP à furnisce un numeru pseudo-aleatoriu chì ùn pò micca influenzà s'ellu hè furnitu cù una "preimage" - questa hè una firma deterministica. Una tale firma hè, per esempiu, RSA, è ùn hè micca ECS. Se RP hà un paru di chjavi: RSA è ECC, è firma un certu valore cù a so chjave privata, allora in u casu di RSA riceverà UNA E SOLU UNA firma, è in u casu di ECS pò generà qualsiasi numeru di diverse firme valide. Questu hè chì quandu crea una firma ECS, un numeru aleatoriu hè utilizatu, sceltu da u firmante, è pò esse elettu in ogni modu, dendu à u firmante l'uppurtunità di sceglie una di parechje firme. In u casu di RSA: "un valore di input" + "una coppia di chjave" = "una firma". Hè impussibile di predichendu quale firma un altru RP uttene, cusì un PVRB cù signatures deterministiche pò esse urganizata cumminendu e signature RSA di parechji participanti chì firmavanu u stessu valore. Per esempiu, u precedente aleatoriu. Stu schema salva assai risorse, perchè signatures sò tramindui cunferma di u cumpurtamentu currettu secondu u protocolu è una fonte di casualità.

In ogni casu, ancu cù signatures deterministiche, u schema hè sempre vulnerabile à u prublema "ultimu attore". L'ultimu participante pò ancu decide di publicà a firma o micca, cuntrullendu cusì u risultatu. Pudete mudificà u schema, aghjunghje l'hashes di bloccu à questu, fate ronde in modu chì u risultatu ùn pò micca esse previstu in anticipu, ma tutte queste tecniche, ancu tenendu in contu parechje mudificazioni, lascianu sempre senza risolve u prublema di l'influenza di un participante nantu à u cullettivu. risultatu in un ambiente untrusted è pò travaglià solu sottu ecunomichi è limitazioni di tempu. Inoltre, a dimensione di e chjavi RSA (1024 è 2048 bits) hè abbastanza grande, è a dimensione per e transacciones blockchain hè un paràmetru estremamente impurtante. Apparentemente ùn ci hè micca un modu simplice per risolve u prublema, andemu avanti.

PVRB è schemi di spartera secreta

In a criptografia, ci sò schemi chì ponu permette à a rete d'accordu nantu à un è solu un valore PVRB, mentri tali schemi sò resistenti à qualsiasi azzioni maliziusi di certi participanti. Un protokollu utile chì vale a pena familiarizà cun ellu hè u schema di spartera secreta di Shamir. Serve per dividisce un sicretu (per esempiu, una chjave secreta) in parechje parte, è distribuisce queste parti à N participanti. U sicretu hè distribuitu in tale manera chì M parti fora di N sò abbastanza per ricuperà, è questi ponu esse qualsiasi M parti. Sè nantu à i dita, dopu avè un gràficu di una funzione scunnisciuta, i participanti scambià punti nantu à u gràficu, è dopu avè ricevutu M punti, a funzione sana pò esse restaurata.
Una bona spiegazione hè datu lontana ma ghjucà cun ella praticamenti per ghjucà u protocolu in u vostru capu hè utile per Demo pagina.

Se u schema FSSS (Fiat-Shamir Secret Sharing) era applicabile in a so forma pura, seria un PVRB indestructible. In a so forma più simplice, u protocolu puderia vede cusì:

  • Ogni participante genera u so propiu aleatoriu è distribuisce azzioni da ellu à l'altri participanti
  • Ogni participante palesa a so parte di i sicreti di l'altri participanti
  • Se un participante hà più di M azzioni, allora u numeru di questu participante pò esse calculatu, è serà unicu, indipendentemente da u gruppu di participanti revelati.
  • A cumminazzioni di randoms revelati hè u PVRB desideratu

Quì, un participante individuale ùn influenza più i risultati di u protokollu, salvu in i casi induve l'uttenimentu di u limitu di divulgazione casuale dipende solu da ellu. Per quessa, stu protokollu, s'ellu ci hè una proporzione necessaria di RP chì travaglianu nantu à u protokollu è dispunibuli, travaglia, implementendu i requisiti per a forza criptografica, è esse resistenti à u prublema "ultimu attore".

Questa puderia esse una opzione ideale, stu schema PVRB basatu nantu à u sparte sicretu Fiat-Shamir hè descrittu per esempiu in questu articulu. Ma, cum'è l'esitatu sopra, s'è vo pruvate à applicà in capu in u blockchain, i limitazioni tecniche appariscenu. Eccu un esempiu di una implementazione di prova di u protokollu in u cuntrattu intelligente EOS è a so parte più impurtante - cuntrollà u participante di sparte publicatu: codice. Pudete vede da u codice chì a validazione di prova richiede parechje multiplicazioni scalari, è i numeri utilizati sò assai grande. Hè da esse capitu chì in i blockchains, verificate si trova in u mumentu chì u pruduttore di bloccu processa a transazzione, è in generale, ogni participante deve verificate facilmente a correttezza di u protokollu, cusì i requisiti per a velocità di a funzione di verificazione sò assai serii. . In questa opzione, l'opzione hè stata inefficace, postu chì a verificazione ùn hè micca in u limitu di transazzione (0.5 seconde).

L'efficienza di verificazione hè unu di i requisiti più impurtanti per l'usu di, in generale, qualsiasi schemi criptografici avanzati in u blockchain. A creazione di prove, a preparazione di messagi - queste prucedure ponu esse pigliate fora di a catena è eseguite nantu à l'urdinatori d'alta prestazione, ma a verificazione ùn pò esse ignorata - questu hè un altru requisitu impurtante per PVRB.

PVRB è signatures di soglia

Dopu avè familiarizatu cù u schema di spartera sicretu, avemu scupertu una classa sana di protokolli uniti da a keyword "soglia". Quandu a divulgazione di qualchi infurmazione precisa a participazione di M i participanti onesti fora di N, è u settore di i participanti onesti pò esse un subset arbitrariu di N, parlemu di schemi "soglia". Sò quelli chì ci permettenu di trattà cù u prublema "ultimu attore", avà se l'attaccu ùn palesa micca a so parte di u sicretu, un altru participante onestu farà per ellu. Questi schemi permettenu l'accordu nantu à unu è solu un significatu, ancu s'ellu u protocolu hè sabotatu da alcuni di i participanti.

A cumminazzioni di signatures deterministiche è schemi di soglia hà permessu di sviluppà un schema assai convenientu è promettente per l'implementazione di PVRB - quessi sò firme di soglia deterministiche. Quì un articulu nantu à i diversi usi di e signature di u sogliu, è quì hè un altru bonu longa lettura da Dash.

L'ultimu articulu descrive e firme BLS (BLS sta per Boneh-Lynn-Shacham, eccu articulu), chì anu una qualità assai impurtante è estremamente còmuda per i programatori - chjavi publichi, secreti, chjavi publichi è firme BLS ponu esse cumminati cù l'altri utilizendu operazioni matematiche simplici, mentre chì e so cumminazzioni restanu chjavi è firme valide, chì vi permettenu di aggregate facilmente assai. firme in una è parechje chjavi publichi in una. Sò ancu deterministichi è pruducenu u stessu risultatu per i stessi dati di input. A causa di sta qualità, e cumminazzioni di signature BLS sò stessi chjavi validi, chì permette l'implementazione di una opzione in quale M di N participanti pruducenu una è una sola firma chì hè determinista, verificabile publicamente è imprevisible finu à ch'ella hè aperta da u Mth. participante.

In un schema cù signatures BLS di soglia, ogni participante firma qualcosa cù BLS (per esempiu, l'aleatoriu precedente), è a firma di soglia cumuni hè l'aleatoriu desideratu. E proprietà criptografiche di e signature BLS satisfacenu i requisiti per a qualità aleatoria, a parte di soglia pruteghja contr'à "l'ultimu attore", è a combinabilità unica di chjavi permette di implementà assai più algoritmi interessanti chì permettenu, per esempiu, aggregazione efficiente di messagi di protokollu. .

Allora, sè vo site custruendu PVRB nantu à u vostru blockchain, probabilmente finiscinu cù u schema di signatura di u limitu BLS, parechji prughjetti sò digià utilizatu. Per esempiu, DFinity (ccà benchmark chì implementa u circuitu, è ccà Esempiu di implementazione di spartera segreta verificabile), o Keep.network (eccu u so faro aleatoriu carta giallaè quì esempiu cuntrattu intelligente chì serve u protocolu).

Implementazione di PVRB

Sfortunatamente, ùn vedemu micca un protokollu prontu implementatu in blockchains PVRB chì hà pruvatu a so sicurezza è stabilità. Ancu s'è i protokolli stessi sò pronti, l'applicà tecnicamente à e soluzioni esistenti ùn hè micca faciule. Per i sistemi centralizzati, PVRB ùn hà micca sensu, è i decentralizati sò strettamente limitati in tutti i risorse di l'informatica: CPU, memoria, almacenamiento, I / O. U cuncepimentu di un PVRB hè una cumminazione di diversi protokolli per creà qualcosa chì risponde à tutti i requisiti per almenu qualchì blockchain viable. Un protokollu calcula più efficacemente, ma richiede più messagi trà RP, mentre chì l'altru richiede assai pochi missaghji, ma a creazione di una prova pò esse un compitu chì dura decine di minuti, o ancu ore.

Elencu i fatturi chì avete da cunsiderà quandu sceglite un PVRB di qualità:

  • Forza criptografica. U vostru PVRB deve esse strettamente unbiasable, senza capacità di cuntrullà un solu bit. In certi schemi ùn hè micca u casu, cusì chjamate un criptografu
  • U prublema "ultimu attore".. U vostru PVRB deve esse resistente à l'attacchi induve un attaccante chì cuntrolla unu o più RP pò sceglie unu di dui risultati.
  • Prublemu di sabotage di u protocolu. U vostru PVRB deve esse resistente à l'attacchi induve un attaccante chì cuntrolla unu o più RP decide s'ellu hè casuale o micca è pò esse garantitu o cù una certa probabilità di influenzà questu.
  • Problema numeru di missaghji. I vostri RP anu da mandà un minimu di missaghji à u blockchain è evità l'azzioni sincrone quant'è pussibule cum'è situazioni cum'è "Aghju mandatu qualchì infurmazione, aghju aspittendu una risposta da un participante specificu". In e rete p2p, in particulare i dispersi geograficamente, ùn deve micca cuntà una risposta rapida
  • U prublema di cumplessità computazionale. A verificazione di ogni tappa di u PVRB nantu à a catena deve esse estremamente faciule, postu chì hè realizatu da tutti i clienti cumpleti di a reta. Se l'implementazione hè fatta cù un cuntrattu intelligente, i requisiti di velocità sò assai stretti
  • U prublema di l'accessibilità è a vita. U vostru PVRB deve esse sforzu di esse resiliente à situazioni induve una parte di a reta diventa indisponibile per un periudu di tempu è una parte di u RP si ferma solu di travaglià.
  • U prublema di a stallazione di fiducia è a distribuzione iniziale di chjave. Se u vostru PVRB usa a cunfigurazione primaria di u protocolu, allora questu hè una storia grande è seria separata. Quì esempiu. Se i participanti anu da dì à l'altri e so chjave prima di inizià u protocolu, questu hè ancu un prublema se a cumpusizioni di i participanti cambia
  • I prublemi di sviluppu. Disponibilità di biblioteche in e lingue richieste, a so sicurezza è u so rendiment, publicità, teste cumplessi, etc.

Per esempiu, a soglia di signature BLS anu un prublema significativu - prima di cumincià à travaglià, i participanti anu da distribuisce e chjavi à l'altri, urganizà un gruppu in u quale u sogliu hà da travaglià. Questu significa chì almenu una volta di scambiu in una reta decentralizata duverà aspittà, è datu chì u rand generatu, per esempiu, hè necessariu in i ghjoculi, quasi in tempu reale, questu significa chì u sabotage di u protocolu hè pussibule in questa fase. , è i vantaghji di u schema di soglia sò persi. Stu prublema hè digià più sèmplice ch'è i precedenti, ma hè sempre bisognu di u sviluppu di una prucedura separata per a furmazione di gruppi di soglia, chì deve esse prutetta economicamente, per mezu di dipositi è di retirazzione di fondi (slashing) da i participanti chì ùn seguitanu micca u protocolu. Inoltre, a verificazione BLS cù un livellu accettabile di sicurità ùn hè micca ghjustu, per esempiu, in una transazzione standard EOS o Ethereum - ùn ci hè micca abbastanza tempu per a verificazione. U codice di u cuntrattu hè WebAssembly o EVM, eseguitu da una macchina virtuale. E funzioni criptugrafiche ùn sò micca implementate nativamente (ancora), è travaglianu decine di volte più lento di e librerie criptografiche convenzionali. Parechji protokolli ùn anu micca cumpletu i requisiti solu basati nantu à u voluminu chjave, per esempiu 1024 è 2048 bits per RSA, 4-8 volte più grande di a firma di transazzione standard in Bitcoin è Ethereu.

A prisenza di implementazioni in diverse lingue di prugrammazione ghjoca ancu un rolu - di quale ci sò pochi, soprattuttu per novi protokolli. L'opzione cù l'integrazione in u cunsensu richiede di scrive un protokollu in a lingua di a piattaforma, cusì avete da circà u codice in Go for geth, in Rust for Parity, in C++ per EOS. Tuttu u mondu hà da circà u codice JavaScript, è postu chì JavaScript è a criptografia ùn sò micca particularmente amichi stretti, WebAssembly vi aiuterà, chì avà definitivamente pretende esse u prossimu standard impurtante di Internet.

cunchiusioni

Spergu in u precedente articulu Aghju sappiutu cunvince chì a generazione di numeri aleatorii nantu à u blockchain hè criticu per parechji aspetti di a vita di e rete decentralizate, è cù questu articulu aghju dimustratu chì questu compitu hè estremamente ambiziosu è difficiule, ma boni suluzioni esistenu digià. In generale, u disignu finali di u protokollu hè pussibule solu dopu avè realizatu teste massive chì piglianu in contu tutti l'aspetti da a stallazione à l'emulazione di difetti, per quessa, hè improbabile di truvà ricette pronti in i libri bianchi è l'articuli di a squadra, è certamente ùn avemu micca. decide in l'annu dopu o dui scrivite "fate cusì, esattamente bè".

Bye, per u nostru PVRB in u blockchain sviluppatu Haya, avemu stallatu nantu à l'usu di u limitu BLS signatures, avemu pensatu à implementà PVRB à u nivellu di cunsensu, postu chì a verificazione in cuntratti intelligenti cù un livellu accettabile di sicurità ùn hè ancu pussibule. Hè pussibule chì avemu aduprà dui schemi à una volta: prima, spartera segreta caru per creà random_seed à longu andà, è dopu l'utilizamu cum'è a basa per a generazione aleatoria d'alta frequenza utilizendu signatures BLS di soglia deterministiche, forsi ci limiteremu solu solu. unu di i schemi. Sfurtunatamente, hè impussibile di dì in anticipu quale serà u protocolu; l'unicu bonu hè chì, cum'è in a scienza, in i prublemi di l'ingegneria, un risultatu negativu hè ancu un risultatu, è ogni novu tentativu di risolve u prublema hè un altru passu per a ricerca di tutti quelli chì participanu à u prublema. Per scuntrà i bisogni di l'affari, risolvemu un prublema specificu praticu - furnisce l'applicazioni di ghjocu cù una fonte affidabile di entropia, cusì avemu ancu esse attentu à u blockchain stessu, in particulare i prublemi di a finalità di a catena è a guvernazione di a rete.

È ancu s'ellu ùn vedemu micca un PVRB resistente pruvucatu in blockchains, chì saria statu usatu per abbastanza tempu per esse pruvatu da appiicazioni reali, auditi multipli, carichi, è di sicuru, attacchi veri, ma u numeru di camini pussibuli cunfirma chì una suluzione esiste, è ciò chì -di sti algoritmi eventualmente risolve u prublema. Seremu cuntenti di sparte i risultati è ringraziate à l'altri squadre chì sò ancu travagliendu nantu à sta questione per articuli è codice chì permettenu à l'ingegneri di ùn pisà u listessu rake duie volte.

Allora, quandu scuntrate un programatore chì cuncepisce casuale decentralizatu, sia attentu è attentu, è furnisce aiutu psicologicu se ne necessariu :)

Source: www.habr.com

Add a comment