Dla deweloperów
Kod FAIRDRUM jest otwarty na licencji MIT: kontrakt, strona, skrypty startowe i testy leżą w jednym repozytorium (link pojawi się tu po publikacji). Tu krótko, jak wszystko działa i jak uruchomić własną kopię.
Budowa
| Folder | Co w środku |
|---|---|
programs/fairdrum/ | Kontrakt w Rust i Anchor 1.2.2. Liczby gry w consts.rs, obliczenia w engine.rs i math.rs jako zwykłe funkcje, więc testy idą bez sieci. |
app/ | Strona: Vite i TypeScript, strony w app/src/pages/, klient kontraktu i praca z wyrocznią ORAO w app/src/chain/. Tabele liczb na stronie generowane są z consts.rs, więc nie rozjeżdżają się z kontraktem. |
scripts/ | Start: emisja tokena, inicjalizacja, sprawdzenie zapisanych ustawień, test na devnecie, wypłaty służbowe, opcjonalny „dyżurny”. |
docs/ | ARCHITECTURE.md (jak wszystko działa), LAUNCH.md (start krok po kroku), AUDIT.md (samokontrola bezpieczeństwa i otwarte pytania). |
e2e/ | Testy strony w prawdziwej przeglądarce z podstawionym portfelem i podstawioną siecią. |
W projekcie nie ma serwera ani bazy danych: strona składa się ze zwykłych plików i czyta dane prosto z kontraktu.
Uruchom u siebie
Potrzebne Node.js 20.19 lub nowszy i Rust do testów kontraktu.
npm install
npm run dev # strona na localhost, bez kontraktu w trybie demo
npm test # testy klienta
cargo test -p fairdrum --release # testy kontraktu
npm run build # strona w folderze dist/
npm run build:single # wersja offline: osobne pliki html, otwierane podwójnym kliknięciem
Start krok po kroku na devnecie i w sieci głównej z poleceniami i rozbiorem częstych błędów: docs/LAUNCH.md w repozytorium.
Ustawienia bez rekompilacji
Plik config.json leży obok stron i czyta się przy każdym wczytaniu, więc adres kontraktu, węzeł sieci i linki zmieniają się bez kompilacji. Pusty programId włącza tryb demo.
{
"programId": "adres programu po starcie",
"cluster": "mainnet-beta",
"rpc": "https://...",
"swapUrl": "link do wymiany FAIRDRUM, gdy się pojawi",
"links": { "github": "...", "telegram": "...", "x": "...", "audit": "..." }
}
Adres strony, opisy stron i potwierdzenia dla webmasterów ustawia się w app/seo.json i app/pages.json; npm run gen:html przebudowuje po nich strony, mapę strony i robots.txt.
Jak projekt sprawdzano: historia jednej próby
Przed wyjściem do sieci głównej projekt przeżył pełną próbę w sieci testowej devnet (9–10 listopada 2026): instalacja z czystego serwera, kompilacja, wdrożenie, emisja tokena, start kontraktu i prawdziwe zakręcenia przez wyrocznię. Próba wyłapała sześć błędów startu — wszystkie opisane z lekarstwami w docs/AUDIT.md (F11–F16).
Główne odkrycie: poprzednia wyrocznia losowości (Switchboard) do tego czasu zamknęła się na zawsze — wyszło to właśnie na próbie, a nie po starcie. W jeden dzień kontrakt, klient i teksty w 14 językach przeniesiono na żywą wyrocznię ORAO VRF i tej samej nocy przeszły prawdziwe zakręcenia: rozliczenie jednego zakręcenia zajęło 17 121 jednostek obliczeniowych z limitu 1 400 000, pakiet ×10 — 17 978. W audycie pojawiły się potem działy „zapasowe ścieżki” (co robi projekt, jeśli wyrocznia znów umrze) i rozbiór znanych klas ataków na programy Solany.
Wniosek dla czytelnika prosty: wszystko, co napisano na tej stronie o zakręceniach, losowości i skarbcu, sprawdzono nie tylko testami, ale i żywą siecią. Czego jeszcze nie sprawdzono — uczciwie wymieniono na stronie „Status”, a niezależny audyt ludzi pozostaje obowiązkowym warunkiem startu.
Weryfikacja kodu
Testy
Logika kontraktu sprawdzana jest bez sieci, w tym „sztormem” z dziesiątek tysięcy losowych operacji: po każdej tokeny w skarbcu muszą równo odpowiadać zobowiązaniom. Test sprawdzono „mutacją”: jeśli w rachunku przesunąć choć jedną najmniejszą jednostkę, pada.
Czego nie sprawdzono
Żywe zakręcenie przez wyrocznię ORAO i niezależny audyt: status projektu. Wewnętrzna kontrola nie zastępuje audytu, a w docs/AUDIT.md wymieniono, co pozostaje otwarte.
Porównanie z siecią
Po starcie porównaj opublikowany kod z programem w sieci według instrukcji „Sprawdź uczciwość”. Adresy programu i tokena czyta się na stronie „Oficjalne linki”.
Jeśli strona fairdrum.to jest niedostępna
Saldo gry przechowywane jest w kontrakcie, a nie na stronie. Strona to wygodna powłoka, a wypłatę można zrobić z każdej jej kopii.
- Sprawdź, że adres wpisano poprawnie, i otwórz stronę z zakładki. Jeśli niedostępna jest tylko ona, poczekaj: bywa chwilowa awaria hostingu.
- Uruchom kopię strony: repozytorium jest otwarte, a strona to zwykłe pliki. Pobierz wersję offline albo zbuduj własną (
npm run build), połóż obokconfig.jsonz prawdziwym adresem programu (można go porównać na stronie „Oficjalne linki” i w eksploratorze) i otwórz przez dowolny prosty serwer www, np.npx vite preview. - Podłącz ten sam portfel. Saldo, ranga i seria odczytają się z kontraktu, a wypłata działa tak samo jak na głównej stronie.
- Nie wpisuj tajnej frazy na żadnych „mirrorach”. Strona nigdy o nią nie prosi: każda kopia, która prosi, jest fałszywa.
Kopię strony z cudzego źródła sprawdź: porównaj kod z repozytorium projektu. Bez tego nie wiesz, co dokładnie podpiszesz. Pewniej zbudować samemu.
Licencja
MIT: kod można czytać, kopiować, zmieniać i uruchamiać, także komercyjnie, zachowując tekst licencji. Licencja dotyczy kodu, a nie nazwy i adresu fairdrum.to: fork z innymi zasadami nie może podawać się za ten projekt.