Истифодаи oracle тасодуфӣ бо истифода аз мисоли лотерея

Як саҳар ман дар бораи мақолае дучор омадам генератори рақамҳои тасодуфии тафтишшаванда дар blockchain платформаи Waves.

Манзараи умумӣ равшан буд, аммо усули мушаххаси амалӣ набуд. Баъзе кодҳо, имзоҳо, чӣ, дар куҷо, чаро?

Якчанд машваратҳо бо муаллифи oracle, дар натиҷа имкон пайдо шуд, ки мантиқи расмкашӣ (дар PHP амалӣ карда шудааст) бо алгоритми гирифтани рақами тасодуфӣ якҷоя карда шавад.

  1. Дар оғози мусобиқа/давр, мо қисми якуми кодро (R-код) аз oracle дархост мекунем.

    Дар айни замон дар бораи шумораи бозигарон, шумораи ҷойҳои ҷоиза, андозаи пардохти мукофот ва умуман мавҷудияти лотерея маълумот нест. Oracle тавассути транзаксия рамзи тасодуфии шахсиро мебарорад, ки пас аз он метавонад танҳо як маротиба ва танҳо аз ҷониби онҳое, ки онро дархост кардаанд, истифода шавад. Дар омади гап, рамзи R-ро метавон “харид” (маънои арзиши муомилоти дархост + ҷуброн ба oracle барои муомилоти посух, ин маблағи тақрибан $0.015 бо қурби ҷорӣ аст, худи код ройгон дода мешавад. ) якчанд маротиба пешакй, то ки дертар гирифтани муомилоти чавобиро мунтазир нашаванд. Ман дар пойгоҳи дода буфери хурди мунтазам навсозӣ кардам.

  2. Мусобиқа одатан 60 блоки блокчейн платформаи Waves давом мекунад, дар айни замон он тақрибан 1 соат аст. Агар пас аз 60 блок дар он ҳадди аққал ду чипта мавҷуд бошад, мусобиқа анҷомшуда ва пӯшида ҳисобида мешавад, дар акси ҳол, вақти фаъолияти мусобиқа барои 60 блоки оянда тамдид карда мешавад.
  3. Дарҳол пас аз пӯшидани мусобиқа, мо транзаксияро таҳия ва мефиристем (мо инчунин барои он тақрибан $ 0.005 комиссия месупорем), агар лозим бошад, якчанд, ки дар он ҳама шартҳои бозӣ сабт карда мешаванд ва рӯйхати фармоишии бозигарон (чиптаҳо) ки аз он мо бояд голибонро интихоб кунем.
  4. Дар ин марҳила, мо аллакай қисми якуми код (R-код) ва инчунин ID санаи транзаксия (TXID) дорем. Мо онҳоро барои имзо ба oracle дар шакли пайвастшавӣ мефиристем (R-code + TXID), боз мо комиссия + ҷуброн месупорем. Oracle маълумоти гирифташударо барои нотакрорӣ ва мансубият тафтиш мекунад ва дар посух ба мо қисми дуюми кодро (S-код) дар формати sha256 мефиристад, ки нуқтаи ибтидоии генератори рақамҳои тасодуфӣ мебошад.
  5. Барои гирифтани рақами тасодуфӣ, ки рақами пайдарпайии чиптаи бурднокро нишон медиҳад, мо рамзи S-ро аз маълумоти дуӣ sha256 ба муаррифии шонздаҳӣ (HEX) табдил медиҳем. Пас аз сатри HEX натиҷа, мо рақам мегирем. Мо боқимондаи тақсими рақами ҳосилшударо ба шумораи чиптаҳо мегирем (ҳама_чиптаҳо) ва ба натиҷа 1 илова мекунем (барои гирифтани рақами 1 пеш аз ҳама_чиптаҳо). Дар натиҷа, мо рақами силсилавии ғолибро мегирем.
  6. Агар аз руи шартхои тираж якчанд бурд баромада бошад, пас амалиёти пештараро ба маблаги баробар ба шумораи чойхои бурднок такрор мекунем. Дар ин ҳолат, ҳар дафъа мо чиптаеро, ки аллакай бурд кардааст, аз рӯйхат хориҷ мекунем ва ҳамаи_чиптаҳоро 1 кам мекунем ва ба ҷои рамзи S рақами қаблии гирифташударо нишон медиҳем.

Мисоли мушаххаси воқеии мусобиқаи №119-ро дида мебароем:

Ҳамагӣ 7 чипта (ҳама_чиптаҳо)
Нархи чипта 50 танга (Бет)
Пардохти бозӣ 10% (боҷ)

Мувофики шартхои лотерея 30 фоиз ба пули бурд меравад, яъне. дар ин ҳолат, 2 чипта бояд мукофот гиранд, ки андозаи он мувофиқи формулаи (Bet*all_tickets-Fee)/2 ҳисоб карда мешавад.

1. Рамзи R гирифта шуд: RdbAiAhKhveAtR4eyTKq75noMxdcEoxbE6BvojJjM13VE

2. Пас аз анҷоми мусобиқа мо рӯйхати чиптаҳоро дар шакли ҷуфт дорем: рақам + суроға (суроғаи ҳамёне, ки аз он пардохт барои иштирок дар мусобиқа сурат гирифтааст). Лутфан таваҷҷӯҳ намоед, ки суроғаҳо метавонанд такрор шаванд, ин маънои онро дорад, ки як иштирокчӣ ба як мусобиқа чанд чипта харидааст, ин аз рӯи қоида манъ карда нашудааст.

Санаи фиристодани муомилот: 82JTMzhHM5xEA2fQ9Qscd5QAJU3DAd8nShLjdVHTer5S

3. Рамзи дархостшудаи S: FTF3uRyaa4F2uAyD6z5a3CNbTXbQLc7fSR6CFNVjgZYV бо шарҳ (R-код + TXID):
RdbAiAhKhveAtR4eyTKq75noMxdcEoxbE6BvojJjM13VE 82JTMzhHM5xEA2fQ9Qscd5QAJU3DAd8nShLjdVHTer5S

4. Рамзи S-и гирифташуда: Ri89jHB4UXZDXY6gT1m4LBDXGMTaYzHozMk4nxiuqVXdC

5. Голибон муайян карда шуданд.

6. Пардохтҳои фиристодашуда

Дар натиҷа, мо қадам ба қадам сабти тартиби гирифтани мукофотро дар blockchain дорем, ки қобилияти тафтиш кардани онро дар вақти дилхоҳ дорем. Барои ташкилотчй кор фармудани нати-чахо кариб имконнопазир аст, акаллан, ин корро бехабар кардан дигар имконнопазир аст.

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.

Манбаъ: will.com

Илова Эзоҳ