Безпека
Хто і що може змінювати в проєкті, звідки береться випадковість і які ризики залишаються. Верхня таблиця читається прямо з мережі, а не малюється вручну.
Що зараз записано в мережі
Читаємо дані…
Відкритий код, анонімність і приватність
Відкритий код
Увесь проєкт (контракт, сайт, скрипти запуску, тести) відкритий під ліцензією 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).