Oracl ar hap yn seiliedig ar lofnod digidol yn blockchain

O'r syniad i'r gweithredu: rydym yn addasu'r cynllun llofnod digidol cromlin eliptig presennol fel ei fod yn benderfynol, ac yn seiliedig arno rydym yn darparu swyddogaethau ar gyfer cael rhifau ffug-hap y gellir eu gwirio o fewn y blockchain.

Oracl ar hap yn seiliedig ar lofnod digidol yn blockchain

Syniad

Yn y cwymp 2018, roedd blockchain Waves yn cynnwys contractau smart cyntaf wedi'u rhoi ar waith, cododd y cwestiwn ar unwaith am y posibilrwydd o gael ffug-rifauy gallwch ymddiried ynddo.

Yn ddryslyd ynghylch y cwestiwn hwn, deuthum i'r casgliad o'r diwedd: mae unrhyw blockchain yn gell; mae'n amhosibl cael ffynhonnell entropi y gellir ymddiried ynddi mewn system gaeedig.

Ond roeddwn i'n dal i hoffi un syniad: os oracl ar hap yn llofnodi data defnyddiwr gydag algorithm penderfynol, yna bydd y defnyddiwr bob amser yn gallu gwirio llofnod o'r fath gan ddefnyddio'r allwedd gyhoeddus, a bydd yn siΕ΅r bod y gwerth canlyniadol yn unigryw. Nid yw'r oracl, ni waeth pa mor galed y mae ei eisiau, yn gallu newid unrhyw beth; mae'r algorithm yn cynhyrchu canlyniad diamwys. Yn y bΓ΄n, mae'r defnyddiwr yn cofnodi'r canlyniad, ond nid yw'n ei wybod nes i'r oracl ei gyhoeddi. Mae'n ymddangos na allwch ymddiried yn yr oracl o gwbl, ond gwiriwch ganlyniad ei waith. Yna, rhag ofn y bydd dilysu llwyddiannus, gellir ystyried llofnod o'r fath yn ffynhonnell entropi ar gyfer rhif ffug.

Mae platfform blockchain Waves yn defnyddio cynllun llofnod EdDSA opsiwn Ed25519. Yn y cynllun hwn, mae'r llofnod yn cynnwys y gwerthoedd R ac S, lle mae R yn dibynnu ar werth ar hap, ac mae S yn cael ei gyfrifo yn seiliedig ar y neges sy'n cael ei llofnodi, yr allwedd breifat a'r un rhif ar hap ag R. Mae'n troi allan bod nid oes dibyniaeth unigryw ar yr un Mae llawer o lofnodion dilys ar gyfer neges defnyddiwr.

Yn amlwg, yn ei ffurf bur, ni ellir defnyddio llofnod o'r fath fel ffynhonnell ffug-rifau hap, gan ei fod yn anbenderfynol ac, felly, yn gallu cael ei drin yn hawdd gan yr oracl.

Ond, fel y digwyddodd, mewn gwirionedd mae'n bosibl ei wneud yn benderfyniaethol.

Roedd gen i obeithion mawr am swyddogaeth hap wiriadwy (VRF), ond ar Γ΄l astudio'r caledwedd, bu'n rhaid i mi roi'r gorau i'r opsiwn hwn. Er bod VRF yn cynnig fersiwn penderfynol o'r llofnod a'i brawf, mae lle rhyfedd yn yr algorithm sy'n agor twll du ar gyfer trin yr oracl. Sef, wrth gyfrifo gwerth k (adran 5.1) defnyddir allwedd breifat, sy'n parhau i fod yn anhysbys i'r defnyddiwr, sy'n golygu na all y defnyddiwr wirio cywirdeb y cyfrifiad k, sy'n golygu y gall yr oracl ddefnyddio unrhyw werth k sydd ei angen arno ac ar yr un pryd cynnal cronfa ddata o ohebiaeth o k a'r data wedi'i lofnodi er mwyn gallu ailgyfrifo'r canlyniad cywir bob amser o safbwynt VRF . Os gwelwch luniad yn seiliedig ar VRF heb ddatgelu'r allwedd breifat, gallwch fod yn graff: nodwch yr angen i naill ai ddatgelu'r allwedd, neu ei eithrio o'r cyfrifiad k, yna bydd yr allwedd breifat yn datgelu ei hun yn awtomatig pan fydd y llofnod cyntaf yn ymddangos . Yn gyffredinol, fel y crybwyllwyd eisoes, cynllun rhyfedd ar gyfer oracl ar hap.

Ar Γ΄l ychydig o feddwl a chael cefnogaeth dadansoddwyr lleol, dechreuwyd cynllun gwaith VECRO.

Talfyriad yw VECRO ar gyfer Verifiable Elliptic Curve Random Oracle, sydd yn Rwsieg yn golygu oracl hap gwiriadwy ar gromliniau eliptig.

Trodd popeth yn eithaf syml; i sicrhau penderfyniaeth, mae angen i chi osod gwerth R cyn i'r neges sydd i'w llofnodi ymddangos. Os yw R wedi ymrwymo ac yn rhan o'r neges sy'n cael ei llofnodi, sy'n sicrhau ymhellach bod R wedi ymrwymo yn y neges sy'n cael ei llofnodi, mae gwerth S yn cael ei bennu'n unigryw gan neges y defnyddiwr ac felly gellir ei ddefnyddio fel ffynhonnell ar gyfer rhifau ffug.

Mewn cynllun o’r fath, nid oes gwahaniaeth pa mor sefydlog yw R; cyfrifoldeb yr oracl yw hyn o hyd. Mae'n bwysig bod S yn cael ei bennu'n unigryw gan y defnyddiwr, ond nid yw ei werth yn hysbys nes i'r oracl ei gyhoeddi. Popeth roedden ni eisiau!

Wrth siarad am R sefydlog, nodwch hynny ailddefnyddio R wrth arwyddo negeseuon amrywiol, mae'n datgelu'r allwedd breifat yn y cynllun EdDSA yn unigryw. Mae'n dod yn hynod bwysig i berchennog yr oracl ddileu'r posibilrwydd o ailddefnyddio R i lofnodi gwahanol negeseuon defnyddwyr. Hynny yw, gydag unrhyw drin neu gydgynllwynio, bydd yr oracl bob amser mewn perygl o golli ei allwedd breifat.

Yn gyfan gwbl, rhaid i'r oracl ddarparu dwy swyddogaeth i ddefnyddwyr: ymgychwyn, sy'n pennu'r gwerth R, a llofnod, sy'n dychwelyd y gwerth S. Yn yr achos hwn, y pΓ’r R, S yw'r llofnod gwiriadwy arferol o neges defnyddiwr sy'n cynnwys sefydlog gwerth R a data defnyddwyr mympwyol.

Gellir dadlau nad yw'r cynllun hwn ar gyfer y blockchain yn ddim mwy na chyffredin cynllun ymrwymo-ehangu. Yn y bΓ΄n, ie, hi yw hi. Ond mae yna sawl naws. Yn gyntaf, mae'r oracl bob amser yn gweithio gyda'r un allwedd ym mhob gweithrediad, er enghraifft, mae hyn yn gyfleus i'w ddefnyddio mewn contractau. Yn ail, mae risg y bydd yr oracl yn colli'r allwedd breifat os yw'n ymddwyn yn anghywir, er enghraifft, mae'r oracl yn caniatΓ‘u ichi wneud samplau o'r canlyniad, yna mae'n ddigon i wneud dim ond dau brawf i ddarganfod yr allwedd breifat a chael llawn. mynediad i'r waled. Yn drydydd, mae llofnod y gellir ei wirio'n frodorol ar y blockchain ac sy'n ffynhonnell hap yn brydferth.

Am chwe mis roedd y syniad o weithredu yn mudferwi yn fy mhen, nes o'r diwedd cymhelliad yn ymddangos yn y ffurf grant gan Waves Labs. Gyda grant mawr daw cyfrifoldeb mawr, sy'n golygu y bydd y prosiect yno!

Gweithredu

Felly, yn y prosiect hwn Gweithredwyd VECRO ar y blockchain Waves yn y modd cais-ymateb gan ddefnyddio trafodion trosglwyddo rhwng y defnyddiwr a'r oracl. Ar yr un pryd, gosodir sgript ar y cyfrif oracle, sy'n rheoli'r gwaith yn llym yn unol Γ’'r rhesymeg a ddisgrifir uchod. Mae trafodion Oracle yn cael eu gwirio ac mae'r gadwyn gyfan o ryngweithio defnyddwyr yn cael ei hadfer. Mae pob un o'r pedwar trafodiad yn ymwneud Γ’ gwirio'r gwerth terfynol; mae'r contract smart yn eu clymu ynghyd ag edefyn gwirio llym, gan wirio'r holl werthoedd fesul cam a pheidio Γ’ gadael unrhyw le i unrhyw driniaeth.

Unwaith eto, i'w roi o'r neilltu a'i wneud yn gliriach. Nid yn ol y cynllun arfaethedig yn unig y mae yr oracl yn gweithio. Mae ei waith yn cael ei reoli'n llwyr ar y lefel blockchain gan y sefydledig yn dynn gyda chontract smart. Camwch i'r chwith ac ni fydd y trafodiad yn mynd drwodd. Felly, os yw trafodiad wedi'i gynnwys yn y blockchain, nid oes angen i'r defnyddiwr wirio unrhyw beth hyd yn oed; mae cannoedd o nodau rhwydwaith eisoes wedi gwirio popeth iddo.

Ar hyn o bryd, mae un VECRO yn rhedeg ar brif rwyd Waves (gallwch redeg eich un eich hun, nid yw'n anodd, dim ond cymerwch olwg ar yr enghraifft cyfluniad). Mae'r cod cyfredol yn rhedeg yn PHP (ar WavesKit, am ba un Dywedais wrthych yn gynharach).

Er mwyn defnyddio'r gwasanaeth oracle rhaid i chi:

  • Atgyweiria R;
    • Anfonwch o leiaf 0.005 Waves i oracle alias init@vecr;
    • Derbyn y cod R yn y maes atodiad wrth drosglwyddo tocyn 1 R-vecr o'r oracl i'r defnyddiwr;
  • Cael llofnod;
    • Anfonwch o leiaf 0.005 Waves i'r oracle alias random@vecr, a RHAID hefyd nodi'r cod R a dderbyniwyd yn flaenorol a data defnyddiwr ychwanegol yn y maes atodiad;
    • Derbyn y cod S yn y maes atodiad wrth drosglwyddo tocyn 1 S-vecr o'r oracl i'r defnyddiwr;
  • Defnyddiwch god S fel ffynhonnell rhif ffug-hap.

Naws y gweithredu presennol:

  • Defnyddir tonnau a anfonir i'r oracl fel comisiwn ar gyfer y trafodiad dychwelyd i'r defnyddiwr, hyd at uchafswm o 1 Tonnau;
  • Cod-R yw concatenation beit o'r nod 'R' a gwerth R wedi'i amgodio 32-beit sylfaen58;
  • Dylai cod R mewn atodiad fod yn gyntaf, daw data defnyddwyr ar Γ΄l cod R;
  • Mae cod S yn gydgadwyn beit o'r nod 'S' a gwerth S wedi'i amgodio Γ’ sail 32-beit58;
  • Mae S yn ganlyniad i ranniad modulo, felly ni allwch ddefnyddio S fel rhif ffugenw llawn 256-did (gellir ystyried y rhif hwn yn uchafswm o rif ffugenw 252-did);
  • Yr opsiwn symlaf yw defnyddio'r hash cod S fel rhif ffug-hap.

Enghraifft o dderbyn cod S:

O safbwynt technegol, mae'r oracl yn gwbl barod ar gyfer gwaith, gallwch ei ddefnyddio'n ddiogel. O safbwynt defnydd y defnyddiwr cyffredin, mae diffyg rhyngwyneb graffigol cyfleus; bydd yn rhaid aros.

Byddaf yn falch o ateb cwestiynau a derbyn sylwadau, diolch.

Ffynhonnell: hab.com

Ychwanegu sylw