ලොතරැයියක උදාහරණය භාවිතා කරමින් අහඹු ඔරකල් භාවිතා කිරීම

දවසක් උදේ මට ලිපියක් හම්බ වුණා සත්‍යාපනය කළ හැකි අහඹු සංඛ්‍යා උත්පාදක යන්ත්‍රය Waves platform blockchain මත.

සමස්ත පින්තූරය පැහැදිලි වූ නමුත් නිශ්චිත ක්‍රියාත්මක කිරීමේ ක්‍රමය එසේ නොවීය. සමහර කේත, අත්සන්, කුමක්ද, කොහෙද, ඇයි?

ඔරකල්හි කතුවරයා සමඟ උපදේශන කිහිපයක්, ප්රතිඵලයක් වශයෙන්, අහඹු අංකයක් ලබා ගැනීම සඳහා ඇල්ගොරිතමයක් සමඟ චිත්ර තර්කය (PHP හි ක්රියාත්මක කර ඇත) ඒකාබද්ධ කිරීමට හැකි විය.

  1. තරඟාවලිය/වටය ආරම්භයේදී, අපි ඔරකල් වෙතින් කේතයේ පළමු කොටස (R-කේතය) ඉල්ලා සිටිමු.

    මේ මොහොතේ, ක්‍රීඩකයින් සංඛ්‍යාව, ත්‍යාග ස්ථාන ගණන, ත්‍යාග ගෙවීම් ප්‍රමාණය හෝ පොදුවේ ලොතරැයියේ පැවැත්ම පිළිබඳ තොරතුරු නොමැත. ඔරකල්, ගනුදෙනුවක් හරහා පුද්ගලික අහඹු කේතයක් නිකුත් කරයි, පසුව එය භාවිතා කළ හැක්කේ එක් වරක් පමණක් සහ එය ඉල්ලූ අයට පමණි. මාර්ගය වන විට, R-කේතය "මිලදී ගැනීම" කළ හැකිය (ඉල්ලීම ගනුදෙනුවේ පිරිවැය + ප්‍රතිචාර ගනුදෙනුව සඳහා ඔරකල් වෙත වන්දි, මෙය වර්තමාන අනුපාතයට අනුව ඩොලර් 0.015 ක් පමණ වේ, කේතය නොමිලේ නිකුත් කෙරේ. ) පසුව ප්රතිචාර ගනුදෙනුව ලැබීමට බලා නොසිටින ලෙස, කලින් කිහිප වතාවක්. මම දත්ත ගබඩාවේ කුඩා නිතිපතා යාවත්කාලීන කරන ලද බෆරයක් සෑදුවෙමි.

  2. තරඟාවලිය සාමාන්‍යයෙන් Waves platform blockchain කුට්ටි 60 ක් පවතින අතර මේ මොහොතේ එය ආසන්න වශයෙන් පැය 1 කි. වාරණ 60 කට පසුව අවම වශයෙන් ප්‍රවේශපත්‍ර දෙකක්වත් තිබේ නම් තරඟාවලිය අවසන් කර අවසන් යැයි සලකනු ලැබේ, එසේ නොමැතිනම් තරඟාවලියේ ක්‍රියාකාරකම් කාලය මීළඟ වාර 60 සඳහා දීර්ඝ කෙරේ.
  3. තරඟාවලිය අවසන් වූ විගසම, අපි දින ගනුදෙනුවක් ජනනය කර යවන්නෙමු (අපි ඒ සඳහා දළ වශයෙන් ඩොලර් 0.005 ක කොමිස් මුදලක් ද ගෙවන්නෙමු), අවශ්‍ය නම්, චිත්‍ර ඇඳීමේ සියලුම කොන්දේසි සටහන් කර ඇති සහ ඇණවුම් කළ ක්‍රීඩක ලැයිස්තුවක් (ප්‍රවේශපත්‍ර) එයින් අපි ජයග්‍රාහකයින් තෝරා ගත යුතුයි.
  4. මෙම අදියරේදී, අපි දැනටමත් කේතයේ පළමු කොටස (R-කේතය) සහ ගනුදෙනු දින හැඳුනුම්පත (TXID) ඇත. අපි ඒවා සම්මුතිය (R-code + TXID) ආකාරයෙන් ඔරකල් වෙත අත්සන් කිරීම සඳහා යවමු, නැවතත් අපි කොමිස් මුදලක් + වන්දි ගෙවන්නෙමු. ඔරකල් විසින් ලැබුණු දත්ත සුවිශේෂත්වය සහ අයිති සඳහා පරීක්ෂා කරන අතර, ප්‍රතිචාරයක් වශයෙන්, අහඹු සංඛ්‍යා උත්පාදකයේ ආරම්භක ලක්ෂ්‍යය වන sha256 ආකෘතියෙන් කේතයේ දෙවන කොටස (S-කේතය) අපට එවයි.
  5. ජයග්‍රාහී ප්‍රවේශ පත්‍රයේ අනුක්‍රමික අංකය දක්වන අහඹු අංකයක් ලබා ගැනීම සඳහා, අපි S-කේතය sha256 ද්විමය දත්ත වලින් ෂඩාස්‍ර (HEX) නිරූපණයකට පරිවර්තනය කරමු. එවිට ලැබෙන HEX string එකෙන් අපට අංකයක් ලැබේ. ප්‍රතිඵලයක් ලෙස ලැබෙන සංඛ්‍යාව ටිකට් ගණනින් (සියලු_ප්‍රවේශපත්‍ර) බෙදීමේ ඉතිරිය අපට ලැබෙන අතර ප්‍රතිඵලයට 1ක් එකතු කරන්න (සියලු_ටිකට් වලට පෙර අංක 1 ලබා ගැනීමට). ප්රතිඵලයක් වශයෙන්, අපි ජයග්රාහකයාගේ අනුක්රමික අංකය ලබා ගනිමු.
  6. චිත්‍ර ඇඳීමේ කොන්දේසි වලට අනුව ජයග්‍රාහකයින් කිහිප දෙනෙකු සිටී නම්, අපි පෙර මෙහෙයුම් ත්‍යාග ස්ථාන ගණනට සමාන ප්‍රමාණයකින් පුනරුච්චාරණය කරමු. මෙම අවස්ථාවෙහිදී, අපි දැනටමත් ජයග්‍රහණය කර ඇති ප්‍රවේශ පත්‍ර ලැයිස්තුවෙන් ඉවත් කරන සෑම අවස්ථාවකම සහ all_tickets 1 කින් අඩු කරන අතර S-කේතය වෙනුවට අපි පෙර ලැබුණු අංකය සඳහන් කරමු.

අපි නිශ්චිත සැබෑ උදාහරණයක් බලමු, තරඟාවලිය අංක 119:

මුළු ප්‍රවේශපත්‍ර 7 (සියලු ප්‍රවේශපත්‍ර)
ටිකට් මිල කාසි 50 (ඔට්ටු)
ක්‍රීඩා ගාස්තු 10% (ගාස්තු)

ලොතරැයියේ කොන්දේසි අනුව, 30% ත්‍යාග මුදලට යයි, i.e. මෙම අවස්ථාවේදී, ප්‍රවේශපත්‍ර 2කට ත්‍යාගයක් ලැබිය යුතු අතර, එහි ප්‍රමාණය සූත්‍රයට අනුව ගණනය කෙරේ (Bet*all_tickets-Fee)/2.

1. ලැබුණු R-කේතය: RdbAiAhKhveAtR4eyTKq75noMxdcEoxbE6BvojJjM13VE

2. තරඟාවලිය අවසන් වූ පසු, අපට යුගල ආකාරයෙන් ටිකට් ලැයිස්තුවක් ඇත: අංකය + ලිපිනය (තරඟාවලියට සහභාගී වීම සඳහා ගෙවීම් කරන ලද මුදල් පසුම්බියේ ලිපිනය). ලිපිනයන් පුනරාවර්තනය විය හැකි බව කරුණාවෙන් සලකන්න, මෙයින් අදහස් කරන්නේ එක් සහභාගිවන්නෙකු එක් තරඟාවලියක් සඳහා ටිකට්පත් කිහිපයක් මිලදී ගත් බවයි; මෙය නීති මගින් තහනම් නොවේ.

යවන ලද ගනුදෙනු දිනය: 82JTMzhHM5xEA2fQ9Qscd5QAJU3DAd8nShLjdVHTer5S

3. ඉල්ලූ S-කේතය: FTF3uRyaa4F2uAyD6z5a3CNbTXbQLc7fSR6CFNVjgZYV අදහස් දැක්වීම සමඟ (R-code + TXID):
RdbAiAhKhveAtR4eyTKq75noMxdcEoxbE6BvojJjM13VE 82JTMzhHM5xEA2fQ9Qscd5QAJU3DAd8nShLjdVHTer5S

4. ලැබුණු S-කේතය: 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

අදහස් එක් කරන්න