provably fairdiceguide
מאמתים קוביות שש בש בעזרת הבטחה שניתנת לפני המשחק ונבדקת אחריו. אוריון מפרסם התחייבות SHA-256 על זרע סודי לפני ההטלה הראשונה שלכם, חושף את הזרע כשהמשחק מסתיים, ומאפשר לדפדפן שלכם לחשב מחדש כל הטלה ב-orion.arthea.ai/verify עם מזהה המשחק בלבד. אם הכול תואם, הקוביות נקבעו לפני שהמשחק התחיל ואיש לא כיוון אותן, אנחנו כולל.
כל שחקן אונליין מכיר את התחושה. אתם רוקדים על הבר שלושה תורות. היריב מוצא את המספר היחיד שגם פוגע וגם מכסה. על לוח עץ הייתם מושכים בכתפיים, כי ראיתם את הקוביות יוצאות מהכוס. באונליין מבקשים מכם לתת אמון במספר שמעולם לא ראיתם נוצר. לא רצינו לבקש את האמון הזה. רצינו להפוך אותו לניתן לבדיקה.
מה בעצם אומרות התחייבות וחשיפה?
דמיינו מעטפה חתומה. לפני שאתם מתיישבים, הבית כותב בתוכה את כל קוביות הערב, חותם אותה, ומוסר לכם צילום של החותם. בסוף המשחק המעטפה נפתחת. אם התוכן תואם לחותם, ההטלות היו קיימות עוד לפני המשחק, ושום דבר לא יכול היה להיבחר באמצע הדרך כדי לפגוע בכם. התחייבות וחשיפה הן המעטפה הזאת, בנויה מאריתמטיקה. החותם הוא גיבוב SHA-256, ואיש אינו יכול לייצר זרע אחר שיתאים לו. ארבעה שלבים מוליכים את ההוכחה מהשרת שלנו אל הדפדפן שלכם.
לפני המשחק. השרת מגריל זרע אקראי סודי ומגבב אותו ב-SHA-256. הגיבוב הזה הוא ההתחייבות, והוא מוצמד למשחק שלכם לפני ההטלה הראשונה. מאותו רגע כל קוביות המשחק כבר נקבעו. השרת פרסם הבטחה שהוא כבר לא יכול לערוך.
במהלך המשחק. כל הטלה נגזרת מהזרע באמצעות HMAC-SHA256: הזרע ומספר ההטלה נכנסים, שתי קוביות יוצאות. העמדה, התוצאה, קוביית ההכפלה, מי עומד לנצח: שום דבר מזה לא נכנס לחישוב. השרת אינו בוחר הטלות. הוא קורא רשימה שהתחייב לה לפני שהתחלתם לשחק.
כשהמשחק מסתיים. הזרע נחשף ונשמר יחד עם רישום המשחק. זו פתיחת המעטפה. כל אחד יכול לגבב את הזרע שנחשף ולהשוות אותו להתחייבות שפורסמה לפני המהלך הראשון, ושניהם חייבים להיות זהים.
אמתו בעצמכם. פתחו את orion.arthea.ai/verify בכל דפדפן והזינו את מזהה המשחק. העמוד מחשב הכול מחדש מקומית עם Web Crypto, ההצפנה המובנית בדפדפן עצמו: תחילה ה-SHA-256 של הזרע שנחשף מול ההתחייבות המקורית, ואחר כך כל הטלה במשחק, קובייה אחר קובייה. בלי חשבון, בלי אפליקציה, בערך דקה.
התאמה מלאה מבססת שלוש עובדות בבת אחת:
- הזרע שנחשף מפיק בדיוק את ההתחייבות שפורסמה לפני ההטלה הראשונה
- כל הטלה במשחק נגזרת מאותו זרע ב-HMAC-SHA256, כך ששום דבר לא הוטל מחדש ולא הוחלף
- הקוביות מעולם לא הותאמו לעמדה, לתוצאה או לשחקן
מה הייתה מוכיחה אי התאמה?
אי התאמה לא הייתה תקלת תצוגה. היא הייתה ראיה. אם הזרע שנחשף אינו מפיק את ההתחייבות, הקוביות שונו אחרי שהמשחק התחיל. אם הטלה אחת נכשלת בבדיקת ה-HMAC שלה, הקוביות שראיתם אינן הקוביות שהתחייבו אליהן. כל אחת מהכשלים האלה היא הוכחת זיוף שכל אדם יכול לשחזר מאותו רישום, על כל מכונה, לתמיד.
וזו בדיוק הסיבה שלעולם לא אמורים לראות אחת כזאת. ההתחייבות מתפרסמת ראשונה, לפני שאבן אחת זזה. בית שירצה לזייף את המשחק הזה יצטרך לפרסם מראש את ההוכחה לזיוף שלו עצמו, ואז למסור לכל שחקן את הכלים למצוא אותה. איננו מבקשים מכם להאמין שאנחנו ישרים. בנינו את המערכת כך שלא תצטרכו.
איש אינו יכול לכוון הטלה שנחתמה לפני שהמשחק התחיל.
אם הקוביות הוגנות בהוכחה, למה אני עדיין מקבל הטלות גרועות?
כי קוביות הוגנות הן עדיין קוביות. תיסגרו על הבר. תזדקקו לכל דבר חוץ מ-2-1 ותקבלו 2-1. על פני אלפי משחקים המספרים מתיישרים אל ההתפלגות האמיתית, אבל ערב אחד לא מבטיח דבר. מה שהאימות מסיר הוא השאלה שמתחת לעצבים. ההטלה הניסית ההיא נקבעה לפני שמישהו מכם נגע באבן, והיא לא כוונה אליכם. הידיעה הזאת לא תרכך את ההטלה. היא כן מאפשרת לכם להפסיק לבקר את היקום ולחזור לשחק את העמדה.
הקוביות הן החשד הרועש ביותר, אבל לא היחיד. אותו שרת שמתחייב להטלות שלכם גם מאמת כל מהלך חי במקור, כך ששרת לקוח ששונה אינו יכול להחליק אבן למקום שהחוקים אינם מתירים. הטלות הוגנות ומהלכים חוקיים מגיעים מאותה סמכות.
אפשר לנסות את המאמת לפני שהמשחק יוצא?
כן. המאמת חי היום ב-orion.arthea.ai/verify, והוא כולל שחזור הדגמה, כך שתוכלו לצפות באימות מלא שרץ על משחק לדוגמה, מההתחייבות לזרע ולכל הטלה, עוד לפני שיש לכם משחק משלכם. לגבי אוריון עצמו, הדלת ב-orion.arthea.ai/go נושאת את הקישורים ל-App Store ול-Google Play ותמיד מראה מה זמין ברגע זה.
קוביות הוגנות הן הרצפה שעליה עומד כל המסע. שנים עשר יעדים, עשר ליגות, וכלל אחד מתחת לכול: כשמשחק מסתיים, לעולם אינכם צריכים להאמין לנו במילה.