Oracle randamach bunaithe ar shíniú digiteach i blockchain

Ó smaoineamh go cur i bhfeidhm: modhnaimid an scéim sínithe digiteach cuar éilips atá ann cheana féin ionas go mbeidh sé cinntitheach, agus bunaithe air cuirimid feidhmeanna ar fáil chun uimhreacha randamacha infhíoraithe a fháil laistigh den blockchain.

Oracle randamach bunaithe ar shíniú digiteach i blockchain

Idea

I titim 2018, bhí blockchain Waves san áireamh na chéad chonarthaí cliste curtha i ngníomh, tháinig an cheist láithreach faoin bhféidearthacht a fháil uimhreacha pseudorandomgur féidir leat muinín a bheith agat.

Ag déanamh imní dom faoin gceist seo, tháinig mé ar an tátal ar deireadh: is cill é aon bhlocchain; tá sé dodhéanta foinse iontaofa eantrópachta a fháil i gcóras dúnta.

Ach thaitin smaoineamh amháin liom fós: más rud é oracle randamach síneoidh sé sonraí úsáideora le algartam cinntitheach, ansin beidh an t-úsáideoir in ann síniú den sórt sin a fhíorú i gcónaí ag baint úsáide as an eochair phoiblí, agus beidh sé cinnte go bhfuil an luach mar thoradh air uathúil. Níl an t-oracle, is cuma cé chomh deacair is mian leis, in ann aon rud a athrú; táirgeann an algartam toradh gan athbhrí. Go bunúsach, taifeadann an t-úsáideoir an toradh, ach ní bhíonn a fhios aige go dtí go bhfoilsíonn an oracle é. Tharlaíonn sé nach féidir leat muinín an oracle ar chor ar bith, ach seiceáil an toradh a chuid oibre. Ansin, i gcás fíorú rathúil, is féidir síniú den sórt sin a mheas mar fhoinse eantrópachta le haghaidh uimhir bhréige.

Úsáideann ardán blockchain Waves scéim sínithe EdDSA вариант Ed25519. Sa scéim seo, is éard atá sa síniú na luachanna R agus S, áit a mbraitheann R ar luach randamach, agus ríomhtar S bunaithe ar an teachtaireacht atá á síniú, an eochair phríobháideach agus an uimhir randamach céanna le R. Tharlaíonn sé go raibh níl aon spleáchas ar leith ar an gcéanna Tá go leor sínithe bailí le haghaidh teachtaireacht úsáideora.

Ar ndóigh, ina fhoirm ghlan, ní féidir síniú den sórt sin a úsáid mar fhoinse bréige-uimhreacha randamacha, ós rud é go bhfuil sé neamhchinntitheach agus, mar sin, gur féidir leis an oracle a láimhseáil go héasca.

Ach, mar a d'éirigh sé amach, is féidir i ndáiríre é a dhéanamh cinntitheach.

Bhí dóchas iontach agam le haghaidh feidhm randamach infhíoraithe (VRF), ach tar éis staidéar a dhéanamh ar na crua-earraí, bhí orm an rogha seo a thréigean. Cé go dtugann VRF leagan cinntitheach den síniú agus a chruthúnas, tá áit aisteach san algartam a osclaíonn poll dubh le haghaidh ionramháil an oracle. Eadhon, agus luach k (alt 5.1) úsáidtear eochair phríobháideach nach bhfuil ar eolas ag an úsáideoir, rud a chiallaíonn nach féidir leis an úsáideoir cruinneas ríomh k a fhíorú, rud a chiallaíonn gur féidir leis an oracle aon luach k a theastaíonn uaidh a úsáid agus ag an am céanna bunachar sonraí comhfhreagrais a chothabháil de k agus na sonraí sínithe ionas gur féidir i gcónaí an toradh ceart a athríomh ó thaobh VRF . Má fheiceann tú líníocht bunaithe ar VRF gan an eochair phríobháideach a nochtadh, is féidir leat a bheith cliste: cuir in iúl an gá an eochair a nochtadh, nó í a eisiamh ó ríomh k, ansin nochtfaidh an eochair phríobháideach í féin go huathoibríoch nuair a bheidh an chéad síniú le feiceáil . Go ginearálta, mar a luadh cheana, scéim aisteach le haghaidh oracle randamach.

Tar éis beagán machnaimh agus tacaíocht a fháil ó anailísithe áitiúla, rugadh scéim oibre an VECRO.

Is giorrúchán é VECRO le haghaidh Oracle Random Curve Elliptic Infhíoraithe, rud a chiallaíonn i Rúisis oracle randamach infhíoraithe ar chuair éilipseacha.

Bhí gach rud simplí go leor; chun cinntitheacht a bhaint amach, ní mór duit luach R a shocrú sula dtaispeánfar an teachtaireacht atá le síniú. Má tá R tiomanta agus go bhfuil sé mar chuid den teachtaireacht atá á síniú, rud a chinntíonn tuilleadh go bhfuil R tiomanta sa teachtaireacht atá á síniú, tá luach S cinnte go huathúil ag teachtaireacht an úsáideora agus mar sin is féidir é a úsáid mar fhoinse le haghaidh uimhreacha pseudorandom.

I scéim dá leithéid, is cuma cén chaoi a socraítear R; fanann sé seo mar fhreagracht ar an oracle. Tá sé tábhachtach go gcinnfidh an t-úsáideoir S go uathúil, ach ní fios a luach go dtí go bhfoilsíonn an oracle é. Gach rud a theastaigh uainn!

Ag labhairt di ar seasta R, tabhair faoi deara go athúsáidte R agus teachtaireachtaí éagsúla á síniú, nochtann sé an eochair phríobháideach sa scéim EdDSA. Éiríonn sé thar a bheith tábhachtach d’úinéir an oracle deireadh a chur leis an bhféidearthacht R a athúsáid chun teachtaireachtaí úsáideoirí éagsúla a shíniú. Is é sin, le haon ionramháil nó claonpháirteachas, beidh an baol ann go gcaillfidh an oracle a eochair phríobháideach i gcónaí.

San iomlán, ní mór don oracle dhá fheidhm a sholáthar d'úsáideoirí: initialization, a shocraíonn an luach R, agus síniú, a thugann an luach S ar ais. Sa chás seo, is é an péire R, S an síniú infhíoraithe is gnách ar theachtaireacht úsáideora ina bhfuil seasta. luach R agus sonraí úsáideora treallach.

Is féidir a mhaíomh go bhfuil an scéim seo le haghaidh an blockchain rud ar bith níos mó ná gnáth scéim tiomantais-leathnaithe. Go bunúsach, tá, is í. Ach tá roinnt nuances. Ar an gcéad dul síos, oibríonn an oracle i gcónaí leis an eochair chéanna i ngach oibríocht, mar shampla, tá sé áisiúil é seo a úsáid i gconarthaí. Ar an dara dul síos, tá an baol ann go gcaillfidh an oracle an eochair phríobháideach má iompraíonn sé go mícheart, mar shampla, ceadaíonn an oracle duit samplaí den toradh a dhéanamh, ansin is leor ach dhá thástáil a dhéanamh chun an eochair phríobháideach a fháil amach agus iomlán a fháil. rochtain ar an sparán. Ar an tríú dul síos, tá síniú atá infhíoraithe go dúchais ar an blockchain agus is foinse randamacht álainn.

Ar feadh sé mhí simmered an smaoineamh a chur i bhfeidhm i mo cheann, go dtí deireadh spreagadh le feiceáil san fhoirm deontas ó Waves Labs. Le deontas mór tagann freagracht mhór, mar sin beidh an tionscadal ann!

Cur i bhFeidhm

Mar sin, sa tionscadal seo Cuireadh VECRO i bhfeidhm ar an blockchain Waves i mód iarratas-freagra ag baint úsáide as idirbhearta aistrithe idir an t-úsáideoir agus an oracle. Ag an am céanna, tá script suiteáilte ar an gcuntas oracle a rialaíonn an obair go docht i gcomhréir leis an loighic a thuairiscítear thuas. Fíoraítear idirbhearta Oracle agus athchóirítear slabhra iomlán na hidirghníomhaíochta úsáideora. Tá baint ag na ceithre idirbheart go léir leis an luach deiridh a fhíorú; cuireann an conradh cliste snáithe fíoraithe dian orthu, ag seiceáil na luachanna go léir céim ar chéim agus gan spás a fhágáil le haghaidh aon ionramhála.

Arís eile, é a chur ar leataobh agus é a dhéanamh níos soiléire. Ní hamháin go n-oibríonn an oracle de réir na scéime atá beartaithe. Tá a chuid oibre á rialú go hiomlán ag an leibhéal blockchain ag an bhunaithe go docht le conradh cliste. Céim ar an taobh clé agus ní bheidh an t-idirbheart dul tríd. Mar sin, má tá idirbheart san áireamh sa blockchain, ní gá don úsáideoir fiú aon rud a sheiceáil; tá na céadta nóid líonra tar éis gach rud a sheiceáil dó cheana féin.

Faoi láthair, tá VECRO amháin ag rith ar an mainnet Waves (is féidir leat do cheann féin a rith, níl sé deacair, díreach féach ar an sampla cumraíochta). Ritheann an cód reatha i PHP (ar WavesKit, faoina bhfuil Dúirt mé leat níos luaithe).

Chun an tseirbhís oracle a úsáid ní mór duit:

  • Deisigh R;
    • Seol ar a laghad 0.005 Tonnta chuig oracle alias init@vecr;
    • Faigh an R-cód sa réimse ceangaltáin san aistriú chomhartha 1 R-vecr ón oracle chuig an úsáideoir;
  • Faigh síniú;
    • Seol ar a laghad 0.005 Tonnta chuig an oracle alias random@vecr, agus NÍ MÓR duit freisin an R-cód a fuarthas roimhe seo agus sonraí úsáideora breise a chur in iúl sa réimse ceangaltáin;
    • Faigh an S-cód sa réimse ceangaltáin san aistriú chomhartha 1 S-vecr ón oracle chuig an úsáideoir;
  • Úsáid S-cód mar fhoinse bhréige uimhir randamach.

Nuances an chur chun feidhme reatha:

  • Úsáidtear tonnta a sheoltar chuig an oracle mar choimisiún don idirbheart tuairisceáin don úsáideoir, suas go dtí uasmhéid 1 Tonnta;
  • Is éard atá i R-cód ná comhghaolú beart den charachtar ‘R’ agus luach R bonn 32 beart58-ionchódaithe;
  • Ba chóir go mbeadh R-cód i gceangaltán ar dtús, tagann sonraí úsáideora tar éis R-cód;
  • Is éard is S-cód ann ná comhghaolú beart den charachtar 'S' agus luach bonn 32 beart58-ionchódaithe de S;
  • Tá S mar thoradh ar roinnt modulo, mar sin ní féidir leat S a úsáid mar uimhir bhréige iomlán 256-giotán (is féidir an uimhir seo a mheas mar uimhir pseudorandom 252-giotán ar a mhéad);
  • Is é an rogha is simplí an hash cód S a úsáid mar uimhir bhréige randamach.

Sampla de S-cód a fháil:

Ó thaobh teicniúil, tá an oracle réidh go hiomlán le haghaidh oibre, is féidir leat é a úsáid go sábháilte. Ó thaobh úsáide an meán-úsáideoir, tá easpa comhéadan grafach áisiúil ann; beidh air seo fanacht.

Beidh áthas orm ceisteanna a fhreagairt agus glacadh le tuairimí, go raibh maith agat.

Foinse: will.com

Add a comment