Smart contract (ang. smart contract, inteligentny kontrakt) to program zapisany na blockchainie, który wykonuje się zawsze tak samo, gdy ktoś wywoła jego funkcję i spełni zapisane w kodzie warunki. Nie jest umową w sensie prawnym ani nie jest „inteligentny” – to kod z własnym adresem i saldem, którego działanie weryfikuje każdy węzeł sieci. Na smart contractach działają giełdy DEX, protokoły pożyczkowe, stablecoiny, tokeny i NFT.
Jak działa smart contract
Na Ethereum i sieciach zgodnych z EVM kontrakt pisze się zwykle w języku Solidity, kompiluje do kodu bajtowego i wdraża specjalną transakcją. Od tej chwili kontrakt ma adres, a każdy może wywołać jego publiczne funkcje, wysyłając transakcję podpisaną kluczem prywatnym. Za wykonanie płaci się opłatę w jednostkach gas. Uproszczony fragment kontraktu depozytowego:
function withdraw(uint256 amount) external {
require(balances[msg.sender] >= amount, "Brak srodkow");
balances[msg.sender] -= amount;
payable(msg.sender).transfer(amount);
}
Kod sprawdza, czy wywołujący ma wystarczające saldo, zmniejsza je i dopiero potem wysyła środki. Kolejność ma znaczenie: odwrotna (najpierw wysyłka, potem aktualizacja salda) otwiera drogę do ataku reentrancy, który w 2016 r. pozwolił wyprowadzić ok. 3,6 mln ETH z projektu The DAO.
Wyrocznie, czyli skąd kontrakt zna świat
Kontrakt widzi tylko dane z własnego blockchainu. Nie wie, jaki jest kurs EUR/USD, kto wygrał mecz ani czy paczka dotarła do odbiorcy. Takie dane dostarczają wyrocznie (ang. oracles) – usługi zapisujące informacje ze świata zewnętrznego na łańcuchu, np. sieć Chainlink. Automatyczna wypłata „po potwierdzeniu dostawy” działa tylko wtedy, gdy ktoś to potwierdzenie wprowadzi. Kontrakt jest więc dokładnie tak wiarygodny, jak jego wyrocznia. Manipulacja ceną podawaną przez wyrocznię to jedna z najczęstszych metod ataku na DeFi.
Czy kontrakt da się zmienić
Kod raz wdrożonego kontraktu jest niezmienny. Nie oznacza to jednak, że niezmienne jest działanie protokołu. Popularny wzorzec proxy (np. EIP-1967) rozdziela adres, pod który wysyłasz środki, od kontraktu z logiką. Administrator może podmienić logikę na nową wersję – naprawić błąd, ale też zmienić zasady. O tym, kto może to zrobić, decyduje kod: pojedynczy klucz, multisig, DAO z głosowaniem albo timelock opóźniający zmiany o kilka dni. „Nie można edytować bez zgody sieci” to mit – o aktualizacji decyduje właściciel uprawnień, nie cała sieć.
| Model | Kto może zmienić logikę | Ryzyko dla użytkownika |
|---|---|---|
| Kontrakt niezmienny | nikt | błąd w kodzie zostaje na zawsze |
| Proxy z jednym kluczem admina | posiadacz klucza | kradzież klucza lub nieuczciwy zespół |
| Proxy z multisig i timelockiem | kilku sygnatariuszy, z opóźnieniem | mniejsze, masz czas na wyjście |
| Zarządzanie przez DAO | posiadacze tokenów w głosowaniu | przejęcie głosowania przez dużego gracza |
Przykład: koszt i ryzyko jednej interakcji
Załóżmy, że wymieniasz token na DEX-ie. Transakcja zużywa 65 000 jednostek gas, a cena gas wynosi 20 gwei. Koszt: 65 000 × 20 = 1 300 000 gwei, czyli 0,0013 ETH. Przed wymianą portfel prosi jednak o drugą transakcję – approve, czyli zgodę na to, by kontrakt DEX-u pobierał Twoje tokeny. Domyślnie wiele interfejsów proponuje zgodę nieograniczoną. Jeśli kontrakt zostanie później zaatakowany albo zatwierdziłeś fałszywą stronę, uprawnienie pozwala wyprowadzić całe saldo tego tokena, a nie tylko kwotę jednej wymiany. Zgoda na dokładną kwotę kosztuje kolejną opłatę gas przy każdej wymianie, ale ogranicza maksymalną stratę.
Ryzyka
- Błędy w kodzie – w 2017 r. użytkownik przypadkiem wywołał funkcję biblioteki portfeli multisig Parity i zablokował ok. 513 tys. ETH na zawsze.
- Uprawnienia administratora – klucz admina to pojedynczy punkt awarii.
- Wyrocznie – zła cena na wejściu to zły wynik na wyjściu.
- Zależności – protokół korzysta z innych kontraktów, a błąd jednego przenosi się na kolejne.
- Front-running i MEV – Twoja transakcja jest widoczna przed zatwierdzeniem, więc ktoś może się przed nią ustawić.
- Egzekwowalność prawna – kod robi to, co zapisano, nawet jeśli wynik jest niezgodny z intencją stron.
Najczęstsze błędy
- Uznawanie audytu za gwarancję bezpieczeństwa – audyt zmniejsza ryzyko, ale go nie usuwa.
- Podpisywanie transakcji bez czytania, co zatwierdzasz, zwłaszcza zgód i podpisów typu permit.
- Pozostawianie nieograniczonych zgód w starych protokołach.
- Utożsamianie „zdecentralizowany” z „niezmienny” bez sprawdzenia, kto ma klucze admina.
- Interakcja z kontraktem przez link z wiadomości zamiast przez sprawdzony adres.
Perspektywa tradera
Handlując na DEX-ach czy w protokołach DeFi, powierzasz środki smart contractom. Ryzyko protokołu dokłada się do ryzyka rynkowego: nawet dobrze ustawiony stop nie pomoże, jeśli kontrakt zostanie zaatakowany albo wyrocznia poda złą cenę i uruchomi likwidacje. Rozsądnie jest ograniczać kapitał trzymany w jednym protokole, sprawdzać, czy ma timelock i multisig, oraz regularnie odwoływać zbędne zgody. Traktuj depozyt w DeFi jak ekspozycję na kontrahenta – tyle że kontrahentem jest kod i ludzie, którzy mają do niego klucze. Dotyczy to także mostów, przez które przenosisz środki między sieciami – to jedne z najczęściej atakowanych kontraktów.
Najczęstsze pytania
Czy smart contract to umowa prawna?
Nie. To program. Może automatyzować wykonanie umowy, ale jego wynik nie zawsze pokrywa się z tym, co strony uznałyby za uczciwe.
Czy można zmienić smart contract po wdrożeniu?
Sam kod nie, ale kontrakty w modelu proxy pozwalają podmienić logikę. Kto może to zrobić, zapisano w kodzie.
Kto płaci za wykonanie kontraktu?
Osoba wysyłająca transakcję, w postaci opłaty gas zależnej od złożoności operacji i obciążenia sieci.
Czy audyt gwarantuje bezpieczeństwo?
Nie. Wiele zaatakowanych protokołów miało audyty. Audyt to jeden z sygnałów, obok historii protokołu, programu bug bounty i struktury uprawnień.
Czy smart contracty działają tylko na Ethereum?
Nie. Obsługuje je wiele sieci, m.in. zgodne z EVM, a także Solana czy Cardano, choć w innych językach i modelach.
Tekst ma charakter edukacyjny i nie stanowi rekomendacji inwestycyjnej.


