Oracle o aza ki baze sou siyati dijital nan blockchain

Soti nan lide rive nan aplikasyon: nou modifye konplo siyati dijital koub eliptik ki egziste deja pou li se detèminist, epi baze sou li nou bay fonksyon pou jwenn nimewo pseudo-o aza verifye nan blòk la.

Oracle o aza ki baze sou siyati dijital nan blockchain

Lide

Nan sezon otòn la nan 2018, blòk la Waves enkli premye kontra entelijan aktive, kesyon an imedyatman leve sou posibilite pou jwenn nimewo pseudoazarke ou ka fè konfyans.

Konprann sou kesyon sa a, mwen finalman te rive nan konklizyon an: nenpòt blòk se yon selil; li enposib jwenn yon sous fè konfyans nan entropi nan yon sistèm fèmen.

Men, mwen toujou renmen yon lide: si oracle o aza pral siyen done itilizatè yo ak yon algorithm detèminist, Lè sa a, itilizatè a ap toujou kapab verifye tankou yon siyati lè l sèvi avèk kle piblik la, epi yo pral asire w ke valè a ki kapab lakòz se inik. Oracle a, kèlkeswa jan li vle, pa kapab chanje anyen; algorithm la pwodui yon rezilta ki pa klè. Esansyèlman, itilizatè a anrejistre rezilta a, men li pa konnen li jiskaske Oracle a pibliye li. Li sanble ke ou pa ka fè konfyans Oracle a nan tout, men tcheke rezilta a nan travay li. Lè sa a, nan ka verifikasyon siksè, yon siyati sa yo ka konsidere kòm yon sous antropi pou yon nimewo pseudo-random.

Platfòm nan blòk Waves itilize yon konplo siyati EdDSA opsyon Ed25519. Nan konplo sa a, siyati a konsiste de valè R ak S, kote R depann sou yon valè o aza, ak S kalkile baze sou mesaj la siyen, kle prive a ak menm nimewo o aza ak R. Li sanble ke pa gen okenn depandans inik pou menm bagay la Gen anpil siyati valab pou yon mesaj itilizatè.

Li evidan, nan fòm pi li yo, yon siyati sa yo pa ka itilize kòm yon sous nimewo pseudo-o aza, paske li pa detèminist epi, Se poutèt sa, ka fasil manipile pa Oracle la.

Men, kòm li te tounen soti, li se aktyèlman posib fè li detèminist.

Mwen te gen gwo espwa pou fonksyon o aza verifyab (VRF), men apre etidye pyès ki nan konpitè, mwen te oblije abandone opsyon sa a. Malgre ke VRF ofri yon vèsyon detèminist nan siyati a ak prèv li yo, gen yon kote etranj nan algorithm la ki louvri yon twou nwa pou manipilasyon nan Oracle la. Savwa, lè w ap kalkile valè k (seksyon 5.1) yo itilize yon kle prive, ki rete enkoni pou itilizatè a, ki vle di itilizatè a pa ka verifye kòrèkteman kalkil k a, ki vle di oracle a ka itilize nenpòt valè k li bezwen epi an menm tan kenbe yon baz done korespondans. nan k ak done yo siyen yo nan lòd yo toujou kapab re-kalkile rezilta ki kòrèk la nan pwen de vi VRF . Si ou wè yon desen ki baze sou VRF san yo pa divilge kle prive a, ou ka entelijan: endike bezwen an swa revele kle a, oswa eskli li nan kalkil la nan k, Lè sa a, kle prive a pral otomatikman revele tèt li lè premye siyati a parèt. . An jeneral, kòm deja mansyone, yon konplo etranj pou yon Oracle o aza.

Apre yon ti reflechi ak jwenn sipò analis lokal yo, konplo travay VECRO te fèt.

VECRO se yon abrevyasyon pou Verifiable Elliptic Curve Random Oracle, ki nan Ris vle di verifyab o aza Oracle sou koub eliptik.

Tout bagay te vin byen senp; pou reyalize detèminism, ou bezwen ranje valè R anvan mesaj pou siyen an parèt. Si R komèt epi li fè pati mesaj ke yo te siyen an, sa ki pi lwen asire ke R komèt nan mesaj ke yo te siyen an, valè S la detèmine inikman pa mesaj itilizatè a epi se poutèt sa ka itilize kòm yon sous pou nimewo pseudo-random.

Nan yon konplo konsa, li pa gen pwoblèm ki jan R fikse; sa a rete responsablite nan Oracle la. Li enpòtan pou itilizatè a detèmine S inikman, men valè li se enkoni jiskaske Oracle a pibliye li. Tout sa nou te vle!

Pale de R fiks, sonje sa reitilize R Lè w ap siyen mesaj divès kalite, li inikman revele kle prive a nan konplo EdDSA la. Li vin trè enpòtan pou pwopriyetè Oracle la elimine posiblite pou reitilize R pou siyen mesaj itilizatè diferan. Sa vle di, ak nenpòt manipilasyon oswa konplisite, Oracle a ap toujou riske pèdi kle prive li yo.

An total, Oracle a dwe bay itilizatè yo de fonksyon: inisyalizasyon, ki fikse valè R la, ak siyati, ki retounen valè S la. Nan ka sa a, pè a R, S se siyati abityèl verifye nan yon mesaj itilizatè ki gen yon fiks. valè R ak done itilizatè abitrè.

Li ka diskite ke konplo sa a pou blockchain a pa gen anyen plis pase òdinè komite-agrandi konplo. Esansyèlman, wi, se li. Men, gen plizyè nuans. Premyèman, Oracle a toujou travay ak menm kle nan tout operasyon yo, pou egzanp, sa a se pratik yo itilize nan kontra yo. Dezyèmman, gen yon risk pou Oracle la pèdi kle prive a si li konpòte mal, pou egzanp, Oracle la pèmèt ou fè echantiyon nan rezilta a, Lè sa a, li ase fè sèlman de tès yo chèche konnen kle prive a ak jwenn plen. aksè nan bous la. Twazyèmman, yon siyati ki se natif natal verifye nan blòk la epi ki se yon sous owaza se bèl.

Pandan sis mwa lide aplikasyon an mitone nan tèt mwen, jiskaske finalman motivasyon parèt nan fòm lan sibvansyon Waves Labs. Ak yon gwo sibvansyon vini gwo responsablite, ki vle di pwojè a pral la!

Aplikasyon

Se konsa, nan pwojè sa a VECRO te aplike sou Waves blockchain nan mòd demann-repons lè l sèvi avèk tranzaksyon transfè ant itilizatè a ak Oracle la. An menm tan an, yo enstale yon script sou kont Oracle ki kontwole travay la entèdi an akò ak lojik ki dekri pi wo a. Tranzaksyon Oracle yo verifye epi tout chèn entèraksyon itilizatè a retabli. Tout kat tranzaksyon yo patisipe nan verifye valè final la; kontra entelijan an mete yo ansanm ak yon fil verifikasyon strik, tcheke tout valè etap pa etap epi pa kite okenn plas pou okenn manipilasyon.

Yon fwa ankò, mete l 'akote epi fè li pi klè. Oracle a pa sèlman travay selon plan pwopoze a. Travay li konplètman kontwole nan nivo blockchain pa etabli a byen sere ak yon kontra entelijan. Etap sou bò gòch la ak tranzaksyon an tou senpleman pa pral ale nan. Se konsa, si yon tranzaksyon enkli nan blockchain a, itilizatè a pa menm bezwen tcheke anyen; dè santèn de nœuds rezo te deja tcheke tout bagay pou li.

Kounye a, gen yon sèl VECRO kap kouri sou rezo prensipal Waves (ou ka kouri pwòp ou a, li pa difisil, jis pran yon gade nan egzanp konfigirasyon an). Kòd aktyèl la kouri nan PHP (sou WavesKit, sou ki Mwen te di ou pi bonè).

Pou itilize sèvis Oracle ou dwe:

  • Ranje R;
    • Voye omwen 0.005 Waves bay oracle alias init@vecr;
    • Resevwa R-kòd la nan jaden an atachman nan transfè a nan 1 R-vecr siy soti nan Oracle a itilizatè a;
  • Jwenn yon siyati;
    • Voye omwen 0.005 Waves bay oracle alyas random@vecr, epi tou DWE endike R-kòd la te resevwa deja ak done itilizatè adisyonèl nan jaden an atachman;
    • Resevwa S-kòd la nan jaden an atachman nan transfè a nan 1 S-vecr siy soti nan Oracle a itilizatè a;
  • Sèvi ak kòd S kòm yon sous nimewo pseudo-o aza.

Nuans nan aplikasyon aktyèl la:

  • Waves voye bay Oracle yo itilize kòm yon komisyon pou tranzaksyon an retounen nan itilizatè a, jiska yon maksimòm de 1 Waves;
  • R-kod se konkatenerasyon yon byte nan karaktè 'R' ak yon valè R 32-byte kode baz58;
  • R-kòd nan atachman yo ta dwe premye, done itilizatè vini apre R-kòd;
  • S-kod se konkatènasyon yon byte nan karaktè 'S' ak yon valè 32-byte kode baz 58 nan S;
  • S se rezilta divizyon modulo, kidonk ou pa ka itilize S kòm yon nimewo pseudo-random konplè 256-bit (nimewo sa a ka konsidere kòm yon maksimòm 252-bit nimewo pseudo-random);
  • Opsyon ki pi senp la se sèvi ak hash kòd S la kòm yon nimewo pseudo-o aza.

Egzanp pou resevwa S-kòd:

Soti nan yon pwen de vi teknik, Oracle a se konplètman pare pou travay, ou ka san danje sèvi ak li. Soti nan pwen de vi itilizasyon itilizatè an mwayèn, gen yon mank de yon koòdone grafik pratik; sa a pral oblije rete tann.

Mwen pral kontan reponn kesyon ak aksepte kòmantè, mèsi.

Sous: www.habr.com

Add nouvo kòmantè