Sigurnost pametnih ugovora nije opcija — to je imperativ. S više od 3 milijarde dolara izgubljenih kroz exploite i hakove u 2024. i 2025. godini, jasno je da kvaliteta koda izravno utječe na sigurnost korisničkih sredstava. U ovom članku dijelimo best practices koje koristimo u web3.hr timu za razvoj sigurnih smart contracta.

1. Koristite provjerene biblioteke

OpenZeppelin Contracts je de facto standard za sigurne implementacije najčešćih obrazaca — od ERC-20 i ERC-721 tokena do sustava kontrole pristupa i nadogradivosti. Umjesto da sami implementirate kompleksne mehanizme, koristite audicirane i battle-tested biblioteke.

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";

2. Zaštita od reentrancy napada

Reentrancy je jedan od najstarijih i najopasnijih napada na pametne ugovore. Slavni DAO hack iz 2016. koristio je upravo ovu ranjivost. Zaštitite se korištenjem ReentrancyGuard modifiera ili slijedeći Checks-Effects-Interactions obrazac.

Checks-Effects-Interactions obrazac znači da prvo provjerite uvjete (require), zatim ažurirate stanje (state changes), i tek na kraju obavite eksterne pozive (external calls). Ovim redoslijedom eliminirate mogućnost reentrancy napada.

3. Pažljivo upravljanje s aritmetikom

Od Solidity 0.8.0, overflow i underflow provjere su ugrađene u jezik. No, to ne znači da možete ignorirati aritmetičke probleme. Precision loss kod dijeljenja, rounding errors kod cijena i manipulacija orakulima su česti vektori napada.

Uvijek koristite dovoljan broj decimala, izbjegavajte dijeljenje prije množenja, i budite svjesni ograničenja fiksne aritmetike u Solidity-ju.

4. Automatsko testiranje i fuzzing

Unit testovi su minimum, ali za ozbiljne projekte preporučujemo i fuzzing — automatsko testiranje s nasumičnim inputima. Alati poput Echidna i Foundry fuzz testova mogu otkriti edge case-ove koje manualno testiranje propušta.

5. Statička analiza

Prije svakog deploya pokrenite statičke analizatore:

  • Slither — Najpopularniji statički analizator za Solidity. Detektira česte ranjivosti i anti-patterne.
  • Mythril — Simbolička analiza koja može otkriti složenije propuste.
  • Aderyn — Novi alat koji koristi AST analizu za brzo prepoznavanje ranjivosti.

6. Profesionalni audit

Za projekte koji upravljaju značajnim sredstvima, profesionalni audit je obavezan. Minimalno dva neovisna auditora trebaju pregledati kod prije mainnet deploya. Cijena audita varira od 5.000 do 100.000+ EUR ovisno o kompleksnosti, ali to je zanemariva investicija u usporedbi s potencijalnim gubicima.

7. Bug bounty programi

Nakon deploya, pokrenite bug bounty program putem platformi poput Immunefi. Etički hakeri su vaša zadnja linija obrane i motivirani su pronaći ranjivosti prije malicioznih aktera.

Zaključak

Sigurnost smart contracta zahtijeva višeslojni pristup — od kvalitetnog koda i testiranja do profesionalnog audita i bug bounty programa. U web3.hr timu, svaki projekt prolazi kroz sve ove faze prije nego što ikada dodirne mainnet.