fairnessprovably fairdice
بله، میتواند. تاسهای آنلاین روی سروری ریخته میشوند که تو نمیبینی، و هیچچیز بهطور فیزیکی مانع نمیشود که گرداننده عددی را پیش از رسیدن به صفحه تو عوض کند. نتیجهها بهتنهایی هرگز آن را در هیچ جهتی ثابت نخواهند کرد؛ پس پرسش صادقانه این نیست که آیا دستکاری ممکن است، این است که آیا یک بازی میتواند ثابت کند دستکاری رخ نداده است.
ما یک بازی تختهنرد میسازیم، پس اینجا بیطرف نیستیم. دقیقا به همین دلیل میخواهیم درست به این پرسش پاسخ بدهیم، حتی بخشهای ناخوشایندش.
چرا در هر سایتی تاسها دستکاریشده به نظر میرسند؟
چون نوسان تختهنرد بیرحم است و حافظه انسان سوگیری دارد. دو تاس به سیوشش حالت میتوانند بیفتند؛ رگهها خطا نیستند، تضمیناند، و همین امشب جایی یک سرور درستکار چهار جفت پشتسرهم برای کسی خواهد ریخت که هر مهره را درست بازی کرده است. تو آن ۵-۵ را که مهره بازت را زد به یاد میآوری. آن پرتاب معجزهآسا را که سهشنبه گذشته نجاتت داد به یاد نمیآوری. باختها میمانند، نجاتها دود میشوند، و بعد از سه بازی بد پیاپی تاسها شخصی میشوند. روی تخته واقعی در قهوهخانه واقعی هم شخصی میشوند. از کسی بپرس که چهل سال است مهره چوبی جابهجا میکند.
و تله همینجاست. یک بازی دستکاریشده دقیقا همین حس را میداد. رگهها در هیچ جهتی چیزی ثابت نمیکنند؛ اگر مدرکت حسِ تاسهاست، نمیتوانی سرور درستکار را از نادرست تشخیص بدهی. ما هم نمیتوانیم. این دفاع از تاس آنلاین نیست. این مشکل خود آن است.
آیا یک سایت واقعا میتواند تاسهایش را دستکاری کند؟
از نظر فنی بله، و حتی سخت هم نبود. سرور پیش از ریختن، کل صفحه را میبیند. گردانندهای که بخواهد تقلب کند میتوانست:
- چند پرتاب از هر صد را در لحظههایی که بیشترین اهمیت را دارند کج کند: پرتابی که میزند، ورودی که ناکام میماند، جفتی که بازی باخته را برمیگرداند.
- بازیها را بهطور مصنوعی نزدیک نگه دارد تا نشستها طولانیتر شوند و باختها شبیه شکستهای نزدیک به نظر برسند.
- در بازیای که گرداننده در آن نفعی دارد، بیسروصدا یک طرف را جلو بیندازد.
- این کار را آنقدر بهندرت انجام دهد که تاسها همچنان از هر آزمون آماریای که بازیکن بتواند اجرا کند سربلند بیرون بیایند.
ما ادعا نمیکنیم سایت خاصی این کار را میکند. میگوییم معماری چنین اجازهای میدهد. سرور بسته اتاقی قفلشده است: گرداننده در خفا میریزد، عددی اعلام میکند و از تو میخواهد آن را با اعتماد بپذیری. از بیرونِ در، گرداننده درستکار و نادرست یکسان دیده میشوند.
مگر RNG گواهیشده ثابت نمیکند تاسها عادلانهاند؟
بخوان که گواهی واقعا چه چیزی را پوشش میدهد. آزمایشگاه یک مولد را آزمایش میکند: الگوریتمی روی میز آزمون که میلیونها عدد تولید میکند و از بررسیهای آماری میگذرد. این، قطعه را گواهی میکند. درباره تحویل هیچ نمیگوید؛ یعنی اینکه آیا عددی که به صفحه تو رسید از همان مولد، در همان لحظه، و بدون دستخوردن در مسیر آمده است یا نه. ترازوی گواهیشده در انبار ثابت نمیکند نان تو با آن وزن شده است.
گواهی همچنین یک عکس لحظهای است. سرورهای زنده مدام دوباره مستقر میشوند و مسیر کد میان مولد و بازی تو تا مدتها پس از رفتن آزمایشگاه تغییر میکند. پس RNG گواهیشده به پرسشی پاسخ میدهد که هیچکس واقعا نپرسیده بود. پرسش مهم این نیست که آیا جایی در ساختمان تاس خوب وجود دارد. این است که آیا بازی تو آن را گرفت؛ در هر پرتاب، همین امشب.
تعهد و افشا واقعا چه چیزی را عوض میکند؟
عدالت را از وعده به برهان تبدیل میکند. پیش از شروع بازی، سرور یک بذر محرمانه میکشد و اثر انگشت آن را منتشر میکند: هش SHA-256 که به آن تعهد میگویند. سپس هر پرتاب بازی از همان بذر مشتق میشود؛ یک محاسبه HMAC-SHA256 برای هر پرتاب، به ترتیب. وقتی بازی تمام شد، سرور بذر را فاش میکند.
حالا هرکسی میتواند دو چیز را بررسی کند. بذر فاششده را هش کن: باید با تعهدی که پیش از اولین حرکت منتشر شد یکی باشد. پرتابها را دوباره محاسبه کن: باید با هر عددی که روی صفحه آمد یکی باشند. اگر سرور حتی یک تاس را پس از دیدن وضعیت تو تغییر داده بود، محاسبه جور درنمیآمد. دستکاری از یک سوءظن آزمونناپذیر به دروغی تبدیل میشود که میشود مچش را گرفت.
تاسهایی که پیش از بازی مهر و موم شدهاند نمیتوانند به بازی واکنش نشان دهند.
قلب ماجرا همین است. دستکاریِ بهدردبخور واکنشی است: مهره باز را ببین، پرتاب زننده را بریز. تعهد و افشا چشمهای سرور را میگیرد، چون کل دنباله پیش از حرکت آغازین قطعی شده و هر دستکاری پس از تعهد از نظر ریاضی آشکارشدنی است. کاری که نمیکند مهربانکردن تاسهاست. دنباله صادق بود، نه بخشنده. باز هم در بدترین لحظه روی بار خواهی نشست، فقط حالا میتوانی ثابت کنی عادلانه بود.
در عمل چگونه یک بازی را راستیآزمایی کنیم؟
در اوریون اینطور ساختیمش. هر بازی روی سرورهای ما تعهدی دارد که پیش از اولین پرتاب ساخته شده، سرور هر حرکت زنده را در مبدا اعتبارسنجی میکند، و بررسی یک بازی تمامشده حدود یک دقیقه طول میکشد:
بررسیگر را باز کن. با هر مرورگری به orion.arthea.ai/verify برو. نه چیزی برای نصب هست، نه حسابی برای ساختن.
شناسه بازی را وارد کن. هر بازی سروری در اوریون یکی دارد. همان را بچسبان.
بگذار مرورگرت حساب کند. صفحه، تعهد و همه پرتابها را با Web Crypto دوباره محاسبه میکند؛ محلی، در مرورگر خودت. حرف ما بخشی از این بررسی نیست. اگر حتی یک عدد عوض شده بود، بازمحاسبه میگفت.
بررسیگر از همین امروز زنده است. خود بازی تمام شده است. دروازه orion.arthea.ai/go پیوندهای App Store و Google Play را در خود دارد و همیشه نشان میدهد هماکنون چه چیزی در دسترس است. در هر صورت، پاسخ صادقانه سر جای خود است. بله، تختهنرد آنلاین میتواند دستکاری شده باشد. چاره، وعده قشنگتر نیست. تاسهایی است که حسابشان را نشان میدهند.