Политика Provably Fair
Provably Fair: Гарантия прозрачности Spin
В Spin ваше доверие — это главное. Мы используем систему Provably Fair, чтобы математически доказать, что каждый результат в наших лутбоксах и играх подлинно случайный и не может быть изменен никем, включая нас.
Вот полное описание того, как это работает, чтобы вы могли проверить результаты своей игры.
Основа честности: Seed Pair и Nonce
Каждый раунд (например, открытие бокса) работает на уникальной комбинации:
1.Server Seed
Случайное значение, генерируемое Spin.
2.Client Seed
Значение, генерируемое вашим браузером (вы можете изменить его в любое время).
3.Nonce
Счетчик, который начинается с 0 и увеличивается с каждым раундом игры.
Эти три значения создают комбинированный сид, который используется для генерации результата. Это гарантирует уникальный исход каждого раунда.
Как генерируется результат
Система следует точному процессу:
1. Генерация Server Seed
Spin генерирует секретную строку Server Seed. Перед игрой мы показываем ее SHA-256 хеш — это доказывает, что мы не можем изменить его позже.
2. Создание Client Seed
Ваш браузер генерирует Client Seed. Вы можете обновить его в любое время, контролируя входные данные генерации.
3. Счетчик Nonce
Для каждого раунда Nonce увеличивается на один. Это гарантирует уникальность результата даже с теми же сидами.
Технические детали: От Сида к Результату
Как мы превращаем данные в результат:
1. Комбинация Сидов и Nonce
Server Seed, Client Seed и Nonce объединяются в одну строку.
const combinedSeed = `${clientSeed}:${serverSeed}:${nonce}`;2. Хеширование
Мы применяем алгоритм SHA-512 к строке, создавая длинный хеш. Этот хеш определяет результат.
const hash = sha512(combinedSeed);3. Получение номера билета
Из хеша мы получаем номер билета от 0 до 99,999,999.
Каждый предмет в боксе привязан к диапазону номеров. Если ваш билет попадает в диапазон, вы получаете предмет.
private getTicketNumber(hash: max = 1e8) {
// Take the first 8 characters of the hash
const subHash = hash.slice(0,8);
// Parse the hex substring to a number
const valueFromHash = parseInt(subHash, 16);
// Calculate a value between 0 and 1 by dividing by 2^32
const e = Math.pow(2,32);
const normalizedValue = valueFromHash / e;
// Using Math.floor ensures we get integers from 0 to max-1
return Math.floor(normalizedValue * max);
}Пример раунда
1. Вы открываете лутбокс.
2. Система берет:
- Скрытый Server Seed
- Ваш Client Seed
- Текущий Nonce
3. Комбинирует и хеширует.
4. Генерирует номер билета.
5. Номер определяет приз.
6. После смены сида он раскрывается для проверки.
Проверьте сами
Мы верим в радикальную прозрачность. Вы можете проверить любой прошлый результат.
Используйте инструмент проверки CodePen, введя:
1. Server Seed (раскрытый)
2. Hashed Server Seed (видимый до игры)
3. Ваш Client Seed
4. Nonce раунда
Вы можете воспроизвести номер билета и убедиться, что он совпадает.
Почему это честно?
1. Мы фиксируем Server Seed заранее (через хеш).
2. Вы контролируете Client Seed.
3. Nonce гарантирует уникальность.
4. SHA-512 делает предсказание невозможным.
5. Вы можете проверить любой раунд.
Система делает манипуляции невозможными. То, что вы видите — это проверяемая случайность.