News

چرا یک سرور بازی عادلانه به هیچ‌کس اعتماد نمی‌کند، حتی به ما

معنای سرورِ مرجع: سرور تخته را نگه می‌دارد، هر حرکت را در مبدا اعتبارسنجی می‌کند، و تاس‌های تعهد و افشا حتی خود خانه را درستکار نگه می‌دارند.

fair playengineeringprovably fair

سرورِ مرجع یعنی سرور تنها نسخه‌ای از بازی را نگه می‌دارد که به حساب می‌آید. دستگاه تو حرکتی را که می‌خواهی بازی کنی می‌فرستد، سرور آن را با تاس‌های خودش و قواعد خودش می‌سنجد، و تنها آن‌گاه تخته تغییر می‌کند. یک اپ دستکاری‌شده می‌تواند هر ادعایی بکند: حقیقت جایی زندگی می‌کند که دست او به آن نمی‌رسد.

تخته‌نرد سزاوار این انضباط است. بازی تاس است با نردبان و با پات؛ یعنی دو راه برای تقلب وجود دارد: جعل حرکت‌ها، یا خم‌کردن پرتاب‌ها. سرور عادلانه باید هر دو در را ببندد. در دوم شامل خود ما هم می‌شود، و به آن می‌رسیم.

سرورِ مرجع دقیقا یعنی چه؟

هر مسابقه زنده اوریون دقیقا در یک جا وجود دارد: روی سرور ما. تخته روی گوشی تو یک پنجره است، نه خود بازی. وقتی مهره‌ای را می‌کشی، اپ آن را حرکت نمی‌دهد. پیام کوچکی می‌فرستد که می‌گوید: این چیزی است که می‌خواهم بازی کنم. سرور این قصد را روی تخته خودش، با موتور قواعد خودش و با تاس‌هایی که برای آن نوبت ریخته، دوباره اجرا می‌کند. حرکت‌های قانونی بازی را جلو می‌برند و هر دو بازیکن همان وضعیت تازه را می‌گیرند. حرکت‌های غیرقانونی اصلا رخ نداده‌اند.

این یک سرور است برای همه. اپ iOS با SwiftUI بومی است، اپ اندروید با Jetpack Compose بومی، و هر دو پنجره‌هایی به یک بک‌اند و یک استخر بازیکن‌اند. شیشه متفاوت، حقیقت یکی.

چرا در بازی‌هایی که به کلاینت اعتماد می‌کنند تقلب می‌شود؟

چون دستگاه حریفت مال حریفت است. هر چیزی که رویش اجرا می‌شود قابل تغییر است. یک کلاینت وصله‌خورده می‌تواند حرکت‌هایی بفرستد که هرگز قانونی نبوده‌اند. یک ویرایشگر حافظه می‌تواند عددی را سر جایش بازنویسی کند و صفحه، دروغ را وفادارانه نشان می‌دهد. هیچ‌کدام از این‌ها عجیب نیست. ابزارها رایگان‌اند، مستندند، و از گوشی‌های هوشمند قدیمی‌ترند.

بازی‌ای که به کلاینت اعتماد می‌کند از هر بازیکن می‌خواهد قول بدهد زیر کاپوت را نگاه نکند. بعضی‌ها نگاه می‌کنند. پس ما نظر کلاینت را بی‌اهمیت کردیم. در اوریون اپ دقیقا سه وظیفه دارد:

  • کشیدن: تخته، مهره‌ها، تاس دوبل، زمان‌سنج.
  • درخواست: از سرور بخواهد حرکتی را بازی کند، دوبل پیشنهاد دهد، یا تسلیم شود.
  • دریافت: وضعیتی را نشان دهد که سرور می‌گوید واقعی است.

تاس‌ریختن، داوری درباره قانونی‌بودن، و جابه‌جایی حتی یک مهره در این فهرست نیست. هیچ چیزی که نتیجه را تعیین کند روی یک دستگاه متولد نمی‌شود.

وقتی حرکتی بازی می‌کنم چه اتفاقی می‌افتد؟

تو بازی می‌کنی.. اپ تو قصد را می‌فرستد: این مهره، این خانه‌ها. هیچ چیز روی دستگاه تو تخته واقعی را تغییر نمی‌دهد.

سرور آن را دوباره اجرا می‌کند.. موتور قواعد ما حرکت را روی تخته سرور و تاس‌های سرور اجرا می‌کند. اگر قانونی باشد بازی جلو می‌رود. اگر نباشد، در مبدا رد می‌شود، هر اپی که فرستاده باشدش.

هر دو طرف یک حقیقت می‌گیرند.. وضعیت تازه به هر دو بازیکن می‌رود. اگر اتصالت قطع شود، مهلت اتصال دوباره در ساعت نوبت صندلی‌ات را نگه می‌دارد و به تخته برمی‌گردی، آن‌طور که واقعا هست، نه آن‌طور که گوشی‌ات آخرین بار به یاد داشت.

شرط‌ها هم از همین قاعده پیروی می‌کنند. وقتی مسابقه‌ای با ورودی شروع می‌شود، سرور هر دو ورودی را به امانت می‌گیرد. پات در یک دفتر واحد، روی سرور، زندگی می‌کند و در پایان بازی همان‌جا تسویه می‌شود. هرگز از هیچ کلاینتی پرسیده نمی‌شود چه فکر می‌کند برده است. سکه‌ها و جواهرها مجازی‌اند، بدون ارزش واقعی و بدون برداشت نقدی، و ما باز هم آن دفتر را چنان نگه می‌داریم که انگار چیز باارزشی در آن است، چون هست: اعتماد تو به امتیاز.

چه چیزی جلوی تقلب خود سرور را می‌گیرد؟

این پرسش درست است و بیشتر بازی‌ها امیدوارند هرگز نپرسی‌اش. سروری که پنهانی تاس می‌ریزد می‌تواند برای کسی که طرفدارش است مهربانانه بریزد و تو هرگز نبینی. هر پرتاب باورپذیر به نظر می‌رسد. کار تاس همین است.

پس این قدرت را از خودمان گرفتیم. پیش از آغاز بازی، سرور بذری محرمانه می‌سازد و تعهد SHA-256 روی آن منتشر می‌کند. سپس هر پرتاب از همان بذر با HMAC-SHA256، یکی‌یکی و به ترتیب، مشتق می‌شود. وقتی بازی تمام شد، سرور بذر را فاش می‌کند. هرکسی می‌تواند بررسی کند که بذر با تعهدی که پیش از اولین پرتاب داده شده می‌خواند و هر پرتاب بازی از آن برمی‌آید. به معنای رمزنگارانه، تاس‌های تو پیش از آنکه هیچ بازیکنی مهره‌ای لمس کند قطعی شده بودند. نمی‌توانستیم پرتاب دوازدهم را خم کنیم بی‌آنکه وعده‌ای را که در پرتاب صفر منتشر کردیم بشکنیم.

برای هیچ‌کدام از این‌ها لازم نیست حرف ما را باور کنی. بررسی‌گر روی orion.arthea.ai/verify کل زنجیره را در مرورگر تو، با Web Crypto، روی دستگاه خودت و از روی سابقه عمومی بازی دوباره حساب می‌کند. نه حسابی لازم است، نه اپی.

دو نیمه چگونه در هم قفل می‌شوند؟

مرجعیت سرور و تاس‌های تعهد و افشا دو نیمه یک طرح‌اند و هرکدام نقطه کور دیگری را می‌پوشاند. سروری که حرکت‌ها را اعتبارسنجی می‌کند اما پنهانی تاس می‌ریزد از تو می‌خواهد به خانه اعتماد کنی. تاس‌های متعهد روی سروری که به کلاینت اعتماد دارد از تو می‌خواهند به اپ هر غریبه‌ای اعتماد کنی. با هم، حلقه را می‌بندند. کلاینت نمی‌تواند حرکتی را جعل کند، چون سرور هر حرکت را در مبدا دوباره اجرا می‌کند. سرور نمی‌تواند پرتابی را دستکاری کند، چون هر پرتاب به تعهدی زنجیر شده که پیش از بازی منتشر شده است. هیچ‌کس سر میز، از جمله کسانی که آن را ساخته‌اند، قدرت بررسی‌نشده‌ای بر نتیجه ندارد.

کلاینت نمی‌تواند حرکت جعل کند. سرور نمی‌تواند پرتاب جعل کند. باقی همه تزئین است.

دروازه orion.arthea.ai/go پیوندهای App Store و Google Play را در خود دارد و همیشه نشان می‌دهد هم‌اکنون چه چیزی در دسترس است. بررسی‌گر عمدا اول آمد: برهانِ عدالت باید پیش از آنکه نخستین پاتِ واقعی بازی شود وجود داشته باشد.

نوشته‌ها به فارسی