Oracle randamach a úsáid ag baint úsáide as an sampla de chrannchur

Maidin amháin tháinig mé trasna ar alt faoi gineadóir uimhir randamach infhíoraithe ar blockchain ardán Waves.

Bhí an pictiúr foriomlán soiléir, ach ní raibh an modh cur chun feidhme sonrach. Roinnt cóid, sínithe, cad, cén áit, cén fáth?

Roinnt comhairliúcháin le húdar an oracle, mar thoradh air sin, bhíothas in ann an loighic líníochta (curtha i bhfeidhm i PHP) a chomhcheangal le algartam chun uimhir randamach a fháil.

  1. Ag tús an chomórtais/bhabhta, iarraimid an chéad chuid den chód (R-cód) ón oracle.

    Ag an nóiméad seo, níl aon fhaisnéis faoi líon na n-imreoirí, líon na n-áiteanna duaise, méid na n-íocaíochtaí duaise, nó an crannchur i gcoitinne a bheith ann. Eisíonn an oracle, trí idirbheart, cód randamach pearsanta, nach féidir a úsáid ach uair amháin ansin agus iad siúd a d'iarr é. Dála an scéil, is féidir R-cód a “cheannach” (a chiallaíonn costas an idirbhirt iarratais + cúiteamh don oracle as an idirbheart freagartha, is é seo méid de thart ar $ 0.015 ag an ráta reatha, eisítear an cód féin saor in aisce ) arís agus arís eile roimh ré, ionas nach mbeidh tú ag fanacht go bhfaighidh tú an t-idirbheart freagartha níos déanaí. Rinne mé maolán beag nuashonraithe go rialta sa bhunachar sonraí.

  2. Maireann an comórtas de ghnáth 60 bloc de blockchain ardán Waves, i láthair na huaire tá sé thart ar 1 uair an chloig. Meastar go bhfuil an comórtas críochnaithe agus dúnta más rud é tar éis 60 bloc go bhfuil ar a laghad dhá thicéad istigh ann, nó déantar am gníomhaíochta an chomórtais a fhadú do na 60 bloc eile.
  3. Díreach tar éis dhúnadh an chomórtais, déanaimid idirbheart dáta a ghiniúint agus a sheoladh (íocaimid coimisiún de thart ar $ 0.005 air freisin), más gá, roinnt, ina ndéantar coinníollacha uile na tarraingthe a thaifeadadh agus liosta ordaithe imreoirí (ticéid) as a gcaithfimid na buaiteoirí a roghnú.
  4. Ag an gcéim seo, tá an chéad chuid den chód (R-cód) againn cheana féin móide ID dáta an idirbhirt (TXID). Cuirimid iad le síniú chuig an oracle i bhfoirm comhcheangail (R-cód + TXID), arís íocaimid coimisiún + cúiteamh. Seiceálann an oracle na sonraí a fuarthas le haghaidh uathúlacht agus muintearas, agus mar fhreagra cuireann sé an dara cuid den chód (S-cód) chugainn i bhformáid sha256, arb é an pointe tosaigh don ghineadóir uimhreacha randamacha.
  5. Chun uimhir randamach a fháil a léireoidh seicheamh uimhir an ticéid bhuaiteach, déanaimid an S-cód a thiontú ó shonraí dénártha sha256 go léiriú heicsidheachúlach (HEX). Ansin ón teaghrán HEX mar thoradh air, faigheann muid uimhir. Faighimid an chuid eile den uimhir iarmhairt a roinnt ar líon na dticéad (all_tickets) agus cuirimid 1 leis an toradh (chun an uimhir 1 a fháil roimh gach_tickets). Mar thoradh air sin, faigheann muid sraithuimhir an bhuaiteora.
  6. Más rud é, de réir choinníollacha an líníochta, go bhfuil roinnt buaiteoirí ann, ansin déanaimid na hoibríochtaí roimhe seo arís i méid atá comhionann le líon na n-áiteanna duaise. Sa chás seo, gach uair a bhainimid ticéad ón liosta atá buaite cheana féin agus laghdaítear all_tickets faoi 1, agus in ionad S-cód cuirimid in iúl an uimhir a fuarthas roimhe seo.

Breathnaímid ar fhíorshampla ar leith, comórtas Uimh. 119:

7 dticéad san iomlán (gach_ticéad)
Costas ticéad 50 bonn (Geall)
Táille cluiche 10% (Táille)

De réir choinníollacha an chrannchuir, téann 30% chuig an duaisairgead, i.e. sa chás seo, caithfidh 2 thicéad duais a fháil, a ríomhtar a méid de réir na foirmle (Geall *all_tickets-Fee)/2.

1. Cód R faighte: RdbAiAhKhveAtR4eyTKq75noMxdcEoxbE6BvojJjM13VE

2. Tar éis an comórtas a dhúnadh, tá liosta ticéid againn i bhfoirm péirí: uimhir + seoladh (seoladh an sparán óna ndearnadh íocaíocht as rannpháirtíocht sa chomórtas). Tabhair faoi deara gur féidir seoltaí a athdhéanamh, ciallaíonn sé seo gur cheannaigh rannpháirtí amháin roinnt ticéid chuig comórtas amháin; níl sé seo toirmiscthe ag na rialacha.

Dáta an idirbhirt seolta: 82JTMzhHM5xEA2fQ9Qscd5QAJU3DAd8nShLjdVHTer5S

3. S-cód iarrtha: FTF3uRyaa4F2uAyD6z5a3CNbTXbQLc7fSR6CFNVjgZYV le trácht (R-cód + TXID):
RdbAiAhKhveAtR4eyTKq75noMxdcEoxbE6BvojJjM13VE 82JTMzhHM5xEA2fQ9Qscd5QAJU3DAd8nShLjdVHTer5S

4. Cód S faighte: Ri89jHB4UXZDXY6gT1m4LBDXGMTaYzHozMk4nxiuqVXdC

5. Cinneadh na buaiteoirí.

6. Íocaíochtaí seolta

Mar thoradh air sin, tá taifeadadh céim ar chéim againn ar an nós imeachta líníochta duaise sa blockchain leis an gcumas é a sheiceáil ag am ar bith. Tá sé beagnach dodhéanta don eagraí na torthaí a ionramháil; ar a laghad, ní bheidh sé indéanta a thuilleadh a dhéanamh gan aird.

determine the winner № 1

All_tickets:
Index: 1 Ticket:139
Index: 2 Ticket:141
Index: 3 Ticket:143
Index: 4 Ticket:145
Index: 5 Ticket:147
Index: 6 Ticket:149
Index: 7 Ticket:151

1. bin -> hex ( bin2hex(sha256(S-code)) ): Ri89jHB4UXZDXY6gT1m4LBDXGMTaYzHozMk4nxiuqVXdC -> 0xdaf5802953dcb27f89972e38e8900b898733f6a613e6e1c6c5491362c1832596

2. hex -> gmp number: 0xdaf5802953dcb27f89972e38e8900b898733f6a613e6e1c6c5491362c1832596 -> 99037963059744689166154019807924045947962565922868104113173478160267437352342

3. gmp -> modulo (mod=7): 99037963059744689166154019807924045947962565922868104113173478160267437352342 -> 4

4. modulo -> ticket: 4 -> 145

determine the winner № 2

All_tickets:

Index: 1 Ticket:139
Index: 2 Ticket:141
Index: 3 Ticket:143
Index: 4 Ticket:147
Index: 5 Ticket:149
Index: 6 Ticket:151

1. bin -> hex ( bin2hex(sha256(previous hex)) ): daf5802953dcb27f89972e38e8900b898733f6a613e6e1c6c5491362c1832596 -> 0x9560e77525e9ea2db92cdb8484dc52046ccafac7c719b8859ff55f0eb92834a0
2. hex -> gmp number: 0x9560e77525e9ea2db92cdb8484dc52046ccafac7c719b8859ff55f0eb92834a0 -> 67565829218838067182838043983962684143266386786567427968312120473742580659360
3. gmp -> modulo (mod=6): 67565829218838067182838043983962684143266386786567427968312120473742580659360 -> 1
4. modulo -> ticket: 1 -> 139

End.

Foinse: will.com

Add a comment