Для розробників
Код FAIRDRUM відкритий під ліцензією MIT: контракт, сайт, скрипти запуску і тести лежать в одному репозиторії (посилання з'явиться тут після публікації). Тут коротко про те, як усе влаштовано і як запустити власну копію.
Будова
| Папка | Що всередині |
|---|---|
programs/fairdrum/ | Контракт на Rust і Anchor 1.2.2. Числа гри в consts.rs, розрахунки в engine.rs і math.rs у вигляді звичайних функцій, тому тести йдуть без мережі. |
app/ | Сайт: Vite і TypeScript, сторінки в app/src/pages/, клієнт контракту і робота зі Switchboard у app/src/chain/. Таблиці чисел на сайті генеруються з consts.rs, тому з контрактом не розходяться. |
scripts/ | Запуск: випуск токена, ініціалізація, перевірка записаних налаштувань, тест на devnet, службові виплати, необов'язковий «черговий». |
docs/ | ARCHITECTURE.md (як усе влаштовано), LAUNCH.md (покроковий запуск), AUDIT.md (самоперевірка безпеки і відкриті питання). |
e2e/ | Перевірки сайту в справжньому браузері з підставним гаманцем і підставною мережею. |
У проєкті немає сервера і бази даних: сайт складається зі звичайних файлів і читає дані прямо з контракту.
Запустити в себе
Потрібні Node.js 20.19 або новіший і Rust для тестів контракту.
npm install
npm run dev # сайт на localhost, без контракту в демо-режимі
npm test # тести клієнта
cargo test -p fairdrum --release # тести контракту
npm run build # сайт у папці dist/
npm run build:single # офлайн-версія: окремі html-файли, відкриваються подвійним клацанням
Покроковий запуск на devnet і в основній мережі з командами і розбором частих помилок: docs/LAUNCH.md у репозиторії.
Налаштування без перезбирання
Файл config.json лежить поруч зі сторінками і читається під час кожного завантаження, тому адреса контракту, вузол мережі та посилання змінюються без збирання. Порожній programId вмикає демо-режим.
{
"programId": "адреса програми після запуску",
"cluster": "mainnet-beta",
"rpc": "https://...",
"swapUrl": "посилання на обмін FAIRDRUM, коли з'явиться",
"links": { "github": "...", "telegram": "...", "x": "...", "audit": "..." }
}
Адреса сайту, описи сторінок і підтвердження для вебмайстрів задаються в app/seo.json і app/pages.json; npm run gen:html перезбирає за ними сторінки, карту сайту і robots.txt.
Перевірка коду
Тести
Логіка контракту перевіряється без мережі, зокрема «штормом» із десятків тисяч випадкових операцій: після кожної токени в сховищі мають точно дорівнювати зобов'язанням. Тест перевірений «мутацією»: якщо в розрахунку змістити хоча б одну мінімальну одиницю, він падає.
Що не перевірено
Збирання під Solana, жива робота зі Switchboard і незалежний аудит: статус проєкту. Внутрішня перевірка не замінює аудиту, і в docs/AUDIT.md перелічено, що залишається відкритим.
Звірка з мережею
Після запуску звірте опублікований код із програмою в мережі за інструкцією «Перевірити чесність». Адреси програми і токена читаються на сторінці «Офіційні посилання».
Якщо сайт fairdrum.to недоступний
Ігровий баланс зберігається в контракті, а не на сайті. Сайт — зручна оболонка, і виведення можна зробити з будь-якої її копії.
- Перевірте, що адресу набрано правильно, і відкрийте сайт із закладки. Якщо недоступний лише він, зачекайте: буває тимчасовий збій хостингу.
- Відкрийте копію сайту: репозиторій відкритий, а сайт — це звичайні файли. Завантажте офлайн-версію або зберіть свою (
npm run build), покладіть поручconfig.jsonзі справжньою адресою програми (її можна звірити на сторінці «Офіційні посилання» і в оглядачі) і відкрийте через будь-який простий вебсервер, наприкладnpx vite preview. - Підключіть той самий гаманець. Баланс, ранг і серія прочитаються з контракту, і виведення працює так само, як на основному сайті.
- Не вводьте секретну фразу на жодних «дзеркалах». Сайт її ніколи не просить: будь-яка копія, що просить, підроблена.
Копію сайту з чужого джерела перевірте: порівняйте код із репозиторієм проєкту. Без цього ви не знаєте, що саме підпишете. Надійніше зібрати самому.
Ліцензія
MIT: код можна читати, копіювати, змінювати і запускати, зокрема в комерційних цілях, зберігши текст ліцензії. Ліцензія стосується коду, а не назви та адреси fairdrum.to: форк з іншими правилами не повинен видавати себе за цей проєкт.