News

Як перевірити, що твої кубики були чесними

Кожна партія Orion фіксує кубики через SHA-256 до першого кидка. Встав ідентифікатор партії на orion.arthea.ai/verify, і браузер усе перерахує.

provably fairdiceguide

Кубики в нардах перевіряють обіцянкою, даною до партії та перевіреною після неї. Orion публікує зобов'язання SHA-256 на таємне зерно до твого першого кидка, розкриває зерно, коли партія завершується, і дозволяє браузеру перерахувати кожен кидок на orion.arthea.ai/verify самим лише ідентифікатором партії. Якщо все збігається, кубики були зафіксовані до початку гри і ніхто, включно з нами, ними не керував.

Кожен онлайн-гравець знає це відчуття. Ти три ходи танцюєш на барі. Суперник знаходить єдине число, що влучає і прикриває. За дерев'яною дошкою ти б знизав плечима, бо бачив, як кубики вийшли зі склянки. Онлайн тебе просять повірити числу, народження якого ти не бачив. Ми не хотіли просити такої довіри. Ми хотіли зробити її перевірною.

Що насправді означає commit-reveal?

Уяви запечатаний конверт. Перш ніж ти сядеш, дім записує всередину всі кубики вечора, запечатує його й віддає тобі фотографію печатки. Коли гра завершується, конверт відкривають. Якщо вміст збігається з печаткою, значить кидки існували раніше за саму партію і ніщо не можна було обрати посеред гри тобі на шкоду. Commit-reveal і є той конверт, збудований з арифметики. Печатка це хеш 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 та завжди показують те, що доступне просто зараз.