Посібник 5

Перевірити чесність самому

Усе, що сайт каже про контракт, можна звірити у відкритих даних мережі. Нижче перевірки від найпростішої (дві хвилини) до найглибшої (збирання коду). Для більшості програмування не потрібне.

Як влаштована перевірка

Сайт можна підробити, або він може помилитися, а запис у блокчейні ні. Тому перевіряйте не на сайті проєкту, а в оглядачі мережі: незалежному сайті, який показує вміст блокчейна (Solscan, Solana Explorer, SolanaFM тощо). Відкрийте будь-який із них самостійно, не за посиланнями з чужих повідомлень.

Для перевірок потрібні дві адреси: програма (контракт) і токен. Їх показує сторінка «Безпека». Звірте їх ще мінімум у двох незалежних місцях (репозиторій, офіційні канали): якщо адреси розходяться, вас намагаються обдурити.

Швидкі перевірки (2–10 хвилин)

Що перевіритиДе подивитисяЯк має бутиЯкщо інакше
1. Чи не можна надрукувати нові токениСторінка токена в оглядачі, поле Mint AuthorityПорожньо (відкликано)Той, чия адреса вказана, може випустити скільки завгодно токенів і знецінити ваші.
2. Чи не можна заморозити токениТа сама сторінка, поле Freeze AuthorityПорожньоВласник може заморозити будь-який гаманець, зокрема ваш.
3. Хто може змінити кодСторінка програми, поле Upgrade AuthorityПорожньо (код заморожений) або адреса мультисига із затримкою на оновленняОдна звичайна адреса означає, що власник може будь-якої миті завантажити інші правила.
4. Загальний випуск токенаСторінка токена: SupplyНе більше 100 000 000 000 і лише зменшується через спалюванняБільше означає, що випуск було збільшено.
5. Чи збігається токенАдреса токена у вашому гаманці проти сторінки «Безпека»Адреси ідентичні посимвольноЦе не справжній FAIRDRUM. Не купуйте і не вносьте.
6. Чи вистачає токенів у сховищіАдреса сховища зі сторінки «Безпека», баланс токена; суми скарбничок на «Економіці»Баланс сховища не менший за суму скарбничок (і ще ігрових балансів гравців)Контракт має завжди бути покритий токенами. Розбіжність — серйозний сигнал.

Верхня таблиця на сторінці «Безпека» читає ті самі поля прямо з мережі і відмічає ✔ або ⚠, але не покладайтеся лише на неї: звірте один раз самі.

Перевірити свій прокрут

Кожен прокрут залишає запис у мережі, і результат на екрані можна звірити з ним.

  1. Знайдіть транзакцію

    Після прокруту під кнопкою з'являється посилання «Транзакція». Воно відкриває запис в оглядачі. Або відкрийте історію вашого гаманця в оглядачі і виберіть транзакцію з програмою FAIRDRUM.

    Має бути: статус Success і список інструкцій.

  2. Знайдіть дві пари викликів

    У першій транзакції є виклик Switchboard (запит випадковості, commit) і виклик програми FAIRDRUM spin_commit (ставка). У другій: виклик Switchboard (розкриття, reveal) і spin_settle (розрахунок). Назва в оглядачах виглядає трохи по-різному (SpinCommit, spinCommit).

  3. Порівняйте порядок

    Ставку було записано раніше, ніж число розкрито: у першої транзакції менший номер блоку (Slot), ніж у другої. Це означає, що ні ви, ні проєкт не знали результату в момент ставки.

  4. Подивіться журнал (Logs) другої транзакції

    Там записана подія SpinSettled із кількістю прокрутів, призами, влучаннями в міні-джекпот, джекпот і суперджекпот. Це ті самі числа, що показав барабан.

  5. Перевірте власника випадковості

    Акаунт випадковості, вказаний у транзакції, має належати програмі Switchboard. Контракт сам відкидає будь-який інший, але переконатися варто: відкрийте акаунт і подивіться поле Owner.

Глибокі перевірки

Зібрати код і порівняти хеш

Візьміть репозиторій проєкту на GitHub (посилання з'явиться після публікації), зберіть програму у відтворюваному режимі (anchor build --verifiable) і порівняйте хеш із тим, що в мережі (solana-verify). Збіг означає, що в мережі лежить саме цей відкритий код.

Прочитати константи

Усі числа гри зібрані в одному файлі consts.rs: частки, шанси, драбина призів, комісії, строки. Сайт малює свої таблиці саме з нього, і розбіжностей між сайтом і контрактом бути не повинно.

Запустити тести

У репозиторії є тести правил і розрахунків (cargo test) і клієнта (npm test). Вони перевіряють, наприклад, що сума всіх пулів і балансів не перевищує токени в сховищі.

Розібрати, як вибирається результат

Із 32 байтів розкритої випадковості контракт отримує числа через SHA-256. Для головного барабана це блоки SHA-256("FDRM-M" + випадковість + номер блоку), з яких по 4 байти (little-endian) береться по числу на кожен виконаний прокрут. Для золотого барабана: SHA-256("FDRM-G" + випадковість + номер виконаного прокруту). Число порівнюється з порогами в частках 232; самі пороги залежать від тижневого обсягу і розміру скарбничок у момент розрахунку, тому перерахувати старий прокрут повністю можна лише разом зі станом програми на той слот. Формули лежать у math.rs і engine.rs.

Прочитати журнал за період

Будь-хто може вивантажити з мережі всі події SpinSettled за період і сам підрахувати частоту золота і розмір скарбничок. Порівняйте з «Шансами». На малій кількості прокрутів розкид величезний: щоб побачити шанс в 1%, потрібні тисячі прокрутів.

Що перевірити не можна

  • Чесність оракула. Випадковість приходить від мережі Switchboard. Контракт перевіряє, що число з потрібного акаунта і розкрите після ставки, але не може перевірити, що вузли оракула не змовилися. Це зовнішня залежність.
  • Відсутність помилок у коді. Тести і відкритий код підвищують упевненість, але замінити незалежний аудит не можуть. Поки посилання на аудит не вказане, його немає.
  • Майбутнє. Поки право на оновлення не відкликане, правила можуть змінитися новою версією. Стежте за транзакціями оновлення програми.
  • Що робить адміністратор поза контрактом. Продажі його токенів, маркетинг, рішення про лістинги контракт не контролює. Виплати з фонду просування публічні, але «на що» контракт не перевіряє.

Червоні прапорці

Адреса в повідомленні не збігається з сайтомПідміна токена або програми.
Mint або Freeze Authority заповненіВипуск чи заморозка залишаються в когось.
Право на оновлення в однієї адреси без затримкиПравила можна змінити будь-якої миті.
«Гарантований виграш», «схема», «партнерка»У грі немає рефералів і гарантій, середнє повернення близько 73–74%.
Просять секретну фразу або «підтвердити гаманець»Це крадіжка. Закрийте сторінку.
Транзакція просить більше, ніж ви очікувалиПрочитайте вікно гаманця. Не впевнені: відмовтеся.