على هذه الصفحة
الروليت (النسخة المشفرة)
على هذه الصفحة
مقدمة
تتناول هذه الصفحة النسخة المشفرة من الروليت، والتي تُلعب عادةً في الكازينوهات التي تعتمد على العملات المشفرة. أفترض أن القارئ مُلِمٌّ بالقواعد الأساسية للروليت التقليدية.
كازينوهات عادلة بشكل واضح
تحليل
في لعبة Crypto.Games، تُلعب الروليت على عجلة ذات صفر واحد، كما هو الحال عادةً في الكازينوهات الإلكترونية. هامش الكازينو هو ١/٣٧ = ٢.٧٠٪ على كل رهان.اللعب العادل
يفترض الشرح التالي لكيفية استخدام التشفير أن يكون القارئ على دراية بالمصطلحات والمفاهيم. للاطلاع على الأساسيات، يُرجى زيارة صفحتي على موقع "النرد" (النسخة المشفرة) . إليك كيفية إنتاج لعبة الروليت في Crypto.Games رقمًا عشوائيًا من 0 إلى 37، والذي يُستخدم كنتيجة للعبة.
- كما ينبغي أن يكون الحال دائمًا، تكشف اللعبة عن Hash الخاص ببذرة الخادم للرهان التالي وتسمح للاعب باختيار بذرة العميل الخاصة به.
- يقوم اللاعب بالمراهنة، كما هو الحال في لعبة الروليت التقليدية.
- ستقوم اللعبة بدمج بذور الخادم والعميل، بهذا الترتيب.
- ستأخذ اللعبة تجزئة SHA-512 للبذرة المجمعة من الخطوة 3.
- ستقوم اللعبة بتحويل حرفين من الهاش، بدءًا من اليسار، من الخطوة 4 من النظام السداسي عشري إلى النظام العشري.
- خذ الطرفية رقمين من العدد العشري من الخطوة 5.
- إذا كانت النتيجة من الخطوة 6 هي من 0 إلى 36، فاستخدمها كنتيجة للروليت.
- إذا كانت النتيجة من الخطوة 6 هي 37 أو أكبر، فقم بالتقدم موضعين في Hash ثم ارجع إلى الخطوة 5.
مثال
أولاً، أذهب إلى شاشة "اللعب العادل" أعلاه. ثم أدخل أي بذرة عميل ترغب بها، وستجد مجموعة عشوائية من الشخصيات كافية. بعد ذلك، انسخ ولصق شيئين إلى مصدر آخر:
- بذرة عميلك
- بذرة الخادم التالية، والتي يتم تسميتها بـ "بذرة الخادم التالية SHA256".
الأمر متروك لك لإضافة رمز Nonce، وهو عبارة عن رموز آلية إضافية تُضاف إلى نهاية بذرة العميل. أعتقد أنه لو كان الكازينو ينوي الغش، فإن إضافة رمز Nonce لن توفر أي حماية.
في مثالنا، هذا هو الدليل الذي يجب عليك الحفاظ عليه.
تجزئة بذرة الخادم التالية = e7043dd7fe369b94518449d61162a0c960f54781a16548af63194b7fd9d6891a بذرة العميل = b0x6vb0v6TYUIQWF6b0sd6f0y
بعد ذلك، راهنتُ، كما هو موضح أعلاه. هنا، راهنتُ بعشرة فيشات، قيمة كل منها 0.000001 بيتكوين (بيتكوين)، ليصبح إجمالي الرهان 0.00001 بيتكوين (ما يعادل حوالي 10 سنتات) على اللون الأحمر.
النتيجة هي 7 أحمر، لذلك أنا الفائز.
بعد ذلك، أتبع الخطوات التالية للتحقق من النتيجة. في الواقع، كنتُ سأُبالغ في هذا الأمر فقط عند الخسارة. لو أراد الكازينو الغش، لخسرتُ على الأرجح.
- أقوم بالانضمام إلى بذرة الخادم وبذرة العميل، بهذا الترتيب: sMDGT5P10m071HAdTQkoYCLJ8vLXnwzq6ugfloMTb0x6vb0v6TYUIQWF6b0sd6f0y
- أقوم بأخذ Hash SHA-512 من البذرة المجمعة من الخطوة 1:
40cf0126a307d4d72900279d330499f6a5447c35ed838d6ec3fd2b53872df73c cac001686ddf05e024c5899205afa9d0551b5e19b8397af180f6de06aea429ac
- سآخذ أول حرفين، وهما 40.
- أقوم بتحويل الرقم 40 من النظام السداسي عشر إلى النظام العشري: 4*16 + 0*1 = 64.
- يوجد رقمان في الناتج العشري من الخطوة الرابعة، لذا تركته كما هو. وإلا، لكنتُ استخدمتُ الرقمين النهائيين.
- 64 أكبر من 36، لذا لن يكون نتيجة للروليت.
- أقوم بتقديم شخصيتين في Hash، والتي هي cf.
- أقوم بتحويل cf إلى عدد عشري: c*16 + f = 12*16 + 15*1 = 207.
- نظرًا لأن 207 يحتوي على أكثر من رقمين، فسأختار الرقمين الصحيحين، وهما 07.
- نظرًا لأن 7 <=36، تصبح هذه هي نتيجة اللعبة.
- بعد ذلك، أقوم بالتحقق من أن Server Seed Hash الذي تم إعطاؤه لي قبل الرهان (الذي يبدأ بـ e7043) يتطابق مع Server Seed للرهان الأخير.لسبب ما، اختار هذا الكازينو أن يقوم بتجزئة ذلك باستخدام وظيفة SHA-256، على عكس SHA-512، التي تستخدم لتجزئة السلسلة المجمعة.
- في هذه الحالة، فإن Hash الخاص بـ sMDGT5P10m071HAdTQkoYCLJ8vLXnwzq6ugfloMT يقوم بالفعل بـ Hash إلى e7043dd7fe369b94518449d61162a0c960f54781a16548af63194b7fd9d6891a، مما يضمن لي أن مساهمة الكازينو في الرهان الأخير كانت محددة مسبقًا.
إذا بدا لك كل هذا معقدًا، فقد صممتُ برنامجًا يُسهّل عليك الأمر. لاستخدامه، اتبع الخطوات التالية:
- انتقل إلى PHP Sandbox .
- أدخل بذرة العميل على السطر رقم 4.
- أدخل بذرة الخادم على السطر رقم 5.
- أدخل Hash الخاص ببذرة الخادم التالية على السطر 6.
- انقر فوق "تنفيذ الكود".
- تحقق من نتيجة اللعبة، وتأكد من تطابق قيمة تجزئة بذرة الخادم مع القيمة المُقدمة قبل الرهان. إذا لم تكن كذلك، فهذا يعني أنك تعرضت للغش.
لدي أيضًا نسخة من الكود يمكنك رؤيتها بالنقر فوق الزر أدناه.
[كابح]
// تحويل لعبة الروليت لـ Crypto.Games
// أدخل بذرة العميل على السطر 4 وبذرة الخادم على السطر 5.
$client_seed = "b0x6vb0v6TYUIQWF6b0sd6f0y";
$server_seed = "sMDGT5P10m071HAdTQkoYCLJ8vLXnwzq6ugfloMT";
$next_hash = "e7043dd7fe369b94518449d61162a0c960f54781a16548af63194b7fd9d6891a";
$color_array = مصفوفة(0,1,2,1,2,1,2,1,2,1,2,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1);
الموضع=0؛
$combined_seed = $server_seed.$client_seed؛
صدى "البذرة المدمجة = $combined_seed\n";
$combined_hash = hash('sha512', $combined_seed);
$server_hash = hash('sha256',$server_seed);
صدى "تجزئة البذرة المجمعة = $combined_hash\n";
يفعل
{
$first_two=substr($combined_hash,$position,2);
$hex_to_dec=hexdec($first_two);
$hex_to_dec%=100؛
إذا ($hex_to_dec-->36)
{
الموضع+=2؛
}
}
بينما ($hex_to_dec>36)؛
صدى "تجزئة بذرة الخادم =\t $server_hash\n";
صدى "نتيجة اللعبة = _t$hex_to_dec "؛
إذا ($color_array[$hex_to_dec]==0)
{ صدى "أخضر\n"; }
وإلا إذا ($color_array[$hex_to_dec]==1)
{ صدى "أحمر\n"; }
آخر
{ صدى "أسود\n"; }
$server_seed_hash=hash('sha256', $server_seed);
إذا ($server_seed_hash==$next_hash)
{ صدى "مطابقة بذرة الخادم.\n"; }
آخر
{
صدى "عدم تطابق بذور الخادم!\n"؛
صدى "بذرة الخادم =\t$server_seed\n";
صدى "خادم بذرة التجزئة =\t$server_seed_hash\n";
صدى "المزعوم التالي Hash=\t$next_hash\n";
}
// إجراء
// 1. اضبط الموضع على 0.
// 2. قم بربط بذور الخادم والعميل وبذرة الخادم، بهذا الترتيب.
// 3. قم بإنشاء تجزئة SHA-512 للسلسلة من الخطوة 2.
// 4. قم بتحويل أول حرفين، بدءًا من "موضع" التجزئة من الخطوة 3 من النظام السداسي عشري إلى النظام العشري.
// 5. إذا كانت القيمة من الخطوة 4 إلى 0 إلى 36، فستكون هذه هي نتيجة اللعبة.
// 6. وإلا، قم بتحريك الموضع بمقدار 2 وانتقل إلى الخطوة 4.
؟>
[/كابح]



