Як працює перевірка чесності
3 хв читання
Будь-який сайт із випадковим результатом просить йому довіряти. Provably fair (доказова чесність) — спосіб замінити більшу частину цієї довіри перевіркою, яку ви можете зробити самі. Тут ми пояснюємо ідею простими словами — знання криптографії не знадобляться.
1.Яку проблему це розвʼязує
Якщо результат просто генерується на сервері й показується вам, у вас немає способу дізнатися, чи був він справді випадковим, чи його обрали вже після того, як сервер побачив вашу ставку. Provably fair фіксує результат до гри — так, що сайт не може непомітно змінити його потім.
2.Три складники
- Сід сервера — довгий випадковий рядок, який створює DOTAGRADE. Поки ви з ним граєте, він зберігається в секреті.
- Сід клієнта — рядок, що належить вам. Ви його бачите й можете будь-коли замінити на будь-який інший.
- Номер гри — лічильник, який зростає на одиницю з кожним апгрейдом на поточній парі сідів.
Результат гри обчислюється з цих трьох значень: HMAC-SHA256, де ключ — сід сервера, а повідомлення — «сід клієнта:номер гри». Перші 8 шістнадцяткових символів результату перетворюються на число від 0 до 100 — це число, що випало. Апгрейд виграє, якщо воно менше за ваш шанс.
3.Чому сайт не може змінити результат
Перед грою вам показують хеш сіда сервера — його відбиток SHA-256. Хеш працює в один бік: із сіда він обчислюється легко, але отримати сід назад із хешу чи підібрати інший сід із тим самим хешем на практиці неможливо.
Тому хеш — це зобовʼязання. Щойно ви його побачили, сід сервера зафіксовано. Якби сайт потім підмінив сід на зручніший, новий сід не збігся б із показаним хешем — і це помітив би будь-хто.
Сід клієнта закриває другий бік. Оскільки його обираєте ви, сервер не може заздалегідь підготувати сід, який дасть вам програшні числа: він не знає, з чим цей сід буде поєднано. А номер гри робить кожне число, що випало, новим — навіть на тій самій парі сідів.
4.Чому сід сервера певний час прихований
Якби ви знали сід сервера під час гри, ви могли б заздалегідь обчислити всі наступні числа й грати лише виграшні ігри. Тому сід розкривається, коли ви змінюєте пару сідів. У цей момент старий сід сервера показується повністю, створюється новий, і його хеш ви бачите до наступної гри.
5.Як перевірити гру самостійно
- Відкрийте Профіль → «Історія ігор» і знайдіть потрібний апгрейд.
- Натисніть на значок щита на його картці. Відкриється сторінка перевірки чесності, де вже заповнені сід клієнта, номер гри, шанс і хеш сіда сервера.
- Якщо гру зіграно на поточній парі, її сід сервера ще прихований. У блоці «Ваші сіди» на тій самій сторінці змініть сіди — старий сід сервера розкриється.
- Перевірте гру ще раз. Сторінка обчислить хеш сіда сервера й порівняє його з тим, що вам показували, потім перерахує число, що випало, і покаже, був це виграш чи програш.
Перевірка йде у вашому браузері, а не на нашому сервері. Якщо не хочете покладатися навіть на нашу сторінку, формула відкрита: будь-який калькулятор HMAC-SHA256 і SHA-256 дасть той самий результат.
6.Що це доводить, а що ні
Provably fair доводить, що результат було зафіксовано до гри і він не змінювався після. На ймовірність це не впливає: шанс 30% так само програє приблизно сім разів із десяти, і жоден сід не робить виграш імовірнішим. Про сам шанс і закладену в нього перевагу сайту ми відкрито розповідаємо в статті про RTP.
