لاٽري جو مثال استعمال ڪندي هڪ بي ترتيب اوريڪل استعمال ڪندي

هڪ صبح مون کي هڪ مضمون مليو قابل تصديق بي ترتيب نمبر جنريٽر Waves پليٽ فارم blockchain تي.

مجموعي تصوير واضح هئي، پر خاص عمل درآمد جو طريقو نه هو. ڪجهه ڪوڊ، دستخط، ڇا، ڪٿي، ڇو؟

oracle جي ليکڪ سان ڪيتريون ئي صلاحون، نتيجي طور، اهو ممڪن هو ته ڊرائنگ منطق (PHP ۾ لاڳو ڪيل) هڪ بي ترتيب نمبر حاصل ڪرڻ لاء الگورتھم سان گڏ.

  1. ٽورنامنٽ/رائونڊ جي شروعات تي، اسان درخواست ڪريون ٿا ته ڪوڊ جو پھريون حصو (R-code) Oracle کان.

    هن وقت، رانديگرن جي تعداد، انعام جي جڳهن جو تعداد، انعام جي ادائگي جي سائيز، يا عام طور تي لاٽري جي وجود بابت ڪا به ڄاڻ ناهي. oracle، هڪ ٽرانزيڪشن ذريعي، هڪ ذاتي بي ترتيب ڪوڊ جاري ڪري ٿو، جيڪو پوء صرف هڪ ڀيرو استعمال ڪري سگهجي ٿو ۽ صرف انهن طرفان، جن ان جي درخواست ڪئي. رستي ۾، آر-ڪوڊ ٿي سگهي ٿو "خريداري" (مطلب درخواست جي ٽرانزيڪشن جي قيمت + جوابي ٽرانزيڪشن لاءِ اوريڪل کي معاوضو، اهو موجوده شرح تي اٽڪل $ 0.015 جي رقم آهي، ڪوڊ پاڻ مفت جاري ڪيو ويو آهي. ) اڳ ۾ ڪيترائي ڀيرا، جيئن ته جواب جي ٽرانزيڪشن جي وصولي جو انتظار نه ڪيو وڃي. مون ڊيٽابيس ۾ هڪ ننڍڙو باقاعده اپڊيٽ بفر ٺاهيو.

  2. ٽورنامينٽ عام طور تي رهي ٿو 60 بلاڪ جي Waves پليٽ فارم blockchain، هن وقت اهو لڳ ڀڳ 1 ڪلاڪ آهي. ٽورنامينٽ کي مڪمل ۽ بند سمجهيو ويندو جيڪڏهن 60 بلاڪن کان پوءِ ان ۾ گهٽ ۾ گهٽ ٻه ٽڪيٽون هونديون، ٻي صورت ۾ ٽورنامينٽ جي سرگرمي جو وقت ايندڙ 60 بلاڪن لاءِ وڌايو ويندو.
  3. ٽورنامنٽ جي بند ٿيڻ کان فوري پوءِ، اسان تاريخ جي ٽرانزيڪشن ٺاهي ۽ موڪليندا آهيون (اسان ان لاءِ تقريبن $0.005 جو ڪميشن پڻ ادا ڪندا آهيون)، جيڪڏهن ضروري هجي ته، ڪيترائي، جن ۾ ڊرائنگ جون سڀئي شرطون رڪارڊ ٿيل آهن ۽ رانديگرن جي ترتيب ڏنل فهرست (ٽڪيٽون) جنهن مان اسان کي فاتحن کي چونڊڻو پوندو.
  4. هن مرحلي تي، اسان وٽ اڳ ۾ ئي ڪوڊ جو پهريون حصو آهي (R-code) گڏوگڏ ٽرانزيڪشن جي تاريخ ID (TXID). اسان انھن کي دستخط لاءِ موڪليندا آھيون oracle ڏانھن ڪنٽينشن جي صورت ۾ (R-code + TXID)، وري اسين ھڪ ڪميشن + معاوضو ادا ڪندا آھيون. oracle مليل ڊيٽا کي انفراديت ۽ تعلق لاءِ چيڪ ڪري ٿو، ۽ جواب ۾ اسان کي موڪلي ٿو ڪوڊ جو ٻيو حصو (S-code) sha256 فارميٽ ۾، جيڪو بي ترتيب نمبر جنريٽر لاءِ شروعاتي نقطو آهي.
  5. هڪ بي ترتيب نمبر حاصل ڪرڻ لاءِ جيڪو ظاھر ڪندو کٽيندڙ ٽڪيٽ جي ترتيب نمبر، اسان S-code کي sha256 بائنري ڊيٽا مان ھيڪساڊيڪل (HEX) نمائندگي ۾ تبديل ڪريون ٿا. ان کان پوء نتيجو هيڪس اسٽرنگ مان، اسان هڪ نمبر حاصل ڪندا آهيون. اسان باقي حاصل ڪريون ٿا نتيجي واري نمبر کي ٽڪيٽن جي تعداد (all_tickets) سان ورهائڻ ۽ نتيجي ۾ 1 شامل ڪريو (سڀ_ٽڪيٽ کان اڳ نمبر 1 حاصل ڪرڻ لاءِ). نتيجي طور، اسان فاتح جو سيريل نمبر حاصل ڪندا آهيون.
  6. جيڪڏهن، ڊرائنگ جي شرطن جي مطابق، ڪيترائي فاتح آهن، پوء اسان انعام جي جڳهن جي تعداد جي برابر رقم ۾ پوئين عملن کي ورجائيندا آهيون. انهي صورت ۾، هر ڀيري اسان لسٽ مان هڪ ٽڪيٽ هٽائي ڇڏيو آهي جيڪو اڳ ۾ ئي کٽي چڪو آهي ۽ 1 تائين all_tickets کي گهٽايو، ۽ S-code جي بدران اسان اڳوڻو نمبر وصول ڪيو.

اچو ته هڪ خاص حقيقي مثال ڏسو، ٽورنامينٽ نمبر 119:

ڪل 7 ٽڪيٽون (سڀ_ٽڪيٽون)
ٽڪيٽ جي قيمت 50 سڪا (شرط)
راند جي فيس 10٪ (فيس)

لاٽري جي شرطن جي مطابق، 30٪ انعام جي رقم ڏانهن وڃي ٿو، يعني. انهي صورت ۾، 2 ٽڪيٽن کي انعام حاصل ڪرڻ گهرجي، جنهن جي ماپ فارمولا (Bet*all_tickets-Fee)/2 جي حساب سان حساب ڪئي وئي آهي.

1. مليل آر-ڪوڊ: RdbAiAhKhveAtR4eyTKq75noMxdcEoxbE6BvojJjM13VE

2. ٽورنامنٽ بند ٿيڻ کان پوءِ، اسان وٽ ٽڪيٽن جي ھڪڙي فهرست آھي جوڙن جي صورت ۾: نمبر + پتو (پرس جو پتو جنھن تان ٽورنامينٽ ۾ شرڪت لاءِ ادائيگي ڪئي وئي). مهرباني ڪري نوٽ ڪريو ته ايڊريس بار بار ٿي سگهي ٿو، ان جو مطلب آهي ته هڪ حصو وٺندڙ هڪ ٽورنامنٽ لاء ڪيترن ئي ٽڪيٽن کي خريد ڪيو، اهو ضابطن طرفان منع ٿيل ناهي.

موڪلڻ جي تاريخ: 82JTMzhHM5xEA2fQ9Qscd5QAJU3DAd8nShLjdVHTer5S

3. درخواست ڪيل S-code: FTF3uRyaa4F2uAyD6z5a3CNbTXbQLc7fSR6CFNVjgZYV تبصرو سان (R-code + TXID):
RdbAiAhKhveAtR4eyTKq75noMxdcEoxbE6BvojJjM13VE 82JTMzhHM5xEA2fQ9Qscd5QAJU3DAd8nShLjdVHTer5S

4. مليل S-code: Ri89jHB4UXZDXY6gT1m4LBDXGMTaYzHozMk4nxiuqVXdC

5. فاتح مقرر ڪيا ويا.

6. ادائگيون موڪليون

نتيجي طور، اسان وٽ بلاڪچين ۾ انعام جي ڊرائنگ جي طريقيڪار جو هڪ قدم قدم رڪارڊنگ آهي ان کي ڪنهن به وقت چيڪ ڪرڻ جي صلاحيت سان. آرگنائيزر لاءِ اهو لڳ ڀڳ ناممڪن آهي ته گهٽ ۾ گهٽ نتيجن کي هٿي وٺرائڻ لاءِ، اهو هاڻي ممڪن نه ٿيندو ته اهو ڪنهن جو به ڌيان نه ڏنو وڃي.

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.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو