Безопасность
Кто и что может менять в проекте, откуда берётся случайность и какие риски остаются. Верхняя таблица читается прямо из сети, а не рисуется вручную.
Что сейчас записано в сети
Читаем данные…
Открытый код, анонимность и приватность
Открытый код
Весь проект (контракт, сайт, скрипты запуска, тесты) открыт под лицензией MIT. Код можно прочитать. Сборка контракта командой anchor build пока не проверялась (см. «Статус»); после запуска можно будет собрать программу самому и сравнить её с той, что работает в сети. Как это проверить
Ссылка на репозиторий появится здесь и в подвале сайта сразу после публикации.
Проект анонимен
Имена и юридическое лицо не раскрываются, а игрокам не нужны ни имя, ни почта, ни телефон, ни паспорт. Достаточно кошелька. Правила записаны в контракте, их можно прочитать. Обратная сторона анонимности
Вывод без документов
Контракт сам переводит токены на ваш кошелёк по одной подписи. По коду контракта документов, анкет, проверки личности (KYC), заявок и ручного одобрения нет. Это свойство контракта, а не разрешение нарушать закон вашей страны: за его соблюдение отвечаете вы (условия). Как вывести
Прозрачный и анонимный сайт: без входа и учётных записей, без cookie, аналитики, счётчиков и рекламных скриптов. Шрифты и скрипты отдаются самим сайтом, настройки (тема, история прокрутов на этом устройстве) хранятся только в вашем браузере, а код сайта открыт, поэтому всё это можно проверить. Сверяйте адрес в строке браузера: если он отличается хоть на букву, это не официальный сайт.
Что знает сайт и кто видит ваши действия
| Что | Как устроено |
|---|---|
| Имя, почта, телефон, документы | Не требуются и нигде не запрашиваются: ни при регистрации, ни при выводе. |
| Cookie, аналитика, счётчики, реклама | Нет. В коде сайта их нет, внешних скриптов и шрифтов он тоже не подгружает. |
| Что хранится в вашем браузере | Тема, режим барабана, звук и эффекты (если включили), история прокрутов на этом устройстве, какой кошелёк вы подключали, адрес служебного аккаунта случайности. Всё остаётся на вашем устройстве и никуда не отправляется. |
| С кем сайт связывается | С узлом сети Solana (RPC): он читает данные игры и принимает ваши транзакции. На время прокрута ещё с оракулом Switchboard. Эти сервисы видят ваш IP-адрес и адрес кошелька, как видит любой узел сети. |
| Что публично в блокчейне | Ваш адрес, номер игрока, баланс, прокруты, выигрыши и выводы: их может посмотреть любой. Адрес остаётся псевдонимом, полной анонимности нет. Если адрес связан с вашей личностью (например, SOL пришёл с биржи, где вы проходили проверку), связь можно проследить. |
Анонимность проекта и игроков не абсолютна и имеет обратную сторону: у проекта нет юридического лица, к которому можно предъявить претензии. Это описано в «Рисках».
Ключи и что они могут
| Ключ | Что может | Чего не может |
|---|---|---|
| Право на обновление программы | Загрузить новую версию кода контракта. | Напрямую забрать токены нельзя, но новая версия кода в принципе могла бы это сделать. Поэтому по плану запуска ключ сначала передаётся мультисигу с задержкой, а затем отзывается; текущее состояние показано в этой таблице. |
| Выпуск токена (mint) | Ничего: по плану запуска отзывается сразу после выпуска. | Создать новые токены. |
| Заморозка (freeze) | Ничего: не выдавался. | Заморозить чьи-то токены. |
Администратор (dev_authority) | Забирать накопленные 10% прокрутов (claim_dev). | Менять правила, забирать балансы игроков, призы, джекпот, фонд активности. |
Продвижение (promo_authority) | Платить из фонда продвижения (promo_pay). | Всё остальное. |
1) на старте у деплоера; 2) перед запуском в основной сети передаётся мультисигу (Squads) с задержкой на любые обновления, чтобы игроки видели изменение заранее; 3) когда проект устоялся, право отзывается навсегда, код замораживается. Текущий шаг виден в таблице выше.
Откуда случайность
Контракт не придумывает случайное число сам и не берёт его у проекта. Используется Switchboard On-Demand: ставка фиксируется в одной транзакции (контракт запоминает номер блока), а число раскрывает оракул позже и привязывает к хешу блока, которого в момент ставки ещё не было. Пока оракул работает честно, подобрать или предсказать это значение заранее нельзя. Доверие к Switchboard остаётся: это внешняя зависимость.
Из одного 32-байтового значения контракт получает нужное количество чисел через sha256, и игрок на него повлиять не может. Контракт принимает только аккаунты случайности, которыми владеет программа Switchboard (без этой проверки любой мог бы подсунуть свой аккаунт с нужным значением).
Если оракул не работает, прокруты встают, а ставка прокрута, закрытого после 3 000 блоков, не возвращается.
Чего контракт не умеет вообще
Менять шансы
Все числа — константы кода. Новые числа возможны только новой версией программы, которую видно по транзакции обновления.
Забрать игровой баланс
Инструкций «забрать у игрока» нет. Баланс уходит только вам при выводе и в ставки при прокрутах.
Выпустить токены
По плану запуска право выпуска отзывается. После этого общий выпуск 100 млрд может только уменьшаться при сжигании.
Выплатить дважды
Прокрут закрывается один раз. Сохранность токенов (сумма пулов и балансов не больше, чем лежит в хранилище) проверяют автоматические тесты на сценариях со многими игроками и пачками по 1000 прокрутов.
Риски, которые остаются
- Ошибки в коде. Контракт покрыт тестами, но независимый аудит не проводился (см. «Статус проекта»). Незамеченная ошибка может привести к потере средств.
- Обновление программы. Пока право на обновление не отозвано, администратор (или мультисиг) теоретически может выпустить версию с другими правилами. Следите за таблицей выше.
- Оракул и сеть. Сбой Switchboard или перегрузка Solana задерживает прокруты; ставка при долгом сбое (больше ~20 минут) пропадает без возврата. Возврата нет намеренно: иначе можно было бы заглянуть в результат и отказаться от проигрыша.
- Токены администратора вне контракта. Маркетинг и резерв (вместе около 30% выпуска) не заблокированы в контракте, разработчик (10%) в вестинге внешнего сервиса. Вестинг: ссылка не указана; блокировка ликвидности: ссылка не указана; мультисиг администратора: ссылка не указана. Если ссылка не указана, считайте, что проверить это пока нельзя.
- Фонд продвижения. Ключ
promo_authorityможет отправить накопленное в фонде на любой адрес. Каждая выплата публична (событиеPromoPaid), но контракт не проверяет, на что потрачено. - Бесплатные прокруты и мультиаккаунты. Проверки «это человек» в игре нет и быть не может: один человек может зарегистрировать много кошельков и получать бесплатный прокрут с каждого. Расход ограничен размером фонда активности, но из него можно вытянуть заметную часть.
- Крупные копилки. Чем больше копилка джекпота относительно обычной, тем выше ожидаемый возврат на прокрут; при очень большой он может превысить 100%. Так устроены все прогрессивные джекпоты, опытные игроки приходят за большими копилками.
- Скорость сети. Все прокруты проходят через один общий аккаунт контракта, поэтому в пике очередь может расти. Это замедляет игру, но не меняет результатов.
- Сайт — не контракт. Адрес сайта может измениться или пропасть; контракт при этом остаётся в сети, и с ним можно работать напрямую через любой совместимый клиент.
- Анонимный администратор. Имя и юридическое лицо не раскрываются: если что-то пойдёт не так, предъявить претензию и вернуть деньги через суд или поддержку нельзя. Защищает только то, что записано в контракте и проверяется самостоятельно.
- Закон. Азартные игры во многих странах ограничены или запрещены. Это ваша ответственность.
- Это игра на удачу. В среднем игрок теряет часть ставок.
Как проверить самому
- Откройте адрес программы в обозревателе (Solscan, Solana Explorer) и найдите поле Upgrade Authority: если там пусто, код заморожен.
- Откройте токен: поля Mint Authority и Freeze Authority должны быть пустыми.
- Откройте аккаунт config программы и сверьте с «Экономикой» суммы копилок, число прокрутов и сожжённое.
- Соберите контракт из открытого кода (
anchor build --verifiable) и сравните хеш с тем, что в сети (solana-verify).