Czym jest Solidity? Język programowania inteligentnych kontraktów
Jedna nieuważna linia kodu Solidity dała kiedyś atakującemu 3,6 miliona ETH. Kod zrobił dokładnie to, co mu nakazano. To jest niepokojące. Solidity obraca pieniędzmi. Jego źródło zazwyczaj jest widoczne. A gdy kontrakt jest już aktywny, nie ma cichej poprawki – błąd pozostaje, fundusze pozostają ujawnione, a cały świat może odczytać jedno i drugie. To dominujący język programowania do pisania inteligentnych kontraktów na Ethereum i każdym blockchainie EVM obok niego. Odrzuć żargon, a większość DeFi i NFT kryje się pod powierzchnią Solidity. Potężny. I bezlitosny. Oto, czym jest, jak działa kod, jak wygląda pierwszy kontrakt i dlaczego bezpieczeństwo nigdy nie wychodzi poza ramy.
Czym jest Solidity jako język programowania
Każdy poradnik mówi to samo: Solidity to język wysokiego poziomu dla inteligentnych kontraktów. Świetnie. To niewiele pomoże. Ale jaki to język? Statycznie typowany. Obiektowo zorientowany. Nawiasy klamrowe i średniki, składnia zapożyczona z JavaScriptu, C++ i Pythona. Jeśli umieściłeś kod w którymś z nich, plik `.sol` czyta się znajomo w około dziesięć minut.
Gavin Wood naszkicował to w 2014 roku z pomocą niewielkiego zespołu Ethereum, w którego skład wchodził Christian Reitwiessner. Cel był jasny: pozwolić ludziom pisać inteligentne kontrakty dla publicznego blockchaina. Jego rdzeniem jest „kontrakt”. Wyobraź sobie to jako „klasę”, która akurat istnieje w łańcuchu — przechowuje stan, udostępnia funkcje i dziedziczy po innych. Problem polega na tym, gdzie to działa. Po skompilowaniu do kodu bajtowego ten sam kontrakt wykonuje się identycznie na każdym węźle w zdecentralizowanej sieci, a wszystkie węzły sprawdzają się nawzajem. To pojedyncze żądanie wyjaśnia, dlaczego Solidity wydaje się tak ograniczony.
| Solidność w skrócie | |
|---|---|
| Pierwsze wydanie | 2014 |
| Główny projektant | Gavin Wood (Ethereum) |
| Paradygmat | Obiektowo zorientowany, zorientowany na kontrakt |
| Pisanie na maszynie | Statyczny |
| Kompiluje się do | Kod bajtowy EVM |
| Najnowszy kompilator | v0.8.35 (kwiecień 2026) |
| Rozszerzenie pliku | .sol |
Jak działa Solidity: od kodu do maszyny do pisania (EVM)
Ciekawą częścią Solidity nie jest składnia, ale potok. Czytelny kod staje się czymś, co tysiące maszyn zgadza się wykonać w ten sam sposób. Determinizm jest sednem sprawy. Gdyby dwa węzły uruchomiły ten sam kontrakt i otrzymały różne odpowiedzi, sieć nie mogłaby uzgodnić równowagi między nimi. To pojedyncze wymaganie wyjaśnia wiele dziwnych ograniczeń języka: brak możliwości pobrania losowej liczby, brak możliwości wywołania zewnętrznego interfejsu API w trakcie wykonywania. Wszystko musi być możliwe do odtworzenia z poziomu samego łańcucha.
Kompilator i kod bajtowy
Piszesz plik `.sol`, czytelny dla człowieka i wysokiego poziomu. Kompilator Solidity, `solc`, przekształca go w bajtkod EVM, długi ciąg operacji niskiego poziomu, wraz z interfejsem ABI, który wymienia funkcje kontraktu. Bajtkod trafia do łańcucha. Nikt nie odczytuje go ręcznie. Jest on celem maszyny, tak jak C kończy jako asembler.
Maszyna do pobierania próbek i gaz
Maszyna wirtualna Ethereum uruchamia ten kod bajtowy. Każdy węzeł Ethereum ma taki kod. Każda wykonywana przez nią operacja generuje koszt gazu, opłaty uiszczanej w ETH. Gaz nie jest kwestią drugorzędną. To sposób, w jaki sieć wycenia obliczenia i broni się: niekontrolowana pętla nie zamraża łańcucha — po prostu zużywa gaz nadawcy i powraca do poprzedniego stanu. Dobra solidność utrzymuje gaz na niskim poziomie.
ABI
ABI, czyli Application Binary Interface, to mapa JSON opisująca sposób komunikacji z wdrożonym kontraktem. Portfel taki jak MetaMask lub front-end dApp używa go do kodowania wywołania funkcji w formacie oczekiwanym przez EVM, a następnie dekodowania otrzymanych danych. Wyobraź sobie ABI jako most między interfejsem widzianym przez użytkownika a kontraktem znajdującym się pod adresem w blockchainie.

Pisanie pierwszego inteligentnego kontraktu Solidity
Dość teorii. Najszybszym sposobem na zrozumienie Solidity jest przeczytanie krótkiego kontraktu i rozpoznanie jego części.
Anatomia kontraktu
```solidność
// Identyfikator licencji SPDX: MIT
pragma solidity ^0.8.20;
licznik kontraktu {
uint256 public count;
event Incremented(uint256 newCount);
function increment() public {
count += 1;
emit Incremented(count);
}
}
```
Kilka fragmentów zawiera całość. Linia `pragma` przypina wersję kompilatora, więc niezgodna wersja nie może po cichu przekompilować kodu. `contract Counter` otwiera kontrakt, tak jak otwiera klasę. `count` to zmienna stanu, trwale przechowywana w łańcuchu. `increment()` to publiczna funkcja, którą może wywołać każdy. `event Incremented` rejestruje każdą zmianę, aby aplikacje poza łańcuchem mogły zareagować. Kod obiektowy z blockchainem pod spodem.
Narzędzia, których faktycznie używasz
Na początek niczego nie instalujesz. Remix to przeglądarkowe środowisko programistyczne (IDE): pisz, kompiluj i wdrażaj Solidity kilkoma kliknięciami, co czyni je standardowym miejscem do nauki Solidity. Prawdziwe projekty przenoszą się do lokalnych frameworków. Hardhat i Foundry prawidłowo zajmują się kompilacją, testowaniem i wdrażaniem. A prawie wszyscy opierają się na OpenZeppelin, bibliotece audytowanych, wielokrotnego użytku kontraktów dla tokenów i kontroli dostępu, zamiast tworzyć ryzykowny kod od podstaw.
Od kodu do adresu na żywo
Wdrożenie oznacza wysłanie skompilowanego bajtkodu w transakcji. Najpierw przetestuj w darmowej sieci testowej. Sepolia to typowy wybór w 2026. Podłącz portfel, taki jak MetaMask. Prześlij do sieci głównej tylko wtedy, gdy kontrakt działa prawidłowo. Wdrożenie również kosztuje gaz, płacony w prawdziwych ETH. I oto zdanie warte wytatuowania na nadgarstku: po wdrożeniu kod jest niezmienny. Nie można edytować aktywnego kontraktu. Ten jeden fakt – bardziej niż jakiekolwiek dziwactwo składniowe – jest powodem powstania kolejnej sekcji.
Które blockchainy obsługują Solidity
Solidity przestał być „językiem Ethereum” lata temu. Tak wiele sieci zaadaptowało EVM do ponownego wykorzystania narzędzi Ethereum, że Solidity stał się wspólnym językiem całej rodziny łańcuchów. ChainList śledzi ponad 385 blockchainów kompatybilnych z EVM w 2026. Wszystkie duże firmy się do tego zaliczają: Polygon, BNB Chain, Arbitrum , Base i Avalanche, wszystkie wykorzystujące ten sam kod bajtowy, do którego kompiluje się plik `.sol`.
Ethereum nadal stanowi centrum zainteresowania. Według DeFiLlama , posiada zablokowaną wartość około 45 miliardów dolarów, co stanowi ponad połowę całego DeFi. Aktywność rośnie: według Token Terminal, w samym czwartym kwartale 2025 roku wdrożono około 8,7 miliona nowych inteligentnych kontraktów. Dla deweloperów, ten zasięg jest prawdziwym powodem, dla którego warto wybrać Solidity zamiast języka przyklejonego do jednego łańcucha.
Co więc jest z tym budowane? Prawie każda kategoria zdecentralizowanych aplikacji, o których słyszałeś. Protokoły pożyczek i handlu DeFi. Kontrakty ERC-20, na których opiera się większość tokenów, kontrakty ERC-721, na których opierają się NFT. DAO kodują swoje reguły głosowania w Solidity. Stablecoiny zarządzają podażą za jego pomocą. Gry on-chain zachowują tam swoją logikę. Kiedy projekt mówi, że jest „na Ethereum”, prawie na pewno ktoś napisał i wdrożył Solidity.
Dlaczego zabezpieczenia inteligentnych kontraktów Solidity są trudne
Właściwości, które czynią Solidity potężnym, to te same, które sprawiają, że jego błędy są tak kosztowne. Kod przechowuje pieniądze. Źródło jest często publiczne. Nie da się go naprawić. Atakujący może w każdej chwili przeczytać umowę, a środki są dostępne pod wskazanym adresem. To nie jest język do szybkiego działania i psucia rzeczy. Nigdy nie pracowałem z oprogramowaniem, w którym różnica między „kompiluje się” a „jest bezpieczne” jest tak duża.
Ponowne wejście i atak na DAO
Podręcznikowa luka w zabezpieczeniach Solidity to reentrancy. Kontrakt wysyła ETH na adres zewnętrzny, zanim zaktualizuje swoje saldo wewnętrzne, a kontrakt odbierający ponownie wycofuje środki, zanim pierwsze wywołanie się zakończy. W czerwcu 2016 roku ta sama luka spowodowała utratę około 3,6 miliona ETH, wartych wówczas około 60 milionów dolarów, z The DAO . W rezultacie Ethereum zostało podzielone na ETH i Ethereum Classic, łańcuch, który działa do dziś. A rozwiązanie? Prawie obraźliwie małe. Najpierw zaktualizuj swój stan, a pieniądze wyślij na końcu. Ten schemat ma nawet nazwę: checks-effects-interactions.
Przepełnienie całkowite i SafeMath
Przed wersją Solidity 0.8 arytmetyka mogła się dyskretnie zapętlić. Dodanie 1 do maksymalnej wartości `uint256` powodowało przejście do zera, co atakujący wykorzystywali do generowania absurdalnych sald tokenów, jak w przypadku incydentu BeautyChain (BEC) w 2018 roku. Przez lata programiści chronili się przed tym, korzystając z biblioteki o nazwie SafeMath, która przez pewien czas była jednym z najczęściej importowanych plików w całym Solidity. Wersja 0.8 wbudowała w język sprawdzanie przepełnienia i niedopełnienia. Najczęstszy błąd arytmetyczny jest teraz domyślnie usuwany i nie wymaga dodatkowej biblioteki.
Audyty i ich koszty
Ponieważ błędy są trwałe, poważne projekty opłacają się za przegląd. Budują na audytowanych komponentach OpenZeppelin, a następnie zatrudniają firmy do audytu całego systemu. Profesjonalny audyt inteligentnych kontraktów kosztuje zazwyczaj od 25 000 do ponad 100 000 dolarów w przypadku protokołu DeFi, według danych rynkowych Sherlock , a audyty Solidity są zazwyczaj o 25 do 40 procent tańsze niż równoważne audyty Rust, po prostu ze względu na większą pulę talentów. Dobre firmy również mają rezerwacje. Protokół średniej wielkości może czekać tygodnie na slot, a potem kolejne tygodnie na raport. Nic z tego nie jest szybkie i nic z tego nie jest opcjonalne.
| Wrażliwość | Co idzie nie tak | Znany przypadek | Naprawić |
|---|---|---|---|
| Ponowne wejście | Ponowne wejście na połączenie zewnętrzne przed aktualizacją stanu | The DAO, 2016 | Sprawdzanie-efekty-interakcje |
| Przepełnienie całkowite | Arytmetyka przekroczyła swoje granice | BeautyChain (BEC), 2018 | Wbudowane kontrole (Solidity 0.8+) |
| Kontrola dostępu | Każdy może wywołać funkcję uprzywilejowaną | Różny | `onlyOwner` / strażnicy roli |
| Niesprawdzone połączenia zewnętrzne | Nieudane połączenie zignorowane, logika trwa | Różny | Sprawdź poprawność wartości zwracanych |
Dobra wiadomość jest taka, że skala tego zjawiska maleje. Straty kryptowalut z tytułu exploitów specyficznych dla DeFi spadły do około 680 milionów dolarów w 2025 roku, co stanowi spadek o około 74% w porównaniu z rekordem 2,62 miliarda dolarów w 2022 roku, według Immunefi . Lepsze narzędzia i wbudowane w kompilator mechanizmy bezpieczeństwa to jeden z powodów.

Solidity kontra inne języki inteligentnych kontraktów
Solidity ma rywali. Nie jest nawet najbezpieczniejszy. Vyper jest minimalistyczny i przypomina Pythona, celowo uproszczony, aby ograniczyć liczbę sposobów na odstrzelenie sobie stopy; Curve na nim działa. Rust napędza kontrakty w Solanie i NEAR, pod pewnymi względami bezpieczniejszy, ale trudniejszy do nauczenia i bardziej kosztowny w audycie. Dlaczego więc Solidity wciąż wygrywa? Nie projekt języka. Efekty sieciowe. Najgłębsze narzędzia, najczęściej audytowane biblioteki, cały ekosystem EVM łańcuchów i portfeli – wszystko to już przemawia za Solidity.
| Język | Więzy | Podstawa składni | Najlepszy dla | Kompromis |
|---|---|---|---|---|
| Solidność | Ethereum + wszystkie EVM | JavaScript/C++ | Maksymalny zasięg, dojrzałe narzędzia | Łatwo napisać niebezpieczny kod |
| Żmija | EVM | Pyton | Proste umowy o kluczowym znaczeniu dla bezpieczeństwa | Mniej funkcji, mniejsza społeczność |
| Rdza | Solana, BLISKO | Rdza | Wysoka wydajność, solidne bezpieczeństwo | Stroma krzywa, droższe audyty |
Jeśli chcesz iść tam, gdzie już są użytkownicy i pieniądze, Solidity jest pragmatycznym wyborem, nawet jeśli rywal jest technicznie bezpieczniejszy.
Czy warto uczyć się programowania Solidity w 2026?
Spekulacyjny szum wokół kryptowalut opadł, ale zapotrzebowanie na osoby potrafiące poprawnie pisać w Solidity pozostało. Według szacunków Electric Capital , Ethereum pozyskało około 16 181 nowych programistów między styczniem a wrześniem 2025 roku, a około 74 procent wszystkich programistów multi-chain pracuje nad łańcuchami EVM. To właśnie tam znajdują się płatne prace i biblioteki wielokrotnego użytku.
Rozsądna ścieżka nauki programowania w Solidity: zacznij od Remix, przeczytaj oficjalną dokumentację Solidity, a następnie przejrzyj kontrakty OpenZeppelin, aby zobaczyć, jak profesjonaliści strukturyzują tokeny i kontrolę dostępu. Wdrażaj małe projekty w sieci testowej, aż wzorce bezpieczeństwa będą wydawać się automatyczne, a nie wyuczone na pamięć. Nieliczną umiejętnością nie jest pisanie kodu w Solidity, który się kompiluje; wielu ludzi to potrafi. Programista Solidity otrzymuje wynagrodzenie za pisanie kodu, który przetrwa kontakt z przeciwnikiem – kimś, kto przeczytał twój kontrakt i ma na szali pieniądze.
Dlaczego Solidity pozostaje językiem domyślnym
Solidity jest domyślnym rozwiązaniem z konkretnego powodu, a nie z powodu szumu medialnego. Jest obecny w każdym łańcuchu EVM. Zawiera najbogatsze narzędzia. Jest obecny w większości DeFi i NFT. Ale pierwszą rzeczą, którą należy zrozumieć, nie jest składnia. Chodzi o to: w blockchainie wdrożony kod jest prawem, a błędy są wieczne. Ucz się języka i wzorców bezpieczeństwa razem, ponieważ tutaj nie da się ich rozdzielić. Uczciwy kolejny krok jest mały i darmowy. Otwórz Remix, napisz dziesięciowierszowy kontrakt i wdróż go w sieci testowej jeszcze w tym tygodniu.