Naciśnij ESC, aby zamknąć

Jak sprawdzić projekt DeFi? Checklista przed inwestycją

Samodzielny audyt to nie tylko szukanie błędów w kodzie, ale też kompleksowa ocena „zapachu” projektu. W 2026 roku, kiedy agenci AI i skomplikowane interakcje cross-chain stały się normą, koszt jednego błędu drastycznie wzrósł.

Poniżej znajduje się praktyczny przewodnik przetrwania w DeFi, podzielony na poziomy trudności — od szybkiej oceny wizualnej po dogłębną analizę kodu.

 

Audyt smart kontraktów na własną rękę: Lista kontrolna przed wysłaniem pieniędzy

1. Poziom „Pacjent zero”: Higiena i sygnały zewnętrzne

Zanim otworzysz kod, oceń „warstwę społeczną” bezpieczeństwa.

  • Reputacja audytora: Jedna zielona „ptaszka” nic nie znaczy. Szukaj raportów od firm Tier-1 (Spearbit, Trail of Bits, OpenZeppelin, Zellic). Jeśli audyt zrobiła nieznana firma za 500 USD, zakładaj, że audytu nie ma.
  • Świeżość raportu: Sprawdź datę. Jeśli protokół przeszedł do wersji v2 lub v3, a audyt dotyczy v1, jesteś w strefie ryzyka.
  • Bug Bounty: Aktywna program na Immunefi z nagrodami od 50 000 USD za krytyczną lukę to jeden z najlepszych wskaźników pewności zespołu co do swojego kodu.

2. Poziom „Architekt”: Parametry zarządzania

Większość „kradzieży” w latach 2024–2026 nie wynikała z ataków hakerów, lecz przez klucze administratora.

  • Timelock: Każda krytyczna zmiana (wypłata środków, zmiana logiki) powinna mieć opóźnienie (np. 48 godzin).
    • Jak sprawdzić: Na Etherscan/Blockscout znajdź adres owner. Jeśli to zwykły portfel (EOA), a nie kontrakt Timelock lub Multisig, deweloper może wyłączyć projekt w każdej chwili.
  • Multisig: Upewnij się, że zarządzanie protokołem jest rozproszone (co najmniej 3-of-5 lub 5-of-9).
    • Mało znany niuans: Sprawdź, czy wszystkie klucze multisiga nie należą do tych samych osób (powiązane adresy, zasilone z tej samej giełdy).

 

3. Poziom „Code Reviewer”: Praktyczna analiza (Solidity)

Jeśli otworzyłeś zakładkę Contract na Etherscan, zwróć uwagę na następujące czerwone flagi.

A. Funkcja Minting (Nieograniczone tworzenie tokenów)

Szukaj funkcji, które pozwalają administratorowi drukować tokeny bez ograniczeń.

// NIEBEZPIECZNE: Admin może wydrukować bilion tokenów i zniszczyć cenę
function mint(address to, uint256 amount) public onlyOwner {
    _mint(to, amount);
}

Wskazówka: W uczciwych protokołach mint albo nie istnieje, albo jest ograniczony cap (maksymalną emisją), albo wywoływany tylko przez mechanizmy nagród.

B. Ukryte Proxy i możliwość aktualizacji

Nowoczesne kontrakty często korzystają ze schematu proxy (jeden kontrakt przechowuje dane, drugi logikę).

  • Ryzyko: Admin może cicho podmienić logikę na złośliwą.
  • Jak sprawdzić: Jeśli kontrakt oznaczono jako Proxy, sprawdź adres Implementation. Jeśli zmienił się wczoraj bez ogłoszenia — uciekaj.

C. Reentrancy (Ponowne wejście)

Klasyczna pułapka, która wciąż łapie nowicjuszy. Upewnij się, że funkcje wypłat używają modyfikatora nonReentrant lub stosują zasadę Checks-Effects-Interactions.

 

4. Poziom „Master”: Logiczne pułapki i Orakle

Tutaj kryją się najbardziej wyrafinowane luki z 2026 roku.

  • Zależność od spot price: Jeśli protokół pobiera cenę tokena bezpośrednio z pary na Uniswap v3/v4, jest podatny na ataki typu flash loan.
    • Na co zwracać uwagę: Wywołania slot0 w integracjach Uniswap bez sprawdzenia manipulacji. Poprawnym podejściem jest użycie TWAP (Time-Weighted Average Price) lub Chainlink Oracles.
  • Tokeny z opłatą przy transferze: Jeśli protokół nie uwzględnia, że przy transferze tokena część kwoty spala się (jak w niektórych memecoinach), wewnętrzna księgowość kontraktu „się zepsuje”, co może zablokować środki.

Przykład niebezpiecznego kodu (Accounting Gap):

function deposit(uint256 amount) public {
    token.transferFrom(msg.sender, address(this), amount);
    balances[msg.sender] += amount; // BŁĄD: jeśli token pobiera 2% prowizji,
                                    // kontrakt otrzyma mniej niż zapisano w balances!
}

5. Lista kontrolna „5 minut przed transakcją”

Zanim klikniesz „Swap” lub „Stake”, sprawdź adres kontraktu przy pomocy tych narzędzi:

  1. De.Fi Scanner / Honeypot.is: Szybka weryfikacja pod kątem ewidentnego oszustwa i ukrytych opłat.
  2. Dune Analytics: Sprawdź napływy i odpływy środków (TVL). Jeśli 90% płynności pochodzi z jednego adresu — objętość jest „narysowana”.
  3. Phalcon (by BlockSec): Pozwala symulować transakcję w mainnecie bez zużywania gazu, by zobaczyć, czy kontrakt nie zwróci błędu lub nie pobierze zbyt wielu uprawnień (Approve).

Mało znana „Czerwona Flaga”:

Zwróć uwagę na wywołania zewnętrzne w konstruktorze lub inicjalizatorze. Czasem złośliwi deweloperzy wstawiają wywołanie do kontraktu zewnętrznego, które wykonuje delegatecall na ich portfel, dając im pełną kontrolę nad twoim saldem w przyszłości, nawet jeśli główny kod wygląda czysto.

Teraz przejdźmy do bardziej zaawansowanych tematów: podatności architekturalnych sieci L2, mostów cross-chain oraz specyficznych „pułapek”, jakie kryją współczesne stacki DeFi.

6. Poziom „Pathfinder”: Analiza mostów cross-chain i ryzyk L2

W 2026 roku większość użytkowników nie działa już bezpośrednio na Ethereum Mainnet — korzystają z L2 (Arbitrum, Optimism, Base, ZK-Rollupy) albo z mostów pomiędzy nimi.

  • Ryzyko „pojedynczego walidatora”: Korzystając z mostu, zawsze sprawdź, kto zatwierdza transakcje. Jeśli jest to Proof of Authority z 3–5 węzłami kontrolowanymi przez sam zespół, masz do czynienia ze scentralizowanym single point of failure.
  • Sequencer L2: W większości sieci L2 sequencer (węzeł agregujący transakcje) nadal jest scentralizowany.
    • Praktyczna wskazówka: Sprawdź, czy istnieje tzw. „Escape Hatch”. Jeśli sequencer padnie albo zacznie cię cenzurować — czy możesz wypłacić środki bezpośrednio przez kontrakt L1? Jeśli w kodzie nie ma funkcji forceWithdraw lub jej odpowiednika, twoje środki są zakładnikiem uptime’u zespołu.
  • Weryfikacja State Root w L2: W ZK-rollupach upewnij się, że proofy są faktycznie weryfikowane na L1. Niektóre projekty, aby oszczędzić gaz, czasowo wyłączają weryfikację i działają w trybie „zaufaj nam”.

 

7. Poziom „Alchemik”: Manipulacje płynnością i AMM v4

Wraz z pojawieniem się Uniswap v4 oraz koncepcji Hooks, audyt pul płynności stał się wielokrotnie bardziej skomplikowany.

  • Niebezpieczne hooki: Hook to zewnętrzny smart kontrakt wykonywany przed lub po swapie.
    • Na co zwrócić uwagę: Złośliwy hook może blokować sprzedaż tokena w określonych warunkach (dynamiczny honeypot) albo podkradać część płynności przez ukryte opłaty, niewidoczne w interfejsie.
  • Skoncentrowana płynność i ataki JIT: Sprawdź, jak protokół chroni się przed Just-In-Time liquidity — gdy boty wchodzą do puli tuż przed twoją dużą transakcją i wychodzą zaraz po niej, zgarniając większość prowizji i zwiększając slippage.

 

8. Zaawansowana analiza kodu: matematyka i logika

A. Precision Loss (utrata precyzji)

Solidity nie obsługuje liczb zmiennoprzecinkowych. Wszystkie obliczenia wykonywane są na liczbach całkowitych. Błąd w kolejności operacji może prowadzić do kradzieży środków.

  • Zasada: Zawsze najpierw mnożenie, potem dzielenie.
  • Przykład błędu:
// ŹLE: (100 / 200) * 1000 => 0 * 1000 = 0
uint256 reward = (amount / totalSupply) * totalReward; 
// DOBRZE: (100 * 1000) / 200 => 500
uint256 reward = (amount * totalReward) / totalSupply;
  • Jeśli w formule nagród widzisz dzielenie przed mnożeniem, kontrakt dosłownie „zjada” środki użytkowników.

B. Inwarianty

Profesjonalny audytor zawsze szuka „złotej zasady” kontraktu. Na przykład: „Suma wszystkich sald użytkowników nigdy nie powinna przekraczać całkowitej liczby tokenów w kontrakcie.”

  • Jak sprawdzić: Przejrzyj funkcje withdrawAll albo emergencyWithdraw. Jeśli nie ma tam twardej kontroli salda albo używany jest selfdestruct (nawet jeśli w nowszych wersjach EVM jest ograniczony), to poważny sygnał ostrzegawczy.

 

9. Mało znane wektory ataku (Insider Info)

  • Storage Collision (kolizja pamięci): Przy aktualizacji kontraktów proxy deweloperzy mogą przypadkowo zmienić kolejność zmiennych. W efekcie adminAddress może nadpisać userBalance.
    • Jak wykryć: Porównaj pliki storage layout (jeśli są dostępne w repozytorium) starej i nowej wersji kontraktu.
  • Signature Replay (powtórzenie podpisu): Jeśli protokół korzysta z podpisów off-chain (np. do listingu albo głosowania bez gazu), upewnij się, że w podpisie uwzględniono chainId oraz nonce. W przeciwnym razie podpis z testnetu (np. Goerli) może zostać wykorzystany w Mainnecie do kradzieży środków.
  • Read-only Reentrancy: Najmodniejszy typ ataku ostatnich lat. Nawet jeśli funkcje modyfikujące stan są zabezpieczone, funkcja tylko do odczytu (np. ceny) może zostać wywołana, zanim stan kontraktu zostanie zaktualizowany — zwracając zmanipulowaną wartość.

 

10. Końcowy algorytm działania (krok po kroku)

  1. Kontrola approve: Nigdy nie dawaj unlimited approve nowemu protokołowi. Korzystaj z narzędzi takich jak Revoke.cash, aby sprawdzić, komu i na ile pozwoliłeś wydawać środki.
  2. Analiza właścicieli: Wklej adres kontraktu do Bubblemaps. Jeśli widzisz „klastry” powiązanych portfeli kontrolujących 80% podaży, to klasyczny Rug Pull.
  3. Analiza eventów: Zajrzyj do zakładki Events w eksploratorze blockchaina. Szukaj podejrzanych wywołań tuż po deployu. Masowe transfery do mikserów (np. Tornado Cash) oznaczają projekt wysokiego ryzyka.

Narzędzia profesjonalisty (2026):

  • Slither: Analizator statyczny (wymaga znajomości Pythona i terminala). Szybko wykrywa brakujące walidacje.
  • Aderyn: Nowoczesny analizator napisany w Rust, skupiony na logice DeFi.
  • Tenderly: Najlepsze narzędzie do wizualizacji transakcji. Pozwala zdebugować każdą nieudaną transakcję i dokładnie zobaczyć, na której linii kodu wystąpił błąd.

Przejdźmy do ostatnich, ale krytycznie ważnych aspektów: ekonomii przetrwania protokołu i bezpieczeństwa zarządzania. Jeśli kod to szkielet, to tokenomika i governance są układem nerwowym i mięśniami projektu.

 

11. Poziom „Ekonomista”: Audyt tokenomiki i ukrytych dziur

Nawet idealnie napisany kod nie uratuje projektu, jeśli jego model ekonomiczny prowadzi do hiperinflacji lub „spirali śmierci”.

  • Harmonogram odblokowań (Vesting): Sprawdź, kiedy wczesni inwestorzy i zespół otrzymują swoje tokeny.
    • Czerwony alarm: Ogromny cliff już miesiąc po starcie. Jeśli rynek nie wchłonie takiej ilości, cena spadnie, płynność zniknie, a protokół stanie się bezużyteczny (lub podatny na ataki manipulacją ceną).
  • Emisja vs Przychody: Skąd pochodzą nagrody (APY)?
    • Jeśli nagrody są wypłacane w rodzimym tokenie projektu, który nie generuje nic oprócz „obietnic”, to jest schemat Ponziego.
    • Jeśli protokół płaci w ETH/USDC, sprawdź źródło. Czy to rzeczywiste opłaty transakcyjne, czy po prostu redystrybucja pieniędzy nowych uczestników?
  • Złe długi: W protokołach pożyczkowych (jak Aave) sprawdź parametry LTV (Loan-to-Value). Jeśli protokół akceptuje jako zabezpieczenie mało płynne shieldcoiny z wysokim LTV, haker może podbić cenę shieldcoina, pożyczyć pod niego ETH i nigdy go nie oddać.

 

12. Poziom „Polityk”: Ryzyka zdecentralizowanego zarządzania (DAO)

Ataki na governance stały się plagą ostatnich lat. Hakerzy nie szukają już błędów w kodzie – kupują głosy.

  • Przejęcie władzy w governance: Sprawdź, ile tokenów potrzeba do podjęcia decyzji (kworum).
    • Scenariusz ataku: Haker bierze Flash Loan, kupuje ogromną ilość tokenów głosujących, natychmiast zatwierdza decyzję o wypłacie wszystkich środków z kasy na swój adres i ją wykonuje.
    • Ochrona: Kod zarządzania musi zawsze zawierać Snapshot (blokadę sald przed głosowaniem) lub zablokowanie tokenów na czas głosowania.
  • Ukryte kworum: Jeśli 80% tokenów znajduje się w 2–3 portfelach zespołu, „głosowanie społeczności” to tylko teatr. Używaj narzędzi do analizy posiadaczy (np. Etherscan Holders Tab lub Bubblemaps).

 

13. Poziom „Paranoik”: Sprawdzenie frontendu i zależności zewnętrznych

Czasami kod kontraktu jest czysty, ale nadal tracisz pieniądze. Jak to możliwe?

  • Frontend Injection: Hakerzy włamują się na stronę projektu (przez DNS lub złośliwy skrypt) i podmieniają adres kontraktu w przycisku „Deposit” na swój.
    • Jak przetrwać: Zawsze sprawdzaj adres kontraktu w oknie portfela (MetaMask/Rabby) z oficjalnym adresem z dokumentacji lub Coingecko.
  • Nieograniczone uprawnienia: Mało znany niuans: Niektóre protokoły proszą o approve nie tylko na kwotę transakcji, ale na cały Twój balans. Jeśli protokół zostanie zhakowany po roku, haker może wypłacić Twoje środki, nawet jeśli dawno z niego nie korzystasz.
    • Zasada: Używaj Rabby Wallet, który wyraźnie pokazuje, jakie uprawnienia przyznajesz i ostrzega przed ryzykownymi wywołaniami.

 

14. Checklist „Ostateczny filtr” (Zachowaj)

ParametrIdealny stanCzerwony alarm
Klucze AdminaMultisig + Timelock (48h+)Pojedynczy EOA (zwykły portfel)
Audyty2+ od topowych firmJeden audyt od „NoName” lub brak
PłynnośćZablokowanaAdmin może wypłacić w dowolnym momencie
OracleChainlink lub TWAPCena bezpośrednia z DEX (Spot Price)
Możliwość aktualizacjiPrzejrzyste proxy z ogłoszeniamiUkryte proxy bez opóźnienia aktualizacji
Dostęp do koduZweryfikowany na EtherscanKod źródłowy kontraktu niezweryfikowany

 

Wniosek: Twoja strategia przetrwania

Samodzielny audyt nie polega na znalezieniu wszystkich błędów – chodzi o odsianie oczywistych śmieci i pułapek.

  1. Nigdy nie wchodź pełną kwotą w protokoły młodsze niż 2 tygodnie.
  2. Używaj „piaskownicy” (oddzielny gorący portfel) dla nowych projektów DeFi.
  3. Jeśli APY wygląda zbyt dobrze, aby było prawdziwe – jesteś płynnością.

To chyba wszystko! Mam nadzieję, że ten przewodnik pomoże Ci chronić kapitał na wzburzonych wodach DeFi. Jeśli artykuł był przydatny i chcesz przeanalizować konkretny projekt według tej metody, albo masz pytania dotyczące narzędzi analitycznych – zostaw komentarz. Odpowiemy lub opublikujemy osobny przewodnik.

Astra EXMON

Astra is the official voice of EXMON and the editorial collective dedicated to bringing you the most timely and accurate information from the crypto market. Astra represents the combined expertise of our internal analysts, product managers, and blockchain engineers.

...

Leave a comment

Your email address will not be published. Required fields are marked *