Zoufälleg Zuelen an dezentraliséiert Netzwierker: Implementatiounen

Aféierung

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

Wéi mam Konzept vun engem absolut staarken Chiffer aus der Kryptografie, probéieren richteg "Publicly Verifiable Random Beacon" (no PVRB) Protokoller nëmmen esou no wéi méiglech un den ideale Schema ze kommen, well an real Netzwierker ass et net applicabel a senger reng Form: et ass néideg strikt op ee bëssen averstanen, et muss vill Ronnen ginn, an all Messagen muss perfekt séier an ëmmer geliwwert ginn. Natierlech ass dëst net de Fall an echte Netzwierker. Dofir, wann Dir PVRBs fir spezifesch Aufgaben an modernen Blockchainen designt, zousätzlech zu der Onméiglechkeet fir déi resultéierend Zoufällegkeet a kryptographesch Kraaft ze kontrolléieren, entstinn vill méi reng architektonesch an technesch Problemer.

Fir PVRB ass de Blockchain selwer am Wesentlechen e Kommunikatiounsmedium an deem Messagen = Transaktiounen. Dëst erlaabt Iech deelweis aus Netzwierkproblemer, Net-Liwwerung vu Messagen, Probleemer mat Middleware ze abstrakt - all dës Risiken ginn vum dezentraliséierten Netzwierk iwwerholl, a säin Haaptwäert fir PVRB ass d'Onméiglechkeet eng scho geschéckt Transaktioun zréckzezéien oder ze korruptéieren - dëst mécht net erlaben d'Participanten ze refuséieren am Protokoll matzemaachen, ausser si hunn eng erfollegräich Attack op Konsens gemaach. Dëse Sécherheetsniveau ass akzeptabel, sou datt PVRB soll resistent géint Kollusioun vun de Participanten sinn an genau dee selwechte Mooss wéi d'Haaptblockchain Kette. Och dëst Hiweiser datt de PVRB Deel vum Konsens muss sinn, wann d'Netzwierk op den Haaptblockchain averstanen ass, och wann et och op déi eenzeg fair resultéierend Zoufall ass. Oder, PVRB ass einfach e Standalone Protokoll implementéiert vun engem Smart Kontrakt deen asynchron mat Respekt zum Blockchain a Block funktionnéiert. Béid Methoden hunn hir Virdeeler an Nodeeler, an de Choix tëscht hinnen ass extrem net-trivial.

Zwee Weeër fir PVRB ëmzesetzen

Loosst eis méi detailléiert zwou Méiglechkeeten fir d'Ëmsetzung vun PVRB beschreiwen - d'Standalone Versioun, déi mat engem Smart Kontrakt onofhängeg vun der Blockchain funktionnéiert, an déi Konsens-integréiert Versioun, agebaut an de Protokoll, no deem d'Netzwierk averstan ass iwwer d'Blockchain an de Blockchain. Transaktiounen abegraff. An alle Fäll mengen ech populär Blockchain-Motoren: Ethereum, EOS, an all déi ähnlech wéi se an der Aart a Weis wéi se Smart Kontrakter hosten a veraarbecht.

Standalone Kontrakt

An dëser Versioun ass PVRB e Smart Kontrakt deen Transaktioune vun zoufälleg Produzenten acceptéiert (nodréiglech als RP bezeechent), veraarbecht se, kombinéiert d'Resultater an, als Resultat, kënnt op e bestëmmte Wäert, deen all Benotzer aus dësem Kontrakt kritt. Dëse Wäert kann net direkt am Kontrakt gespäichert ginn, mä éischter nëmmen duerch Donnéeën vertruede ginn, aus deenen een an nëmmen ee Wäert vun der doraus resultéierend zoufälleg kann deterministesch kritt ginn. An dësem Schema sinn RP Benotzer vun der Blockchain, a jidderee kann erlaabt sinn un der Generatiounsprozess deelzehuelen.

D'Optioun mam Standalone-Kontrakt ass gutt:

  • Portabilitéit (Kontrakter kënne vu Blockchain op Blockchain geschleeft ginn)
  • Einfachheet vun der Ëmsetzung an Testen (Kontrakter sinn einfach ze schreiwen an ze testen)
  • Komfort bei der Ëmsetzung vun wirtschaftleche Schemaen (et ass einfach Ären eegene Token ze maachen, deem seng Logik d'Ziler vum PVRB déngt)
  • Méiglechkeet fir op scho funktionnéierende Blockchainen ze lancéieren

Et huet och Nodeeler:

  • staark Aschränkungen op Rechenressourcen, Transaktiounsvolumen a Späicheren (an anere Wierder, CPU / Mem / io)
  • Restriktiounen op Operatiounen am Kontrakt (net all Instruktioune sinn verfügbar, et ass schwéier extern Bibliothéiken ze verbannen)
  • Onméiglechkeet Messagerie méi séier ze organiséieren wéi Transaktiounen am Blockchain abegraff sinn

Dës Optioun ass gëeegent fir e PVRB ëmzesetzen, deen op engem existente Netzwierk leeft, keng komplex Kryptografie enthält an net eng grouss Unzuel vun Interaktiounen erfuerdert.

Konsens-integréiert

An dëser Versioun gëtt PVRB am Blockchain Node Code implementéiert, agebaut oder parallel mam Austausch vu Messagen tëscht Blockchain Node lafen. D'Resultater vum Protokoll ginn direkt an de produzéierte Block geschriwwe, a Protokollmeldungen ginn iwwer de p2p Netz tëscht Noden geschéckt. Well de Protokoll zu Zuelen resultéiert, déi a Blocken geschriwwe solle ginn, muss d'Netzwierk e Konsens doriwwer erreechen. Dëst bedeit datt PVRB Messagen, wéi Transaktiounen, musse vun Noden validéiert ginn an a Blocken abegraff ginn, sou datt all Netzwierk Participant d'Konformitéit mam PVRB Protokoll validéiere kann. Dëst féiert eis automatesch op déi offensichtlech Léisung - wann d'Netzwierk op e Konsens iwwer e Block an Transaktiounen doranner averstanen ass, da sollt PVRB Deel vum Konsens sinn, an net e Stand-alone Protokoll. Soss ass et méiglech datt e Block aus engem Konsens Siicht valabel ass, awer de PVRB Protokoll gëtt net gefollegt, an aus der PVRB Siicht kann de Block net akzeptéiert ginn. Also wann déi "Konsens-integréiert" Optioun gewielt gëtt, gëtt de PVRB e wichtege Bestanddeel vum Konsens.

Wann Dir PVRB-Implementatiounen um Netzkonsensniveau beschreiwen, kann een op kee Fall Themen vun der Finalitéit vermeiden. Finalitéit ass e Mechanismus deen an deterministesche Konsens benotzt gëtt, deen an e Block gespaart (an d'Kette déi dozou féiert) dee final ass a wäert ni ewechgehäit ginn, och wann eng parallel Gabel geschitt. Zum Beispill, am Bitcoin gëtt et keen esou Mechanismus - wann Dir eng Kette vu méi Komplexitéit publizéiert, ersetzt se all manner komplex, onofhängeg vun der Längt vun de Ketten. An am EOS, zum Beispill, sinn déi lescht déi sougenannte Last Irreversible Blocks, déi am Duerchschnëtt all 432 Blocks erschéngen (12*21 + 12*15, Pre-vote + Pre-commit). Dëse Prozess waart am Wesentlechen op 2/3 vun de Blockproduzenten (nach BP bezeechent) Ënnerschrëften. Wann Gabel schéngen déi méi al sinn wéi déi lescht LIB, si sinn einfach verworf. Dëse Mechanismus mécht et méiglech ze garantéieren datt d'Transaktioun an der Blockchain abegraff ass an ni zréckgerullt gëtt, egal wéi eng Ressourcen den Ugräifer huet. Och déi lescht Blocks si Blocks ënnerschriwwen vun 2/3 BP an Hyperledger, Tendermint an aner pBFT-baséiert Konsensus. Och ass et Sënn fir e Protokoll ze maachen fir d'Finale en Zousaz zum Konsens ze garantéieren, well et asynchron mat der Produktioun an der Verëffentlechung vu Blocken funktionnéiert. Hei ass eng gutt en Artikel iwwer Finalitéit an Ethereum.

Finalitéit ass extrem wichteg fir Benotzer, déi ouni et selwer Affer vun engem "duebel Ausgaben" Attack fannen kann, wou BP "hält" Spären, a publizéiert se nodeems de Reseau eng gutt Transaktioun "gesinn" huet. Wann et keng Finalitéit ass, da ersetzt déi publizéiert Gabel de Block mat enger "gutt" Transaktioun mat engem aneren, vun enger "schlechter" Gabel, an där déiselwecht Fongen op d'Adress vum Ugräifer transferéiert ginn. Am Fall vun PVRB sinn d'Ufuerderunge fir Finalitéit nach méi streng, well d'Gabel fir PVRB bauen bedeit d'Méiglechkeet fir en Ugräifer verschidde zoufälleg Optiounen ze preparéieren fir déi rentabelst ze publizéieren, an d'Zäit vun engem méiglechen Attack ze limitéieren ass eng gutt Léisung.

Dofir ass déi bescht Optioun fir PVRB an Finalitéit an ee Protokoll ze kombinéieren - dann de finaliséierte Block = finaliséiert zoufälleg, an dat ass genau wat mir brauche fir ze kréien. Elo Spiller wäerten eng garantéiert zoufälleg an N Sekonnen kréien, a kënne sécher sinn, datt et onméiglech ass et zréck ze Rouleau oder erëm ze spillen.

D'Konsens-integréiert Optioun ass gutt:

  • d'Méiglechkeet vun der asynchroner Ëmsetzung a Relatioun mat der Produktioun vu Blocks - Blöcke ginn wéi gewinnt produzéiert, awer parallel dozou kann de PVRB-Protokoll funktionnéieren, wat net Zoufällegkeet fir all Block produzéiert
  • d'Kapazitéit fir souguer schwéier Kryptografie ëmzesetzen, ouni d'Restriktiounen op Smart Kontrakter
  • d'Kapazitéit fir den Austausch vu Messagen méi séier ze organiséieren wéi Transaktiounen am Blockchain abegraff sinn, zum Beispill kann en Deel vum Protokoll tëscht Noden funktionnéieren ouni Messagen iwwer d'Netz ze verdeelen

Et huet och Nodeeler:

  • Schwieregkeeten beim Testen an der Entwécklung - Dir musst Netzwierkfehler emuléieren, fehlend Noden, Netzwierk schwéier Gabel
  • Ëmsetzung Feeler verlaangen engem Reseau hardfork

Béid Methode fir PVRB ëmzesetzen hunn e Recht op Liewen, awer d'Ëmsetzung op intelligente Kontrakter a modernen Blockchainen ass nach ëmmer zimlech limitéiert a Rechenressourcen, an all Iwwergank zu sérieux Kryptografie ass dacks einfach onméiglech. A mir wäerten sérieux Kryptografie brauchen, wéi hei ënnen bewisen gëtt. Och wann dëse Problem kloer temporär ass, ass seriös Kryptografie a Kontrakter gebraucht fir vill Probleemer ze léisen, an et erschéngt graduell (zum Beispill Systemkontrakter fir zkSNARKs an Ethereum)

Blockchain, deen en transparenten an zouverléissege Protokoll Messageriekanal ubitt, mécht dat net gratis. All dezentraliséierte Protokoll muss d'Méiglechkeet vun engem Sybil-Attack berücksichtegen; all Handlung kann duerch d'konzertéiert Kräfte vu multiple Konten gemaach ginn, dofir, beim Design, ass et néideg d'Fäegkeet vun den Ugräifer ze berücksichtegen fir eng arbiträr Zuel vu Protokoller ze kreéieren Participanten, déi a Kollusioun handelen.

PVRB a Block Variablen.

Ech hunn net gelunn wann ech gesot hunn, datt keen nach eng gutt PVRB ëmgesat huet, getest vu ville Spillerinne Uwendungen, an blockchains. Wou kommen dann esou vill Spillapplikatiounen op Ethereum an EOS? Dëst iwwerrascht mech sou vill wéi et Iech iwwerrascht, wou hu se sou vill "persistent" Zoufall an engem komplett deterministeschen Ëmfeld kritt?

De Liiblings Wee fir Zoufällegkeet an der Blockchain ze kréien ass eng Aart vun "onberechenbaren" Informatioun aus dem Block ze huelen an eng zoufälleg ze maachen baséiert op der Basis - einfach andeems Dir een oder méi Wäerter hashéiert. Gutt Artikel iwwer d'Problemer vun esou Schemaen hei. Dir kënnt iergendeng vun den "onberechenbaren" Wäerter am Block huelen, zum Beispill de Blockhash, d'Zuel vun den Transaktiounen, d'Netzkomplexitéit an aner Wäerter am Viraus onbekannt. Da hash hinnen, een oder méi, an, an Theorie, Dir sollt eng richteg zoufälleg kréien. Dir kënnt souguer op d'Wihitepabeier bäidroen datt Äre Schema "post-quantum sécher" ass (well et quantum-proof Hash Funktiounen sinn :)).

Awer och post-quantum sécher Hashes sinn net genuch, leider. D'Geheimnis läit an den Ufuerderunge fir PVRB, loosst mech Iech un se vum fréieren Artikel erënneren:

  1. D'Resultat muss eng beweisbar eenheetlech Verdeelung hunn, dh op beweisbar staarker Kryptografie baséiert.
  2. Et ass net méiglech ee vun de Stécker vum Resultat ze kontrolléieren. Als Konsequenz kann d'Resultat net am Viraus virausgesot ginn.
  3. Dir kënnt de Generatiounsprotokoll net sabotéieren andeems Dir net um Protokoll deelhëllt oder d'Netzwierk mat Attacke Messagen iwwerlaascht
  4. All vun den uewe muss resistent géint Kollusioun vun enger zulässlech Zuel vun onéierleche Protokoll Participanten sinn (zum Beispill, 1/3 vun de Participanten).

An dësem Fall ass nëmmen Ufuerderung 1 erfëllt, Ufuerderung 2 ass net erfëllt. Andeems Dir onberechenbar Wäerter aus dem Block hashéiert, kréie mir eng eenheetlech Verdeelung a gutt Zoufäll. Awer BP huet op d'mannst d'Optioun "de Block ze publizéieren oder net." Sou kann de BP op d'mannst aus ZWEE zoufälleg Optiounen wielen: "seng eegen" an déi, déi erauskënnt, wann een aneren de Block mécht. BP kann am Viraus "snoop" wat geschitt wann hien e Block publizéiert, an einfach decidéiert et ze maachen oder net. Also, wann Dir zum Beispill "Och komesch" oder "rout / schwaarz" am Roulette spillt, kann hien e Block publizéieren nëmmen wann hien eng Victoire gesäit. Dëst mécht och d'Strategie fir zum Beispill e Blockhash "aus der Zukunft" ze benotzen onméiglech. An dësem Fall soen se datt "zoufälleg benotzt gëtt, wat kritt gëtt andeems Dir déi aktuell Donnéeën an den Hash vun engem zukünftege Block mat enger Héicht vun zum Beispill N + 42 hashéiert, wou N déi aktuell Blockhöhe ass. Dëst stäerkt d'Schema e bëssen, awer erlaabt ëmmer nach BP, och wann an Zukunft, ze wielen ob de Block ze halen oder ze publizéieren.

BP Software an dësem Fall gëtt méi komplizéiert, awer net vill. Einfach, wann Dir eng Transaktioun an engem Block validéiert an enthält, gëtt et e schnelle Scheck fir ze kucken ob et e Gewënn gëtt, an eventuell Auswiel vun enger Transaktiounsparameter fir eng héich Probabilitéit ze gewannen. Zur selwechter Zäit ass et bal onméiglech fir e Smart BP fir sou Manipulatiounen ze fangen; all Kéier kënnt Dir nei Adresse benotzen a lues a lues gewannen ouni Mësstrauen z'erwächen.

Also Methoden, déi Informatioun aus dem Block benotzen, sinn net gëeegent als universell Ëmsetzung vu PVRB. An enger limitéierter Versioun, mat Restriktiounen op innsatsstorrelsen, Restriktiounen op d'Zuel vun de Spiller an / oder KYC Aschreiwung (fir e Spiller ze verhënneren aus engem benotzen MÉI Adressen), kann dës Schema fir kleng Spiller Aarbecht, awer näischt méi.

PVRB an engagéieren-opzeweisen.

Okay, dank Hashing an op d'mannst déi relativ Onberechenbarkeet vum Blockhash an aner Variablen. Wann Dir d'Problem vun de Front-Lafen Miner léisen, sollt Dir eppes méi gëeegent kréien. Loosst eis Benotzer op dëse Schema addéieren - loosst se och d'Zoufällegkeet beaflossen: all techneschen Support Mataarbechter wäert Iech soen datt déi zoufällegst Saach an IT Systemer d'Aktiounen vun de Benotzer ass :)

En naivt Schema, wann d'Benotzer einfach zoufälleg Zuelen schécken an d'Resultat berechent gëtt wéi zum Beispill en Hash vun hirer Zomm, ass net gëeegent. An dësem Fall kann de leschte Spiller, andeems hien säin eegene zoufälleg wielt, kontrolléieren wat d'Resultat wäert sinn. Dofir gëtt de ganz wäit benotzte Commit-Reveal Muster benotzt. D'Participanten schécken als éischt Hashes vun hiren Zoufäll (engagéiert), an öffnen dann d'Zoufäll selwer (revehéiert). D'"Reveal" Phase fänkt eréischt un nodeems déi néideg Verpflichtungen gesammelt goufen, sou datt d'Participanten genee de zoufällege Hash schécken, aus deem se virdru geschéckt hunn. Loosst eis dat alles zesumme mat de Parameteren vun engem Block setzen, a besser wéi een aus der Zukunft geholl (Zoufällegkeet kann nëmmen an engem vun den zukünftege Blöcke fonnt ginn), a voila - d'Zoufall ass prett! Elo beaflosst all Spiller déi doraus resultéierend Zoufall, a kann de béisaarteg BP "besiegen" andeems se et mat senger eegener, am Viraus onbekannter Zoufallsheet iwwerdréit ... Dir kënnt och Schutz géint Sabotéiere vum Protokoll addéieren andeems Dir et net op der Entdeckungsstadium opmaacht - einfach andeems Dir e gewësse Betrag bei der Transaktioun erfuerdert beim Verpflichtung - eng Kautioun, déi nëmmen während der Entdeckungsprozess zréckbezuelt gëtt. An dësem Fall wäert engagéieren an net verroden onrentabel sinn.

Et war e gudde Versuch, an esou Schemaen existéieren och am Spill DApps, awer leider ass dëst erëm net genuch. Elo kann net nëmmen de Miner, awer och all Participant am Protokoll d'Resultat beaflossen. Et ass ëmmer nach méiglech de Wäert selwer ze kontrolléieren, mat manner Variabilitéit a Käschten, awer, wéi am Fall vum Miner, wann d'Resultater vun der Zeechnung méi wäertvoll sinn wéi d'Käschte fir d'Participatioun am PVRB Protokoll, dann ass de zoufälleg. -Produzent (RP) kann entscheeden ob se verroden a kann nach ëmmer aus op d'mannst zwou zoufälleg Optiounen wielen.
Awer et gouf méiglech, déi ze bestrofen, déi engagéieren an net verroden, an dëst Schema wäert praktesch kommen. Seng Einfachheet ass e seriöse Virdeel - méi sérieux Protokoller erfuerderen vill méi mächteg Berechnungen.

PVRB an deterministesch Ënnerschrëften.

Et gëtt eng aner Manéier fir de RP ze zwéngen eng pseudo-zoufälleg Zuel ze bidden déi et net beaflosse kann wann et mat engem "Preimage" gëtt - dëst ass eng deterministesch Ënnerschrëft. Sou eng Ënnerschrëft ass zum Beispill RSA, an ass net ECS. Wann RP e Paar Schlësselen huet: RSA an ECC, an hien ënnerschreift e bestëmmte Wäert mat sengem private Schlëssel, dann am Fall vun RSA kritt hien ENG AN NËMMEN ENG Ënnerschrëft, an am Fall vun ECS kann hien all Zuel generéieren verschidde valabel Ënnerschrëften. Dëst ass well wann Dir eng ECS ​​Ënnerschrëft erstellt, gëtt eng zoufälleg Zuel benotzt, déi vum Ënnerschrëft gewielt gëtt, an et kann op all Manéier gewielt ginn, wat dem Ënnerschreiwer d'Méiglechkeet gëtt eng vun e puer Ënnerschrëften ze wielen. Am Fall vun RSA: "een Input Wäert" + "ee Schlëssel Pair" = "eng Ënnerschrëft". Et ass onméiglech ze virauszesoen, wéi eng Ënnerschrëft en anere RP kritt, sou datt e PVRB mat deterministeschen Ënnerschrëften organiséiert ka ginn andeems d'RSA Ënnerschrëfte vu verschiddene Participanten kombinéiert ginn, déi dee selwechte Wäert ënnerschriwwen hunn. Zum Beispill, déi virdrun zoufälleg. Dëse Schema spuert vill Ressourcen, well Ënnerschrëfte si souwuel Bestätegung vum richtege Verhalen no dem Protokoll an eng Quell vun Zoufall.

Wéi och ëmmer, och mat deterministeschen Ënnerschrëften, ass de Schema nach ëmmer vulnérabel fir de "leschte Schauspiller" Problem. De leschte Participant kann nach entscheeden ob d'Ënnerschrëft verëffentlechen oder net, an domat d'Resultat kontrolléiert. Dir kënnt de Schema änneren, Blockhashen derbäi addéieren, Ronnen maachen, sou datt d'Resultat net am Viraus virausgesot ka ginn, awer all dës Techniken, och wann Dir vill Ännerungen berücksichtegt, bleift de Problem vum Afloss vun engem Participant op d'Kollektiv nach ëmmer ongeléist. Resultat an engem net zouverléissege Ëmfeld a kann nëmmen ënner wirtschaftlechen an Zäitbeschränkungen schaffen. Zousätzlech ass d'Gréisst vun de RSA Schlësselen (1024 an 2048 Bits) zimlech grouss, an d'Gréisst fir Blockchain Transaktiounen ass en extrem wichtege Parameter. Anscheinend gëtt et keen einfache Wee fir de Problem ze léisen, loosst eis weidergoen.

PVRB a geheime Deeleschemaen

An der Kryptografie ginn et Schemaen, déi d'Netzwierk erlaben kënnen op een an nëmmen engem PVRB-Wäert ze stëmmen, während esou Schemaen resistent géint all béiswëlleg Handlunge vun e puer Participanten sinn. Een nëtzlecht Protokoll mat deem et derwäert ass Iech vertraut ze maachen ass dem Shamir säi geheime Sharing Schema. Et déngt engem geheime (Zum Beispill, e geheime Schlëssel) an e puer Deeler opzedeelen, an verdeelt dës Deeler ze N Participanten. D'Geheimnis gëtt sou verdeelt datt M Deeler aus N genuch sinn fir et ze recuperéieren, an dës kënnen all M Deeler sinn. Wann op Fangeren, dann eng Grafik vun enger onbekannter Funktioun hunn, austauschen d'Participanten Punkten op der Grafik, an nodeems se M Punkte kritt hunn, kann déi ganz Funktioun restauréiert ginn.
Eng gutt Erklärung gëtt an Wiki mee spillen mat et praktesch fir de Protokoll an Ärem Kapp ze spillen ass nëtzlech fir Demo Säit.

Wann de FSSS (Fiat-Shamir Secret Sharing) Schema a senger reiner Form applicabel wier, wier et en onverständlechen PVRB. A senger einfachster Form kann de Protokoll esou ausgesinn:

  • All Participant generéiert hir eege zoufälleg a verdeelt Aktien dovunner un aner Participanten
  • All Participant verréid säin Deel vun de Geheimnisser vun den anere Participanten
  • Wann e Participant méi wéi M Aktien huet, da kann d'Zuel vun dësem Participant berechent ginn, an et wäert eenzegaarteg sinn, onofhängeg vun der Rei vun opgedeckten Participanten
  • D'Kombinatioun vun opgedeckten Zoufäll ass de gewënschte PVRB

Hei beaflosst en individuellen Participant net méi d'Resultater vum Protokoll, ausser a Fäll wou d'Erreeche vun der Zoufallsoffenbarungsschwell nëmmen vun him hänkt. Dofir ass dëse Protokoll, wann et e erfuerderlechen Undeel vun RPs ass, déi um Protokoll schaffen a verfügbar sinn, funktionnéiert, implementéiert d'Ufuerderunge fir kryptografesch Stäerkt a resistent géint de "leschte Schauspiller" Problem.

Dëst kéint eng ideal Optioun sinn, dëst PVRB Schema baséiert op Fiat-Shamir geheimen Deele gëtt zum Beispill beschriwwen dat Artikel. Awer, wéi uewen ernimmt, wann Dir probéiert et direkt an der Blockchain z'applizéieren, erschéngen technesch Aschränkungen. Hei ass e Beispill vun enger Testimplementatioun vum Protokoll am EOS Smart Kontrakt a säi wichtegsten Deel - de publizéierten Deel Participant ze kontrolléieren: code. Dir kënnt aus dem Code gesinn datt d'Beweisvalidatioun e puer scalar Multiplikatiounen erfuerdert, an d'Zuelen déi benotzt gi si ganz grouss. Et sollt verstane ginn datt a Blockchainen, Verifizéierung geschitt am Moment wou de Blockproduzent d'Transaktioun veraarbecht, an allgemeng muss all Participant d'Korrektheet vum Protokoll einfach verifizéieren, sou datt d'Ufuerderunge fir d'Geschwindegkeet vun der Verifizéierungsfunktioun ganz eescht sinn. . An dëser Optioun huet sech d'Optioun als net effikass erausgestallt, well d'Verifizéierung net an der Transaktiounslimit (0.5 Sekonnen) passt.

Verifizéierungseffizienz ass ee vun de wichtegsten Ufuerderunge fir d'Benotzung vun, am Allgemengen, all fortgeschratt Kryptografesch Schemaen am Blockchain. Beweiser erstellen, Messagen virbereeden - dës Prozedure kënnen aus der Kette geholl ginn an op High-Performance Computeren ausgefouert ginn, awer d'Verifizéierung kann net ëmgoen - dat ass eng aner wichteg Ufuerderung fir PVRB.

PVRB a Schwell Ënnerschrëften

Nodeems mir de geheime Sharing Schema kennegeléiert hunn, hu mir eng ganz Klass vu Protokoller entdeckt, déi mam Schlësselwuert "Schwell" vereenegt sinn. Wann d'Offenbarung vun e puer Informatiounen d'Participatioun vu M éierleche Participanten aus N erfuerdert, an de Set vun éierleche Participanten kann en arbiträr Ënnerdeel vun N sinn, schwätze mir vu "Schwell" Schemaen. Et sinn si, déi eis erlaben mat dem "leschte Schauspiller" Problem ze këmmeren, elo wann den Ugräifer säin Deel vum Geheimnis net verroden, wäert en aneren, éierleche Participant et fir hien maachen. Dës Schemaen erlaben Accord iwwer eng an nëmmen eng Bedeitung, och wann de Protokoll vun e puer vun de Participanten sabotéiert gëtt.

D'Kombinatioun vun deterministeschen Ënnerschrëften a Schwellschemaen huet et méiglech gemaach e ganz prakteschen a villverspriechende Schema fir d'Ëmsetzung vun PVRB z'entwéckelen - dat sinn deterministesch Schwell Ënnerschrëften. Hei en Artikel iwwer déi verschidde Benotzunge vu Schwell Ënnerschrëften, an hei ass eng aner gutt laang liesen vum Dash.

De leschten Artikel beschreift BLS Ënnerschrëften (BLS steet fir Boneh-Lynn-Shacham, kuck Artikel), déi eng ganz wichteg an extrem praktesch Qualitéit fir Programméierer hunn - ëffentlech, geheim, ëffentlech Schlësselen a BLS Ënnerschrëfte kënne matenee kombinéiert ginn mat einfache mathematesch Operatiounen, wärend hir Kombinatioune gëlteg Schlësselen an Ënnerschrëften bleiwen, wat Iech erlaabt vill einfach ze aggregéieren Ënnerschrëften an een a vill ëffentlech Schlësselen an een. Si sinn och deterministesch a produzéieren datselwecht Resultat fir déiselwecht Inputdaten. Dank dëser Qualitéit sinn Kombinatioune vu BLS Ënnerschrëfte selwer valabel Schlësselen, wat d'Ëmsetzung vun enger Optioun erlaabt an där M vun N Participanten eng an nëmmen eng Ënnerschrëft produzéieren déi deterministesch, ëffentlech verifizéierbar an onberechenbar ass bis se vum Mth opgemaach gëtt. Participant.

An engem Schema mat Schwell-BLS Ënnerschrëften, ënnerschreift all Participant eppes mat BLS (Zum Beispill, de fréiere zoufälleg), an déi gemeinsam Schwell Ënnerschrëft ass déi gewënschte Zoufall. D'kryptographesch Eegeschafte vu BLS Ënnerschrëften erfëllen d'Ufuerderunge fir zoufälleg Qualitéit, de Schwelldeel schützt géint "Last-Actor", an déi eenzegaarteg Kombinatioun vu Schlësselen mécht et méiglech vill méi interessant Algorithmen ëmzesetzen, déi zum Beispill effizient Aggregatioun vu Protokollmeldungen erlaben. .

Also, wann Dir PVRB op Ärem Blockchain baut, wäert Dir héchstwahrscheinlech mam BLS Schwell Ënnerschrëft Schema ophalen, verschidde Projete benotze se scho. Zum Beispill, DFinity (hei Benchmark déi de Circuit implementéiert, an hei Beispill Implementatioun vu verifizéierbaren geheimen Deelen), oder Keep.network (hei ass hir zoufälleg Beacon giel Pabeier, an hei Beispill Smart Kontrakt deen de Protokoll servéiert).

Ëmsetzung vun PVRB

Leider gesi mir nach ëmmer kee fäerdege Protokoll deen an PVRB Blockchains implementéiert ass, deen seng Sécherheet a Stabilitéit bewisen huet. Och wann d'Protokoller selwer prett sinn, ass se technesch op existent Léisungen ëmzesetzen net einfach. Fir zentraliséiert Systemer, mécht PVRB kee Sënn, an dezentraliséiert sinn strikt limitéiert an all Rechenzäit Ressourcen: CPU, Erënnerung, Stockage, ech / O. En PVRB designen ass eng Kombinatioun vu verschiddene Protokoller fir eppes ze kreéieren dat all Ufuerderunge fir op d'mannst e liewensfäeg Blockchain entsprécht. Ee Protokoll berechent méi effizient, awer erfuerdert méi Messagen tëscht RPs, während deen aneren ganz wéineg Messagen erfuerdert, awer e Beweis erstellen kann eng Aufgab sinn déi zéng Minutten oder souguer Stonnen dauert.

Ech wäert d'Faktoren oplëschten déi Dir berücksichtege musst wann Dir e Qualitéits-PVRB auswielt:

  • Kryptografesch Kraaft. Äre PVRB muss strikt unbiasable sinn, ouni Fäegkeet fir en eenzege Bit ze kontrolléieren. A verschiddene Schemaen ass dëst net de Fall, also rufft e Kryptograf
  • De "leschte Schauspiller" Problem. Äre PVRB muss resistent géint Attacke sinn, wou en Ugräifer, deen een oder méi RPs kontrolléiert, ee vun zwee Resultater wielen kann.
  • Protokoll Sabotage Problem. Äre PVRB muss resistent géint Attacke sinn, wou en Ugräifer, deen een oder méi RPs kontrolléiert, entscheet ob se zoufälleg sinn oder net a kann entweder garantéiert oder mat enger bestëmmter Wahrscheinlechkeet dëst beaflossen
  • Zuel vun Messagen Problem. Är RPs sollten e Minimum vu Messagen un d'Blockchain schécken an sou vill wéi méiglech Synchronaktiounen vermeiden wéi Situatiounen wéi "Ech hunn e puer Informatioun geschéckt, ech waarden op eng Äntwert vun engem spezifesche Participant." An p2p Netzwierker, besonnesch geographesch verspreet, sollt Dir net op eng séier Äntwert zielen
  • De Problem vun der Berechnungskomplexitéit. Verifizéierung vun all Etapp vun der PVRB On-Chain soll extrem einfach sinn, well et vun all voll Clienten vum Netz gemaach gëtt. Wann d'Ëmsetzung mat engem Smart Kontrakt gemaach gëtt, da sinn d'Vitesse Ufuerderunge ganz strikt
  • De Problem vun der Accessibilitéit an der Liveness. Äre PVRB soll ustriewen fir Situatiounen widderstandsfäeg ze sinn, wou en Deel vum Netz fir eng Zäit laang net verfügbar ass an en Deel vum RP einfach ophält ze schaffen
  • De Problem vum vertrauenswürdege Setup an der initialer Schlësselverdeelung. Wann Äre PVRB de primäre Setup vum Protokoll benotzt, dann ass dëst eng separat grouss an sérieux Geschicht. Hei Beispill. Wann d'Participanten géigesäiteg hir Schlëssele soen ier de Protokoll starten, ass dat och e Problem wann d'Zesummesetzung vun de Participanten ännert
  • Entwécklung Problemer. Disponibilitéit vu Bibliothéiken an den erfuerderleche Sproochen, hir Sécherheet a Leeschtung, Publizitéit, komplex Tester, asw.

Zum Beispill, Schwell-BLS Ënnerschrëften hunn e wesentleche Problem - ier Dir ufänkt ze schaffen, mussen d'Participanten Schlëssele matenee verdeelen, e Grupp organiséieren an deem d'Schwell funktionnéiert. Dëst bedeit datt op d'mannst eng Ronn vun Austausch an engem dezentraliséierten Netzwierk muss waarden, a wann de generéierte Rand, zum Beispill, a Spiller néideg ass, bal an Echtzäit, heescht dat datt Sabotage vum Protokoll op dëser Etapp méiglech ass , an d'Virdeeler vum Schwellschema ginn verluer. Dëse Problem ass scho méi einfach wéi déi virdru, awer erfuerdert nach ëmmer d'Entwécklung vun enger separater Prozedur fir d'Bildung vu Schwellegruppen, déi wirtschaftlech geschützt musse ginn, duerch Depositioune a Réckzuch vu Fongen (Schnëtt) vun de Participanten, déi net no dem Protokoll. Och, BLS Verifizéierung mat engem akzeptablen Sécherheetsniveau passt einfach net, zum Beispill, an eng Standard EOS oder Ethereum Transaktioun - et gëtt einfach net genuch Zäit fir d'Verifizéierung. De Kontraktcode ass WebAssembly oder EVM, ausgefouert vun enger virtueller Maschinn. Kryptografesch Funktiounen ginn nach net nativ ëmgesat (nach) a funktionnéieren zéng Mol méi lues wéi konventionell kryptographesch Bibliothéiken. Vill Protokoller entspriechen d'Ufuerderungen net einfach op Basis vum Schlësselvolumen, zum Beispill 1024 an 2048 Bits fir RSA, 4-8 Mol méi grouss wéi d'Standard Transaktioun Ënnerschrëft an Bitcoin an Ethereum.

D'Präsenz vun Implementatiounen a verschiddene Programméierungssprooche spillt och eng Roll - vun deenen et wéineg sinn, besonnesch fir nei Protokoller. D'Optioun mat Integratioun am Konsens erfuerdert e Protokoll an der Plattformsprooch ze schreiwen, also musst Dir no Code am Go for geth, a Rust fir Paritéit, an C++ fir EOS sichen. Jidderee muss no JavaScript Code sichen, a well JavaScript a Kryptografie net besonnesch no Frënn sinn, hëlleft WebAssembly, wat elo definitiv behaapt den nächste wichtegen Internetstandard ze sinn.

Konklusioun

Ech hoffen an der viregter Artikel Ech hunn et fäerdeg bruecht Iech ze iwwerzeegen datt d'generéiere vun zoufälleg Zuelen op der Blockchain kritesch ass fir vill Aspekter vum Liewen vun dezentraliséierten Netzwierker, a mat dësem Artikel hunn ech gewisen datt dës Aufgab extrem ambitiéis a schwéier ass, awer gutt Léisunge existéieren schonn. Am Allgemengen ass den definitiven Design vum Protokoll nëmme méiglech nodeems Dir massiv Tester gemaach hutt, déi all Aspekter vum Setup bis zur Feeleremuléierung berücksichtegen, sou datt Dir onwahrscheinlech fäerdeg Rezepter an Team Whitepapers an Artikelen fannt, a mir wäerte sécher net entscheeden am nächste Joer oder zwee schreiwen "maacht et esou, genau richteg."

Äddi, fir eis PVRB am Blockchain entwéckelt Haya, Mir hu sech op d'Benotzung vu Schwell-BLS-Ënnerschrëfte festgeluecht, mir plangen PVRB um Konsensniveau ëmzesetzen, well d'Verifizéierung a Smart Kontrakter mat engem akzeptablen Sécherheetsniveau nach net méiglech ass. Et ass méiglech datt mir zwee Schemaen gläichzäiteg benotzen: éischtens, deier geheime Deele fir laangfristeg random_seed ze kreéieren, an dann benotze mir et als Basis fir héichfrequenz zoufälleg Generatioun mat deterministesche Schwell-BLS Ënnerschrëften, vläicht wäerte mir eis nëmme limitéieren ee vun de Schemaen. Leider ass et onméiglech am Viraus ze soen wat de Protokoll wäert sinn; déi eenzeg gutt Saach ass datt, wéi an der Wëssenschaft, an Ingenieursprobleemer och en negativt Resultat ass, an all neie Versuch de Problem ze léisen ass e weidere Schrëtt fir d'Fuerschung vu jidderengem, deen um Problem involvéiert ass. Fir Geschäftsbedéngungen z'erreechen, léise mir e spezifesche praktesche Problem - Spillapplikatioune mat enger zouverléisseger Quell vun Entropie ubidden, also musse mir och op d'Blockchain selwer oppassen, besonnesch d'Themae vun der Kettenfinalitéit an der Netzwierkgouvernance.

An och wa mir nach net e bewährte resistente PVRB a Blockchainen gesinn, déi fir genuch Zäit benotzt gi fir duerch real Uwendungen, Multiple Audits, Laaschten an natierlech richteg Attacken ze testen, awer d'Zuel vu méigleche Weeër bestätegt datt eng Léisung existéiert, a wat -vun dësen Algorithmen schlussendlech de Problem léisen. Mir wäerte frou d'Resultater ze deelen an aner Équipë Merci, déi och un dësem Thema schaffen fir Artikelen a Code datt Ingenieuren erlaben net op déi selwecht Rake zweemol Schrëtt.

Also, wann Dir e Programméierer begéint deen dezentraliséiert zoufälleg designt, sidd opmierksam an suergfälteg, a gitt psychologesch Hëllef wann néideg :)

Source: will.com

Setzt e Commentaire