Przejdź do głównej treści
Change page

Języki inteligentnego kontraktu

Ostatnia aktualizacja strony: 25 lutego 2026

Świetnym aspektem Ethereum jest to, że inteligentne kontrakty można programować przy użyciu stosunkowo przyjaznych dla programistów języków. Jeśli masz doświadczenie w Pythonie lub jakimkolwiek języku z nawiasami klamrowymi (opens in a new tab), możesz znaleźć język o znajomej składni.

Dwa najbardziej aktywne i obsługiwane języki to:

  • Solidity
  • Vyper

Remix IDE zapewnia kompleksowe środowisko programistyczne do tworzenia i testowania kontraktów zarówno w Solidity, jak i Vyper. Wypróbuj Remix IDE w przeglądarce (opens in a new tab), aby zacząć kodować.

Bardziej doświadczeni programiści mogą również chcieć użyć Yul, języka pośredniego dla Wirtualnej Maszyny Ethereum, lub Yul+, rozszerzenia Yul.

Jeśli jesteś ciekawy i chcesz pomóc w testowaniu nowych języków, które wciąż są w fazie intensywnego rozwoju, możesz poeksperymentować z Fe, nowym językiem inteligentnych kontraktów, który obecnie jest jeszcze w początkowej fazie rozwoju.

Wymagania wstępne

Wcześniejsza znajomość języków programowania, zwłaszcza JavaScript lub Python, może pomóc w zrozumieniu różnic w językach inteligentnych kontraktów. Zalecamy również zrozumienie inteligentnych kontraktów jako koncepcji przed zbytnim zagłębieniem się w porównania języków. Wprowadzenie do inteligentnych kontraktów.

Solidity

  • Obiektowy język wysokiego poziomu do implementacji inteligentnych kontraktów.
  • Język z nawiasami klamrowymi, na który największy wpływ miał C++.
  • Typowanie statyczne (typ zmiennej jest znany w czasie kompilacji).
  • Obsługuje:
    • Dziedziczenie (możesz rozszerzać inne kontrakty).
    • Biblioteki (możesz utworzyć kod wielokrotnego użytku, który można wywoływać z różnych kontraktów — jak funkcje statyczne w klasie statycznej w innych językach programowania obiektowego).
    • Złożone typy zdefiniowane przez użytkownika.

Przykładowy kontrakt

Ten przykład powinien dać wyobrażenie o składni kontraktu Solidity. Aby uzyskać bardziej szczegółowy opis funkcji i zmiennych, zobacz dokumentację (opens in a new tab).

Vyper

  • Pythonowy język programowania
  • Silne typowanie
  • Niewielki i zrozumiały kod kompilatora
  • Efektywne generowanie kodu bajtowego
  • Celowo ma mniej funkcji niż Solidity, aby zwiększyć bezpieczeństwo kontraktów i ułatwić ich audyt. Nieobsługiwane przez Vyper:
    • Modyfikatory
    • Dziedziczenie
    • Wbudowany asembler
    • Przeciążenie funkcji
    • Przeciążenie operatora
    • Wywołania rekurencyjne
    • Pętle o nieskończonej długości
    • Binarne punkty stałe

Aby uzyskać więcej informacji, przeczytaj uzasadnienie Vyper (opens in a new tab).

Przykład

Ten przykład powinien dać wyobrażenie o składni kontraktu Vyper. Aby uzyskać bardziej szczegółowy opis funkcji i zmiennych, zobacz dokumentację (opens in a new tab).

Yul i Yul+

Jeśli dopiero zapoznajesz się z Ethereum i nie kodowałeś jeszcze w językach inteligentnych kontraktów, zalecamy rozpoczęcie od Solidity lub Vyper. Przyjrzyj się Yul lub Yul+ dopiero po zapoznaniu się z najlepszymi praktykami w zakresie bezpieczeństwa inteligentnych kontraktów i specyfiką pracy z EVM.

Yul

  • Język pośredni dla Ethereum.
  • Obsługuje EVM i Ewasm (opens in a new tab), czyli WebAssembly w stylu Ethereum, i jest zaprojektowany jako użyteczny wspólny mianownik dla obu platform.
  • Dobry cel dla etapów optymalizacji wysokiego poziomu, które mogą przynieść korzyści zarówno platformom EVM, jak i Ewasm.

Yul+

  • Niskopoziomowe, bardzo wydajne rozszerzenie do Yul.
  • Początkowo zaprojektowany dla kontraktu rollup optymistyczny.
  • Yul+ można postrzegać jako eksperymentalną propozycję ulepszenia Yul, dodającą do niego nowe funkcje.

Przykładowy kontrakt

Poniższy prosty przykład implementuje funkcję potęgową. Można go skompilować za pomocą solc --strict-assembly --bin input.yul. Przykład należy zapisać w pliku input.yul.

Jeśli masz już duże doświadczenie z inteligentnymi kontraktami, pełną implementację ERC20 w Yul można znaleźć tutaj (opens in a new tab).

Fe

  • Statycznie typowany język dla maszyny wirtualnej Ethereum (EVM).
  • Zainspirowany Pythonem i Rustem.
  • Ma być łatwy do nauczenia — nawet dla deweloperów, którzy są nowicjuszami w ekosystemie Ethereum.
  • Rozwój Fe jest wciąż na wczesnym etapie, język miał swoją wersję alfa w styczniu 2021 roku.

Przykładowy kontrakt

Poniżej znajduje się prosty kontrakt zaimplementowany w Fe.

Jak wybrać

Podobnie jak w przypadku każdego innego języka programowania, najczęściej chodzi o wybór odpowiedniego narzędzia do danej pracy, jak również o osobiste preferencje.

Oto kilka rzeczy do rozważenia, jeśli nie próbowałeś jeszcze żadnego z języków:

Co jest wspaniałego w Solidity?

  • Jeśli dopiero zaczynasz, jest tam wiele samouczków i narzędzi do nauki. Zobacz więcej na ten temat w sekcji Nauka przez kodowanie.
  • Dostępne dobre narzędzia programistyczne.
  • Solidity ma dużą społeczność programistów, co oznacza, że ​​najprawdopodobniej szybko znajdziesz odpowiedzi na swoje pytania.

Co jest wspaniałego w Vyper?

  • Świetny sposób na rozpoczęcie pracy dla programistów Pythona, którzy chcą pisać inteligentne kontrakty.
  • Vyper ma mniejszą liczbę funkcji, dzięki czemu świetnie nadaje się do szybkiego prototypowania pomysłów.
  • Vyper ma być łatwy do skontrolowania i w największym stopniu czytelny dla człowieka.

Co jest wspaniałego w Yul i Yul+?

  • Uproszczony i funkcjonalny język niskiego poziomu.
  • Pozwala zbliżyć się do pierwotnej EVM, co może pomóc zoptymalizować zużycie gazu w Twoich kontraktach.

Porównania języków

Aby porównać podstawową składnię, cykl życia kontraktu, interfejsy, operatory, struktury danych, funkcje, przepływ sterowania i nie tylko, sprawdź tę ściągawkę od Auditless (opens in a new tab)

Dalsza lektura

Czy ten artykuł był pomocny?