Paggamit sa usa ka random nga orakulo gamit ang pananglitan sa usa ka loterya

Usa ka buntag nakit-an nako ang usa ka artikulo bahin sa mapamatud-an nga random number generator sa Waves plataporma blockchain.

Ang kinatibuk-ang hulagway klaro, apan ang piho nga pamaagi sa pagpatuman dili. Ang ubang mga code, pirma, unsa, asa, ngano?

Daghang mga konsultasyon sa tagsulat sa orakulo, ingon usa ka sangputanan, posible nga makombinar ang lohika sa pagguhit (gipatuman sa PHP) nga adunay usa ka algorithm alang sa pagkuha usa ka random nga numero.

  1. Sa pagsugod sa torneyo/round, among gihangyo ang unang bahin sa code (R-code) gikan sa orakulo.

    Niining higayona, wala’y kasayuran bahin sa gidaghanon sa mga magdudula, ang gidaghanon sa mga lugar nga premyo, ang kadako sa pagbayad sa premyo, o ang paglungtad sa loterya sa kinatibuk-an. Ang orakulo, pinaagi sa usa ka transaksyon, nag-isyu sa usa ka personal nga random code, nga mahimo ra nga magamit kausa ug sa mga nangayo niini. Pinaagi sa dalan, ang R-code mahimong "gipalit" (nagpasabot nga ang gasto sa transaksyon sa hangyo + bayad sa orakulo alang sa transaksyon sa pagtubag, kini usa ka kantidad nga mga $0.015 sa kasamtangan nga rate, ang code mismo gi-isyu nga walay bayad. ) sa daghang mga higayon nga abante, aron dili maghulat sa resibo sa tubag nga transaksyon sa ulahi. Naghimo ako usa ka gamay nga kanunay nga gi-update nga buffer sa database.

  2. Ang torneyo kasagaran molungtad og 60 ka bloke sa Waves platform blockchain, sa pagkakaron mga 1 ka oras. Ang torneyo gikonsiderar nga nahuman ug sirado kung pagkahuman sa 60 ka bloke adunay labing menos duha ka mga tiket niini, kung dili ang oras sa kalihokan sa torneyo gipalapdan alang sa sunod nga 60 ka bloke.
  3. Diha-diha dayon human sa pagsira sa torneyo, naghimo kami ug nagpadala sa usa ka transaksyon sa petsa (nagbayad usab kami og komisyon nga gibana-bana nga $0.005 alang niini), kung gikinahanglan, daghan, diin ang tanan nga mga kondisyon sa drowing natala ug usa ka order nga listahan sa mga magdudula (tiket) diin kinahanglan natong pilion ang mga mananaog.
  4. Niini nga yugto, aduna na kitay unang bahin sa code (R-code) ug ang transaction date ID (TXID). Gipadala namo sila alang sa pirma sa orakulo sa porma sa concatenation (R-code + TXID), pag-usab nagbayad kami og komisyon + bayad. Gisusi sa orakulo ang nadawat nga datos alang sa pagkatalagsaon ug pagkasakop, ug agig tubag gipadala kanamo ang ikaduhang bahin sa code (S-code) sa format nga sha256, nga mao ang punto sa pagsugod alang sa random number generator.
  5. Aron makakuha og random nga numero nga magpaila sa sequence number sa nakadaog nga ticket, among i-convert ang S-code gikan sa sha256 binary data ngadto sa hexadecimal (HEX) nga representasyon. Dayon gikan sa resulta nga HEX string, makakuha kita og numero. Among makuha ang nahibilin sa pagbahin sa resulta nga numero sa gidaghanon sa mga tiket (all_tickets) ug idugang ang 1 sa resulta (aron makuha ang numero 1 sa dili pa ang all_tickets). Ingon usa ka sangputanan, makuha namon ang serial number sa mananaog.
  6. Kung, sumala sa mga kondisyon sa drowing, adunay daghang mga mananaog, nan among gisubli ang miaging mga operasyon sa kantidad nga katumbas sa gidaghanon sa mga lugar nga premyo. Sa kini nga kaso, sa matag higayon nga atong tangtangon gikan sa lista ang usa ka tiket nga nakadaog na ug gipakunhod ang tanan_ticket sa 1, ug imbes nga S-code atong gipakita ang miaging numero nga nadawat.

Atong tan-awon ang usa ka piho nga tinuod nga pananglitan, ang torneyo No. 119:

Kinatibuk-ang 7 ka mga tiket (all_tickets)
Ang tiket nagkantidad ug 50 ka sensilyo (Pusta)
Bayad sa dula 10% (Bayad)

Sumala sa mga kondisyon sa loterya, ang 30% moadto sa premyong salapi, i.e. sa kini nga kaso, 2 tiket kinahanglan makadawat og premyo, ang gidak-on nga kalkulado sumala sa pormula (Bet*all_tickets-Fee)/2.

1. Nakadawat R-code: RdbAiAhKhveAtR4eyTKq75noMxdcEoxbE6BvojJjM13VE

2. Human sa pagsira sa torneyo, kami adunay usa ka lista sa mga tiket sa porma sa mga pares: numero + adres (ang adres sa pitaka diin ang pagbayad alang sa pag-apil sa torneyo gihimo). Palihug timan-i nga ang mga adres mahimong gisubli, kini nagpasabot nga ang usa ka partisipante mipalit og daghang mga tiket sa usa ka torneyo; kini wala gidili sa mga lagda.

Petsa sa transaksyon gipadala: 82JTMzhHM5xEA2fQ9Qscd5QAJU3DAd8nShLjdVHTer5S

3. Gipangayo nga S-code: FTF3uRyaa4F2uAyD6z5a3CNbTXbQLc7fSR6CFNVjgZYV uban sa komento (R-code + TXID):
RdbAiAhKhveAtR4eyTKq75noMxdcEoxbE6BvojJjM13VE 82JTMzhHM5xEA2fQ9Qscd5QAJU3DAd8nShLjdVHTer5S

4. Nakadawat S-code: Ri89jHB4UXZDXY6gT1m4LBDXGMTaYzHozMk4nxiuqVXdC

5. Gideterminar ang mga mananaog.

6. Gipadala nga bayad

Ingon usa ka sangputanan, kami adunay usa ka sunod-sunod nga pagrekord sa pamaagi sa pagdrowing sa premyo sa blockchain nga adunay katakus sa pagsusi niini bisan unsang orasa. Hapit imposible alang sa organizer sa pagmaniobra sa mga resulta; labing menos, dili na posible nga buhaton kini nga wala mamatikdi.

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.

Source: www.habr.com

Idugang sa usa ka comment