Sprawdź uczciwość samodzielnie
Wszystko, co strona mówi o kontrakcie, można zweryfikować w otwartych danych sieci. Niżej weryfikacje od najprostszej (dwie minuty) do najgłębszej (kompilacja kodu). Większości programowanie nie jest potrzebne.
Jak działa weryfikacja
Stronę można podrobić albo może się mylić, a zapisu w blockchainie nie. Dlatego sprawdzaj nie na stronie projektu, lecz w eksploratorze sieci: niezależnej stronie pokazującej zawartość blockchaina (Solscan, Solana Explorer, SolanaFM i podobne). Otwórz dowolny z nich samodzielnie, nie z linków z cudzych wiadomości.
Do weryfikacji potrzebne są dwa adresy: program (kontrakt) i token. Pokazuje je strona „Bezpieczeństwo”. Porównaj je jeszcze w co najmniej dwóch niezależnych miejscach (repozytorium, oficjalne kanały): jeśli adresy się różnią, ktoś próbuje Cię oszukać.
Szybkie weryfikacje (2–10 minut)
| Co sprawdzić | Gdzie patrzeć | Jak ma być | Jeśli inaczej |
|---|---|---|---|
| 1. Czy nie da się dodrukować tokenów | Strona tokena w eksploratorze, pole Mint Authority | Puste (odwołane) | Ten, czyj adres widnieje, może wyemitować dowolną liczbę tokenów i zdewaluować Twoje. |
| 2. Czy nie da się zamrozić tokenów | Ta sama strona, pole Freeze Authority | Pusto | Właściciel może zamrozić każdy portfel, w tym Twój. |
| 3. Kto może zmienić kod | Strona programu, pole Upgrade Authority | Puste (kod zamrożony) albo adres multisiga z opóźnieniem aktualizacji | Jeden zwykły adres oznacza, że właściciel może w każdej chwili wgrać inne zasady. |
| 4. Łączna emisja tokena | Strona tokena: Supply | Nie więcej niż 100 000 000 000 i tylko maleje przez spalanie | Więcej znaczy, że emisję zwiększono. |
| 5. Czy token się zgadza | Adres tokena w Twoim portfelu kontra strona „Bezpieczeństwo” | Adresy identyczne co do znaku | To nie jest prawdziwy FAIRDRUM. Nie kupuj i nie wpłacaj. |
| 6. Czy w skarbcu starcza tokenów | Adres skarbca ze strony „Bezpieczeństwo”, saldo tokena; sumy skarbonek na „Ekonomii” | Saldo skarbca nie mniejsze niż suma skarbonek (plus salda gry graczy) | Kontrakt zawsze musi być pokryty tokenami. Rozbieżność to poważny sygnał. |
Górna tabela na stronie „Bezpieczeństwo” czyta te same pola prosto z sieci i stawia ✔ albo ⚠, ale nie polegaj tylko na niej: raz porównaj sam.
Sprawdź własne zakręcenie
Każde zakręcenie zostawia zapis w sieci, a wynik na ekranie można z nim porównać.
Znajdź transakcję
Po zakręceniu pod przyciskiem pojawia się link „Transakcja”. Otwiera zapis w eksploratorze. Albo otwórz historię swojego portfela w eksploratorze i wybierz transakcję z programem FAIRDRUM.
Ma być: status Success i lista instrukcji.
Znajdź dwa wywołania
W pierwszej transakcji — wywołanie programu FAIRDRUM
spin_commit(zakład), wewnątrz którego widać zagnieżdżone wywołanie programu ORAO (zapytanie o losowość). W drugiej —spin_settle(rozliczenie). Nazwa w eksploratorach wygląda nieco różnie (SpinCommit, spinCommit).Porównaj kolejność
Zakład zapisano wcześniej, niż ujawniono liczbę: pierwsza transakcja ma mniejszy numer bloku (Slot) niż druga. To znaczy, że ani Ty, ani projekt nie znaliście wyniku w chwili zakładu.
Zajrzyj do dziennika (Logs) drugiej transakcji
Zapisano tam zdarzenie
SpinSettledz liczbą zakręceń, nagrodami, trafieniami w mini-jackpot, jackpot i superjackpot. To te same liczby, które pokazał bęben.Sprawdź właściciela losowości
Konto losowości wskazane w transakcji musi należeć do programu ORAO (VRFzZoJd…). Kontrakt sam odrzuca każde inne, ale warto się upewnić: otwórz konto i sprawdź pole Owner.
Głębokie weryfikacje
Zbudować kod i porównać hasz
Weź repozytorium projektu na GitHubie (link pojawi się po publikacji), zbuduj program w trybie odtwarzalnym (anchor build --verifiable) i porównaj hasz z tym w sieci (solana-verify). Zgodność znaczy, że w sieci leży dokładnie ten otwarty kod.
Przeczytać stałe
Wszystkie liczby gry zebrano w jednym pliku consts.rs: udziały, szanse, drabinka nagród, prowizje, terminy. Strona rysuje swoje tabele właśnie z niego i rozbieżności między stroną a kontraktem być nie powinno.
Uruchomić testy
W repozytorium są testy zasad i obliczeń (cargo test) oraz klienta (npm test). Sprawdzają np., że suma wszystkich pul i sald nie przekracza tokenów w skarbcu.
Rozebrać, jak wybierany jest wynik
Z 32 bajtów ujawnionej losowości kontrakt uzyskuje liczby przez SHA-256. Dla głównego bębna to bloki SHA-256("FDRM-M" + losowość + numer bloku), z których po 4 bajty (little-endian) bierze się po liczbie na każde wykonane zakręcenie. Dla złotego bębna: SHA-256("FDRM-G" + losowość + numer wykonanego zakręcenia). Liczba porównywana jest z progami w ułamkach 232; same progi zależą od tygodniowego wolumenu i wielkości skarbonek w chwili rozliczenia, więc przeliczyć stare zakręcenie w całości można tylko razem ze stanem programu na tamten slot. Wzory leżą w math.rs i engine.rs.
Przeczytać dziennik za okres
Każdy może pobrać z sieci wszystkie zdarzenia SpinSettled za okres i sam policzyć częstość złota i wielkość skarbonek. Porównaj ze „Szansami”. Przy małej liczbie zakręceń rozrzut jest ogromny: żeby zobaczyć szansę 1%, trzeba tysięcy zakręceń.
Czego nie da się sprawdzić
- Uczciwości wyroczni. Losowość przychodzi od węzłów ORAO. Kontrakt sprawdza, że liczba jest z właściwego konta, zapisana przez ich program i pojawiła się po zakładzie, ale nie może sprawdzić, że węzły wyroczni się nie zmówiły. To zależność zewnętrzna.
- Braku błędów w kodzie. Testy i otwarty kod zwiększają pewność, ale nie zastąpią niezależnego audytu. Dopóki link do audytu nie jest wskazany, audytu nie ma.
- Przyszłości. Dopóki prawo do aktualizacji nie zostało odwołane, zasady mogą się zmienić nową wersją. Śledź transakcje aktualizacji programu.
- Co robi administrator poza kontraktem. Sprzedaży jego tokenów, marketingu, decyzji o listingach kontrakt nie kontroluje. Wypłaty z funduszu promocji są publiczne, ale „na co” kontrakt nie sprawdza.