Czym jest Solidity? Język programowania inteligentnych kontraktów

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.

czym jest solidność

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.

czym jest solidność

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.

Jakieś pytania?

Nie chodzi o składnię. Jeśli już kodujesz, weekend wystarczy; to jak z JavaScriptem i C++. Najtrudniejsze jest nastawienie. Koszty paliwa. Niezmienność. Wzorce bezpieczeństwa. Ludzie szybko uczą się Solidity, a potem latami uczą się pisać w nim bezpiecznie.

Głównie JavaScript i C++. Nawiasy klamrowe, średniki, cała ta rodzina. Python ukształtował kilka pomysłów, ale Solidity jest statycznie typowany, więc deklaruje się typy z góry. Wolisz opcję autentycznie w stylu Pythona? To Vyper, a nie Solidity.

Podstawy, tak. Czym jest transakcja. Co robi gaz. Dlaczego blockchain jest zdecentralizowany. Nie potrzebujesz matematyki konsensusu pod maską. Jedna idea jest ważniejsza niż wszystkie inne: wdrożony kod jest publiczny i trwały. Zrozum to, a reszta przyjdzie sama.

Solidity to język, w którym piszesz. Maszyna wirtualna Ethereum to silnik, który go uruchamia. Twój kompilator zamienia plik `.sol` na bajtkod EVM, a każdy węzeł wykonuje ten bajtkod na własnej maszynie EVM. Jedno to źródło. Drugie to maszyna.

Tak, prawie wszędzie. Działa na każdym blockchainie kompatybilnym z EVM: Polygon, BNB Chain, Arbitrum, Base, Avalanche. ChainList liczy ponad 385 takich sieci. Ten zasięg jest głównym powodem, dla którego umiejętności Solidity rozprzestrzeniają się po całej branży, zamiast ograniczać Cię do jednego łańcucha.

Tak. Ethereum dodało ponad 16 000 programistów w ciągu pierwszych dziewięciu miesięcy 2025 roku, a większość programistów wielokanałowych tworzy w sieciach EVM. Audytowani inżynierowie Solidity są rzadkością w porównaniu z wartością ich kontraktów. Taka rzadkość utrzymuje wysokie wynagrodzenia. ---

Ready to Get Started?

Create an account and start accepting payments – no contracts or KYC required. Or, contact us to design a custom package for your business.

Make first step

Always know what you pay

Integrated per-transaction pricing with no hidden fees

Start your integration

Set up Plisio swiftly in just 10 minutes.