Wszystkie artykuły

Jak czytać raport ryzyka tokena: mint authority, LP, honeypot i pozostałe sygnały

Przechodzimy wiersz po wierszu przez zakładkę „Raport ryzyka”: co sprawdzają RugCheck i GoPlus na Solanie, Base i BNB Chain, jak czytać liquidity i wiek pary oraz czego czysty raport nie dowodzi.

Bezpieczeństwo13 minAutor: Opublikowano
Ilustracja redakcyjna MEMECOINY

Najważniejsze wnioski

  • Raport nie ma jednej oceny punktowej. Każdy wiersz czytaj osobno: status, wartość, źródło i godzinę odczytu
  • Na Solanie zacznij od mint authority i freeze authority. „Odwołane” jest trwałe, „ustawione” daje status „Ryzyko”
  • Rozszerzenia Token-2022, takie jak permanentDelegate czy pausable, mogą odebrać Ci kontrolę nad tokenami
  • Na EVM sprawdzaj honeypot, sell tax, ograniczenia handlu, uprawnienia właściciela i proxy
  • Procenty holderów i LP wymagają kontekstu: pule, giełdy i programy zawyżają koncentrację, a blokady mogą wygasnąć
  • „Nie sprawdzono” oznacza brak danych, a czysty raport nie dowodzi, że token jest bezpieczny
01

Jak zbudowana jest zakładka „Raport ryzyka”[1][15][19]

Na stronie każdego tokena w zakładce „Raport ryzyka” zbieramy sygnały od zewnętrznych dostawców. Dla Solany korzystamy z RugCheck i z bezpośredniego odczytu konta mint przez Solana RPC. Dla Base i BNB Chain z GoPlus Token Security API. Sekcję „Struktura rynku” liczymy z danych DexScreener dla głównej pary tokena. Na Robinhood Chain żaden obsługiwany dostawca nie skanuje jeszcze kontraktów, więc raport pokazuje tam tylko strukturę rynku.

Raport celowo nie ma jednej oceny punktowej, także wtedy, gdy dostawca ją wylicza. Każdy wiersz ma status, wartość, krótkie wyjaśnienie, nazwę źródła i godzinę odczytu. Wiersze są podzielone na dwie grupy: „Kontrakt i holderzy” oraz „Struktura rynku”. Nagłówek liczy, ile sygnałów wymaga uwagi, na przykład „3 z 11 sprawdzanych sygnałów wymaga uwagi”.

  • „Bez uwag”: źródło sprawdziło sygnał i nie znalazło problemu
  • „Uwaga”: coś wymaga sprawdzenia, ale samo nie przesądza o ryzyku
  • „Ryzyko”: uprawnienie albo mechanizm, który pozwala komuś odebrać Ci tokeny, zablokować sprzedaż lub wycofać liquidity
  • „Nie sprawdzono”: dostawca nie zwrócił danych. To nie jest wynik pozytywny
02

Solana: mint authority i freeze authority[4][5][3][1]

Konto mint może mieć dwa uprawnienia. Mint authority pozwala dodrukować nowe tokeny, czyli rozwodnić obecnych holderów. Freeze authority pozwala zamrozić konto tokena. Według dokumentacji Solany zamrożone konto nie może odbierać, przesyłać ani palić tokenów, dopóki nie zostanie odmrożone. W praktyce posiadacz tego uprawnienia może zablokować Ci sprzedaż.

Oba uprawnienia da się ustawić na None, a dokumentacja Solany mówi wprost, że usuwa to daną rolę na stałe. Dlatego w raporcie wartość „odwołane” daje status „Bez uwag”, a „ustawione” ze skróconym adresem posiadacza uprawnienia daje status „Ryzyko”.

Stan obu uprawnień czytamy bezpośrednio z konta mint przez Solana RPC i porównujemy z RugCheck. Wynik porównania widać w dopisku „kontrola RugCheck” pod wierszem. Jeśli źródła się nie zgadzają, wiersz dostaje co najmniej status „Uwaga”, a wyjaśnienie prosi o sprawdzenie konta mint w explorerze. Oficjalna dokumentacja Solany też wskazuje RugCheck jako narzędzie oceniające między innymi mint i freeze authority.

03

Rozszerzenia Token-2022: opłaty, delegat i hook[7][9][6][8][10]

Token na Solanie może działać na klasycznym Token Program albo na Token-2022, który pozwala dopisać do mintu rozszerzenia. Wiersz „Rozszerzenia Token-2022” pojawia się tylko przy tokenach Token-2022 i pokazuje nazwy rozszerzeń tak, jak zwraca je Solana RPC. Jeśli żadne z wymienionych niżej rozszerzeń nie występuje, wiersz ma status „Bez uwag”.

  • permanentDelegate („Ryzyko”): stały delegat może przenosić i palić tokeny z każdego konta tego mintu, a holder nie może go odwołać
  • pausable („Ryzyko”): pause authority może wstrzymać transfery, mint i burn dla całego tokena
  • nonTransferable („Ryzyko”): tokenów z tego mintu w ogóle nie da się przesłać
  • transferFee („Uwaga”): każdy transfer jest pomniejszany o opłatę w punktach bazowych, a nowa stawka zaczyna obowiązywać dwie epoki po zmianie
  • transferHook („Uwaga”): przy każdym transferze wywoływany jest zewnętrzny program, który może odrzucić transakcję
  • defaultAccountState („Uwaga”): nowe konta tokena mogą startować zamrożone i czekać, aż freeze authority je odmrozi
04

LP burned, locked czy odblokowane[1][13]

Wiersz „Blokada liquidity (LP)” na Solanie pokazuje, jaka część LP jest zablokowana lub spalona, według pola lpLockedPct z RugCheck. Wartość wygląda tak: „95.0% zablokowane/spalone”. Od 90 procent wiersz ma status „Bez uwag”, od 50 procent „Uwaga”, poniżej 50 procent „Ryzyko”. Niezablokowana część LP może zostać wycofana z puli, a to gwałtownie obniża liquidity, do której mogą sprzedać pozostali.

Spalenie i zablokowanie to nie to samo. Raydium opisuje swoją funkcję Burn & Earn jako trwałe zablokowanie pozycji i zaznacza, że technicznie LP jest zablokowane, a nie spalone. Po zablokowaniu nie ma sposobu, by odzyskać wpłaconą liquidity, choć właściciel klucza dalej odbiera opłaty handlowe. Inne blokady mają termin wygaśnięcia, a nasz raport tego terminu nie sprawdza.

05

Koncentracja holderów, insiderzy i bundle[1][2][14]

Wiersz „Koncentracja holderów” dla Solany opiera się na flagach RugCheck dotyczących holderów. Gdy RugCheck nic nie oznaczy, widzisz wartość „nie oznaczono”. Gdy oznaczy, wartość i nazwa flagi pochodzą wprost z RugCheck, a status zależy od poziomu flagi.

Sam procent bywa mylący. Wśród największych kont często są takie, które nie należą do jednej osoby: vault puli AMM, konto bonding curve launchpada, portfel giełdy albo inne konto programu. Pula trzymająca 20 procent podaży nie jest wielorybem, który jutro sprzeda. Zanim wyciągniesz wniosek, otwórz zakładkę „Holderzy” i sprawdź, czym są największe adresy.

Osobna sprawa to insiderzy i bundle. Na Solanie Jito przyjmuje bundle, czyli do pięciu transakcji wykonanych po kolei i atomowo, na zasadzie wszystko albo nic. W ten sposób kilka portfeli może kupić token w tym samym bloku, w którym powstała pula. Jeśli należą do jednej osoby, podaż wygląda w statystykach na rozproszoną, choć kontroluje ją jeden podmiot.

06

Mutable metadata i pozostałe flagi RugCheck[11][12][1]

Nazwa, symbol i link do metadanych tokena nie muszą być stałe. W standardzie Metaplex Token Metadata update authority może je zmieniać, dopóki flaga Is Mutable ma wartość true. Po ustawieniu jej na false każda kolejna aktualizacja kończy się błędem. W Token-2022 metadane mogą też leżeć bezpośrednio w mincie i wtedy zmienia je update authority wskazane w rozszerzeniu.

Zmienne metadane same niczego nie zabierają, ale pozwalają po fakcie podmienić nazwę, logo albo linki, na przykład tak, by token udawał inny projekt. Nasz raport nie ma na to osobnego wiersza. Wszystkie flagi RugCheck inne niż mint authority, freeze authority i holderzy pokazujemy jako osobne wiersze z angielską nazwą, wartością i opisem RugCheck. Poziom „danger” daje status „Ryzyko”, każdy inny „Uwaga”.

07

EVM: honeypot, sell tax i ograniczenia handlu[15]

Dla Base i BNB Chain raport opiera się na GoPlus Token Security API. Wiersz „Honeypot” mówi, czy według GoPlus tokena może nie dać się sprzedać. To wynik symulacji: „nie wykryto” oznacza, że w chwili testu sprzedaż przeszła, a nie że właściciel nie zmieni zasad później.

„Podatek przy kupnie” i „Podatek przy sprzedaży” to opłata, którą kontrakt pobiera od każdej transakcji. Powyżej 10 procent wiersz ma status „Ryzyko”, a każdy podatek większy od zera daje „Uwaga”. Jeśli właściciel może zmienić stawkę dla wszystkich albo dla wybranych adresów, wiersz dostaje co najmniej „Uwaga” z dopiskiem „Właściciel może zmienić wysokość podatku”. GoPlus zaznacza, że sell tax równy 100 procent oznacza w praktyce brak możliwości sprzedaży, a mechanizmy anti-bot i cooldown potrafią zafałszować symulację.

Wiersz „Ograniczenia handlu” zbiera pięć flag. cannot_sell_all (nie sprzedasz całego salda) i cannot_buy dają „Ryzyko”. transfer_pausable (właściciel może wstrzymać handel), trading_cooldown (wymuszony odstęp między transakcjami) i blacklist (kontrakt ma funkcję czarnej listy, a adres z tej listy nie może handlować) dają „Uwaga”.

08

EVM: właściciel, proxy i zweryfikowany kod[15][16][17]

Wiele tokenów EVM ma właściciela, czyli adres z dostępem do funkcji administracyjnych. W popularnym wzorcu Ownable od OpenZeppelin właściciel może zrzec się tej roli i wtedy funkcje oznaczone onlyOwner przestają być dostępne. GoPlus ostrzega jednak, że ukryty właściciel bywa używany do zachowania kontroli mimo pozornego zrzeczenia się.

Wiersz „Uprawnienia właściciela” ma status „Ryzyko”, gdy GoPlus wykryje hidden_owner, can_take_back_ownership (własność da się odzyskać) albo selfdestruct (kontrakt można zniszczyć). Osobne wiersze to „Dodruk tokenów (mint)” ze statusem „Uwaga” oraz „Zmiana sald przez właściciela” ze statusem „Ryzyko”, bo taki właściciel może zmienić saldo dowolnego holdera.

„Kontrakt proxy” oznacza, że adres tokena przekazuje wywołania do osobnego kontraktu z logiką, a admin proxy może tę logikę podmienić bez zmiany adresu. Dzisiejszy czysty wynik nie musi więc obowiązywać jutro, dlatego wiersz ma status „Uwaga”. „Kod zweryfikowany” z wartością „nie” daje „Ryzyko”, bo bez opublikowanego kodu nie da się sprawdzić ukrytych funkcji.

09

EVM: holderzy i LP według GoPlus[15][18]

Na Base i BNB Chain koncentrację liczymy z listy holderów GoPlus: sumujemy udział dziesięciu największych adresów, pomijając konta zablokowane i adresy burn. Wartość wygląda tak: „top 10: 42.0%”. Od 30 procent wiersz ma status „Uwaga”, od 50 procent „Ryzyko”. Lista może obejmować pule liquidity i kontrakty giełd, co zawyża wynik. GoPlus podaje przy holderach tag i informację, czy adres jest kontraktem, więc łatwiej ustalić, czyje to konta.

Blokadę LP szacujemy z listy dziesięciu największych posiadaczy LP, którą zwraca GoPlus, i liczymy udział zablokowanych oraz spalonych. Progi są takie same jak na Solanie. GoPlus rozpoznaje tylko lockery, które ma na swojej liście, a pozycje w pulach typu Uniswap V3 są NFT standardu ERC-721, a nie zwykłymi tokenami LP, więc mogą nie zostać ujęte w pełni.

10

Struktura rynku: liquidity, wycena i wiek pary[19][20]

Trzy wiersze w sekcji „Struktura rynku” liczymy z danych DexScreener dla głównej pary tokena. Działają tak samo na każdej obsługiwanej sieci, także na Robinhood Chain.

Wiek pary trzeba czytać ostrożnie. Raport liczy go od utworzenia głównej pary, a nie od utworzenia tokena. Token, który przeniósł się do nowej puli, będzie miał młodą parę, a stara para nie chroni przed wycofaniem liquidity.

  • „Liquidity głównej pary”: poniżej 25 tys. USD status „Uwaga”. Powyżej „Bez uwag”, ale liquidity może zostać szybko wycofana, jeśli LP nie jest zablokowane
  • „Wycena do liquidity”: market cap, a gdy go brak FDV, podzielone przez liquidity pary. Powyżej 100x status „Uwaga”
  • „Wiek pary”: para młodsza niż 7 dni ma status „Uwaga”, a utworzona tego samego dnia wartość „utworzona dziś”
Przykład obliczenia

Token ma market cap 3 mln USD, a jego główna para 20 tys. USD liquidity. Relacja wynosi 150x, więc raport pokaże „Uwaga” przy liquidity i przy wycenie do liquidity. Sprzedaż choćby ułamka market capu mocno przesunie cenę, a wycena na ekranie nie mówi, ile faktycznie da się wypłacić.

11

Czego czysty raport nie dowodzi

Raport z samymi zielonymi wierszami mówi tylko tyle, że w chwili odczytu wybrane źródła nie znalazły wybranych problemów. Pod każdym raportem przypominamy, że sygnały mogą być błędne, niepełne lub nieaktualne, a brak ostrzeżeń nie jest gwarancją.

  • Nie potwierdza, że to właściwy token. Podróbka znanego tickera może mieć wzorowy raport
  • Nie wyklucza zmiany zasad po odczycie: przez admina proxy, właściciela kontraktu albo update authority
  • Nie mówi, kto stoi za portfelami. Insiderzy rozłożeni na wiele adresów nie muszą przekroczyć progów koncentracji
  • Nie gwarantuje, że blokada LP nie wygaśnie, bo terminu blokady nie sprawdzamy
  • Nie ocenia zespołu ani popytu. Token z czystym kontraktem może stracić całą wartość, gdy kupujący odejdą
  • Nie zastępuje własnego sprawdzenia w explorerze
12

Krok po kroku: raport ryzyka w pięć minut

Tę kolejność stosujemy przy każdym nowym tokenie. Jeśli któryś krok kończy się statusem „Ryzyko” albo nie da się go sprawdzić, nie kupuj, dopóki tego nie wyjaśnisz.

  • Otwórz stronę tokena po pełnym adresie i potwierdź sieć
  • Sprawdź znacznik przy zakładce („Na żywo” albo „Opóźnione”) i godziny na liście źródeł
  • Przeczytaj nagłówek: ile sygnałów wymaga uwagi i ilu nie sprawdzono
  • Solana: mint authority i freeze authority mają wartość „odwołane”, a kontrola RugCheck jest zgodna
  • Solana: przy Token-2022 przejrzyj listę rozszerzeń, zwłaszcza permanentDelegate, pausable i transferFee
  • EVM: Honeypot „nie wykryto”, podatki znane i niskie, brak ograniczeń handlu i podejrzanych uprawnień właściciela
  • Proxy albo brak zweryfikowanego kodu traktuj jako powód do dłuższej analizy
  • LP: sprawdź procent zablokowane/spalone i ustal, czy blokada jest trwała
  • Holderzy: w zakładce „Holderzy” odróżnij pule, giełdy i programy od zwykłych portfeli
  • Struktura rynku: liquidity, wycena do liquidity i wiek pary, a potem kwotacja sprzedaży dla Twojej kwoty
  • Wchodzisz tylko kwotą, której stratę w całości zniesiesz

Źródła

Materiały pierwotne wykorzystane do sprawdzenia informacji. Numer przy sekcji wskazuje powiązane źródło. Link nie oznacza rekomendacji opisywanego aktywa.

  1. 01RugCheck API: Swagger (/v1/tokens/{id}/report i /report/summary)
  2. 02RugCheck: skaner tokenów Solany
  3. 03Solana: How to verify a token
  4. 04Solana: Set authority
  5. 05Solana: Freeze account
  6. 06Solana: Transfer fees (Token-2022)
  7. 07Solana: Permanent delegate (Token-2022)
  8. 08Solana: Transfer hook (Token-2022)
  9. 09Solana: Pausable (Token-2022)
  10. 10Solana: Default account state (Token-2022)
  11. 11Metaplex: Token Metadata, aktualizacja metadanych i Is Mutable
  12. 12Solana: Metadata Pointer i Token Metadata
  13. 13Raydium: Burn & Earn
  14. 14Jito: Low latency transaction send (bundles)
  15. 15GoPlus Security: Token Security API, Response Details
  16. 16OpenZeppelin: Proxy Upgrade Pattern
  17. 17OpenZeppelin Contracts 5.x: Access Control (Ownable)
  18. 18Uniswap v3: NonfungiblePositionManager
  19. 19DexScreener API reference
  20. 20Jupiter: Swap API, Get Quote

Widzisz błąd albo nieaktualną informację? Napisz na kontakt@memecoiny.pl. Jak poprawiamy błędy

Jak czytać raport ryzyka tokena: mint authority, LP, honeypot i pozostałe sygnały | MEMECOINY