Kugwiritsa ntchito mwachisawawa pogwiritsa ntchito chitsanzo cha lottery

Tsiku lina m’maΕ΅a ndinapeza nkhani ina yonena za chotsimikizirika mwachisawawa nambala jenereta pa Waves nsanja blockchain.

Chithunzi chonse chinali chowonekera, koma njira yeniyeni yoyendetsera ntchito sinali. Zizindikiro zina, siginecha, chiyani, kuti, chifukwa chiyani?

Kukambirana kangapo ndi mlembi wa oracle, chifukwa chake, zinali zotheka kuphatikiza malingaliro ojambulira (omwe akhazikitsidwa mu PHP) ndi algorithm kuti apeze nambala yosasinthika.

  1. Kumayambiriro kwa mpikisano / kuzungulira, tikupempha gawo loyamba la code (R-code) kuchokera ku oracle.

    Pakadali pano, palibe chidziwitso chokhudza kuchuluka kwa osewera, kuchuluka kwa mphotho, kukula kwa mphotho, kapena kukhalapo kwa lottery yonse. Oracle, kudzera mu malonda, amapereka nambala yachisawawa, yomwe imatha kugwiritsidwa ntchito kamodzi kokha ndi omwe adapempha. Mwa njira, R-code ikhoza "kugulidwa" (kutanthauza mtengo wa pempho lopempha + malipiro kwa oracle chifukwa cha kuyankhapo, izi ndi ndalama pafupifupi $ 0.015 pamtengo wamakono, codeyo imaperekedwa kwaulere. ) kangapo pasadakhale, kuti musadikire kuti mulandire kuyankhapo pambuyo pake. Ndidapanga buffer yaying'ono yosinthidwa pafupipafupi mu database.

  2. Mpikisanowu nthawi zambiri umatenga midadada 60 ya blockchain ya Waves, pakadali pano ndi pafupifupi ola limodzi. Mpikisanowu umalingaliridwa kuti watha ndikutsekedwa ngati pambuyo pa midadada 1 pali matikiti osachepera awiri, apo ayi nthawi yamasewera imawonjezedwa pama block 60 otsatira.
  3. Mpikisanowo ukangotha, timapanga ndikutumiza tsiku (timalipiritsanso pafupifupi $ 0.005), ngati kuli kofunikira, angapo, momwe zinthu zonse zojambulira zimajambulidwa ndikuyitanitsa mndandanda wa osewera (matikiti) m'mene tiyenera kusankha opambana.
  4. Pakadali pano, tili ndi gawo loyamba la code (R-code) kuphatikiza ID ya tsiku la transaction (TXID). Timawatumiza kuti asayine ku oracle mu mawonekedwe a concatenation (R-code + TXID), kachiwiri timalipira komiti + malipiro. Oracle imayang'ana zomwe zalandilidwa kuti zikhale zapadera komanso kukhala zake, ndipo poyankha zimatitumizira gawo lachiwiri la code (S-code) mu mtundu wa sha256, womwe ndi poyambira kwa jenereta yachisawawa.
  5. Kuti tipeze nambala yachisawawa yomwe ingasonyeze nambala ya tikiti yopambana, timasintha S-code kuchokera pa data ya binary ya sha256 kukhala yoyimira hexadecimal (HEX). Kenako kuchokera pamndandanda wa HEX wotsatira, timapeza nambala. Timapeza chotsalira chogawanitsa chiwerengero ndi chiwerengero cha matikiti (all_tickets) ndikuwonjezera 1 pazotsatira (kuti tipeze nambala 1 pamaso pa all_tickets). Zotsatira zake, timapeza nambala yachinsinsi ya wopambana.
  6. Ngati, molingana ndi momwe chithunzicho chilili, pali opambana angapo, ndiye kuti timabwereza zomwe zachitika m'mbuyomu mumtengo wofanana ndi kuchuluka kwa malo amphotho. Pankhaniyi, nthawi iliyonse tikachotsa pamndandanda tikiti yomwe yapambana kale ndikuchepetsa all_tickets ndi 1, ndipo m'malo mwa S-code tikuwonetsa nambala yam'mbuyomu yomwe idalandilidwa.

Tiyeni tiwone chitsanzo chenicheni, mpikisano No. 119:

Matikiti onse 7 (matikiti_onse)
Tikiti mtengo 50 ndalama (Bet)
Malipiro amasewera 10% (Ndalama)

Malinga ndi zikhalidwe za lottery, 30% amapita ku mphotho ya ndalama, i.e. pamenepa, 2 matikiti ayenera kulandira mphoto, kukula kwake kuwerengedwa molingana ndi chilinganizo (Bet * all_tickets-Fee)/2.

1. Analandira R-code: RdbAiAhKhveAtR4eyTKq75noMxdcEoxbE6BvojJjM13VE

2. Pambuyo pa mpikisanowu, tili ndi mndandanda wa matikiti mu mawonekedwe a awiriawiri: nambala + adiresi (adiresi ya chikwama chomwe malipiro a kutenga nawo mbali pa mpikisano adapangidwa). Chonde dziwani kuti ma adilesi atha kubwerezedwa, izi zikutanthauza kuti mmodzi watenga matikiti angapo opita ku mpikisano umodzi; izi sizoletsedwa ndi malamulo.

Tsiku lochita kutumizidwa: 82JTMzhHM5xEA2fQ9Qscd5QAJU3DAd8nShLjdVHTer5S

3. Pempho la S-code: FTF3uRyaa4F2uAyD6z5a3CNbTXbQLc7fSR6CFNVjgZYV ndi ndemanga (R-code + TXID):
RdbAiAhKhveAtR4eyTKq75noMxdcEoxbE6BvojJjM13VE 82JTMzhHM5xEA2fQ9Qscd5QAJU3DAd8nShLjdVHTer5S

4. Analandira S-code: Ri89jHB4UXZDXY6gT1m4LBDXGMTaYzHozMk4nxiuqVXdC

5. Opambana adatsimikizika.

6. Anatumiza malipiro

Zotsatira zake, tili ndi kujambula pang'onopang'ono kwa njira yojambulira mphotho mu blockchain ndikutha kuyang'ana nthawi iliyonse. Zimakhala zosatheka kuti wokonza mapulani asinthe zotsatira zake; mwina, sikuthekanso kuchita izi mosazindikira.

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

Kuwonjezera ndemanga