Proč se vyplatí číst smart kontrakt přes UI, i když neprogramujete
Ne každý, kdo používá DeFi, NFT nebo Web3 nástroje, musí umět číst Solidity. Klíčová rizika můžete odhalit i bez znalosti kódu – přímo v uživatelském rozhraní (UI) průzkumníků blockchainu, peněženek a analytických nástrojů. Tento článek je návodem, na co si všímat, kde kliknout, jaké signály jsou pozitivní a které varují před možným rizikem.
Kde začít: základní UI místa pro „čtení“ kontraktu
- Průzkumník sítě (Etherscan, Basescan, Arbiscan…): záložky Contract (Read/Write), Transactions, Internal Txns, Events, Holders, Analytics.
- Peněženka: detail schválení/approvals, simulace transakce, varování před podezřelými voláními.
- Protokolové UI: panel nastavení, sekce rizik, informace o adminovi, odkazy na governance, dokumentaci a audit.
- Agregátory schválení: přehled on-chain oprávnění (možnost rychlého „revoke“).
Ověření kontraktu: verifikace zdrojového kódu a licence
Na záložce Contract hledejte:
- „Contract Source Code Verified“: verifikovaný = kompilace proběhla se stejnými nastaveními; zvyšuje důvěru, že zobrazené rozhraní odpovídá bytecode na síti.
- Licence (MIT, GPL, BUSL…): komerční a omezující licence mohou naznačovat záměry projektu s forkováním.
- Více souborů a komentáře: bohaté komentáře a oddělené moduly (Ownable, AccessControl, Pausable) usnadňují pochopení i laikovi díky názvům funkcí.
Proxy a upgradeability: nenechte se zmást jednou adresou
Mnoho protokolů používá upgradeovatelné proxy. V UI průzkumníka si všímejte:
- Detekce proxy: štítek „Proxy“ nebo „Implementation“ s odkazem na Implementation Contract.
- Admin vs. Implementation: kdo drží práva na změnu implementace (admin), zda je to multisig, time-lock nebo EOA (soukromá peněženka jedné osoby).
- UUPS/Transparent vzor: v událostech (Events) hledejte logy jako Upgraded nebo AdminChanged.
- Timelock: UI by mělo odkazovat na časový zámek (např. 48–72 hodin) pro změny – pozitivní signál řízení rizika.
Vlastnická a přístupová práva: Ownable, AccessControl, Guardian
V záložce Read Contract vyhledejte funkce a pole:
- owner() nebo getRoleAdmin(): kdo je vlastník a kdo může nastavovat role.
- hasRole() a seznam rolí (DEFAULT_ADMIN_ROLE, PAUSER_ROLE, MINTER_ROLE): ověřte, zda jsou svázány s multisig nebo DAO.
- renounceOwnership(): renounced může snížit riziko svojvoľných zásahů, ale brání rychlým opravám; mělo by to být v UI vysvětleno.
- Guardian/Pauser: existuje „nouzová brzda“? Je omezená time-lockem a pravidly governance?
Tokenová ekonomika v UI: supply, mint/burn, poplatky, blacklisty
U tokenů si všímejte:
- totalSupply() a maxSupply (pokud existuje): je supply pevná, nebo inflační?
- mint(), burn(), setFee(), setTaxWallet(): kdo to může volat? Jsou změny omezené?
- Blacklist/Whitelist funkce: legitimní v regulovaných modelech, ale představují riziko cenzury; UI by mělo explicitně dokumentovat podmínky.
- Transferní omezení (anti-bot, anti-whale): sledujte prahové limity a dočasné režimy po spuštění.
Schválení (approvals) a povolení (permit): čtěte, co podepisujete
- allowance(owner, spender) v Read: podívejte se, kdo má právo utrácet vaše tokeny a kolik.
- approve(spender, amount) v Write: UI protokolů často nabízí „nekonečné schválení“. Preferujte přesné nebo limitované schválení.
- permit (EIP-2612): „gasless approval“ přes podpis; UI by mělo vizualizovat přesného spendera, value a deadline.
- Revokace: dobré UI odkazuje na rychlé revoke a po akci připomíná zkontrolovat zůstatky schválení.
Události (Events) jako náhrada za logiku kódu
Pokud kód nečtete, sledujte historii událostí:
- OwnershipTransferred, RoleGranted, RoleRevoked: kdo získává strážce a práva?
- ParametersUpdated (poplatky, limity): změny parametrů a frekvence úprav.
- Upgraded u proxy: časová osa upgradů, odpovídá procesu governance?
Transakce a interní volání: pohled na „chování“ kontraktu
- Transactions: kdo volá administrativní funkce, jak často, v jakých dávkách?
- Internal Txns: přesuny do jiných kontraktů (treasury, fee recipient, rewarder); ověřte, zda adresy odpovídají dokumentaci.
- Contract Creator: počáteční instalace, mincování tokenů, seed pro treasury, vesting kontrakty.
DEX a pool UI: parametry, které indikují riziko
- Rezervy a likvidita: nízká likvidita = vysoký skluz; UI by mělo zobrazovat rezervy a historický objem.
- Poplatky poolu a admin fee: kdo může měnit poplatky? Je stanoven strop, nebo platí governance proces?
- Vlastník poolu a práva: upgradeovatelnost poolu, feeTo adresa, práva na skim/sync.
- LP token ekonomika: kam směřují odměny, existuje emission schedule a možnost jednostranného stažení stimulů?
Bridgy a cross-chain UI: smluvní páry a závislosti
- Adresy na obou sítích: UI by mělo přepojit „kanonické“ adresy a ověřit messenger/oracle kontrakty.
- Finality/Challenge parametry: čas zdržení, challenge periody, bonding mechanismy.
- Admin práva: kdo může pozastavit most, měnit „routery“ nebo měnit limit toků?
Bezpečnostní moduly v UI: timelock, pauzy, rate-limity
- Pausable: jasná signalizace, kdo může pauzovat a za jakých podmínek; zneužitelný pauser bez timelocku je riziko.
- Rate-limiter: per-epoch limity na výběry, rebalancování; UI by mělo ukázat aktuální využití.
- Emergency Withdraw: mechanismy „bez odměn“, které chrání hlavní kapitál.
Simulace a náhled transakce: co musí UI ukázat před podpisem
- Výběr funkce a parametry: uživatelsky čitelné názvy funkcí s parametry (recipient, amount, deadline, minOut).
- Odhad spotřeby gasu a celkové ceny; varování, pokud je odhad netypicky vysoký.
- Externí volání: pokud transakce spouští další kontrakty (router, vault), UI to má zobrazit.
- Simulační výsledek: očekávaný balanc před/po, očekávaný skluz, výše poplatků a adresy příjemců.
Audit, bug bounty, verzování: meta-informace v rozhraní
- Odkazy na audity s verzemi commitů; UI by mělo přiřadit auditovanou verzi k implementaci.
- Bug bounty rozsah a kritéria; kontakt a responsible disclosure.
- Changelog implementací; historie změn s hashi a daty.
Varovné signály v UI: když něco „nesedí“
- Neverifikovaný kód nebo chybějící odkazy na proxy/implementation.
- EOA jako admin bez multisigu a timelocku.
- Neomezené parametry (libovolná změna poplatků, blacklist kdykoliv, mint bez stropu) bez kontroly governance.
- „Infinite approval“ jako default bez možnosti zvolit přesnou částku.
- Nejasné destinace odměn/poplatků; chybí audit trail na feeTo a treasury adresy.
Tabulka: mapa rychlé kontroly v průzkumníku
| Oblast | Kde v UI | Co hledat | Rizikový signál |
|---|---|---|---|
| Verifikace | Contract → Code | „Source Verified“, licence | Neverifikováno, nejasná licence |
| Proxy | Contract → Proxy/Read | Implementation, Admin, Upgraded události | EOA admin bez timelocku |
| Práva | Read → owner/roles | Multisig/DAO vlastnictví | Jedna soukromá adresa |
| Token parametry | Read/Write | mint/burn limity, fee stropy | Neomezené změny |
| Události | Events | Role/Param změny s historií | Časté neočekávané úpravy |
| Holders | Holders | Diverzifikace, vesting kontrakty | Koncentrace bez vestingu |
| Schválení | Wallet/Approvals | Přesné limity, revoke odkazy | Vynucené „infinite“ approvaly |
Čtení „Read/Write“ bez kódu: tipy na interpretaci
- Názvy funkcí jsou často samovysvětlující (deposit, withdraw, setFee, pause, upgradeTo).
- Konstanty a parametry v Read odhalí limity (fee cap, maxMint, cooldown).
- Write ukáže, co je vůbec možné udělat – pokud UI protokolu nenabízí tlačítko, ale Write ho má, je to signál k dalším otázkám.
UX prvky, které zvyšují důvěru
- „Copy-to-clipboard“ a přepojení všech adres na průzkumník.
- Badge a štítky: Verified Code, Audited, Proxy Detected, Time-locked Admin.
- „Explain like I’m 5“ tooltipy: jednoduché popisy funkcí a rizik.
- Výchozí bezpečné volby: přesná schválení, přísné skluzové limity, varování před rizikovými akcemi.
Kontext sítě: L2 specifika v UI
- Poplatky a „blob“ náklady jsou jiné než na L1; UI by mělo ukazovat skutečnou konečnou cenu.
- Sequencer a výpadky: zobrazení stavu sítě a zpoždění publikace na L1.
- Stav mostu: čekací lhůty, challenge periody a limity výběrů.
Nejčastější omyly při „čtení“ bez kódu
- Záměna verifikace s auditem: verifikovaný kód ≠ auditovaný.
- Ignorování proxy: čtete proxy místo implementation, kde je samotná logika.
- Přehlédnutí rolí: změna poplatků či pauza systému může být v rukou jediné adresy.
- „Infinite approval“ z pohodlnosti: usnadní UX, ale zvyšuje riziko zneužití.
Checklist: 10minutový rituál před interakcí s novým protokolem
- Verifikace kódu a propojení proxy na implementation.
- Admin/Owner: multisig + timelock nebo EOA?
- Role a práva: kdo může měnit poplatky, pauzovat, upgradovat?
- Události: historie Upgraded/Role/Param změn.
- Token parametry: minteři, fee stropy, blacklist funkce.
- Holders: koncentrace, vesting, treasury adresy.
- Approvals: existující schválení, možnost přesných limitů.
- DEX/Pool: likvidita, fee parametry, vlastník poolu.
- Bridge: kanonické adresy na obou stranách, limity a pauzy.
- UI simulace: jasné parametry volání, očekávaný výsledek a náklady.
Shrnutí: UI jako lupa na chování kontraktů
I bez znalosti Solidity