Přejít na hlavní obsah
Change page

Jazyk chytrých kontraktů

Poslední aktualizace stránky: 25. února 2026

Jednou z výhod Etherea je, že smart kontrakty lze programovat v relativně uživatelsky přívětivých programovacích jazycích. Pokud máte zkušenosti s Pythonem nebo jakýmkoli jazykem se složenými závorkami (opens in a new tab), můžete najít jazyk se známou syntaxí.

Dva nejaktivnější a nejvíce udržované jazyky jsou:

  • Solidity
  • Vyper

Remix IDE poskytuje komplexní vývojové prostředí pro vytváření a testování kontraktů jak v Solidity, tak ve Vyperu. Vyzkoušejte Remix IDE v prohlížeči (opens in a new tab) a začněte kódovat.

Zkušenější vývojáři mohou také chtít používat Yul, což je přechodný jazyk pro Ethereum Virtual Machine, nebo Yul+, rozšíření jazyka Yul.

Pokud jste zvědaví a rádi pomáháte testovat nové jazyky, které jsou stále ve fázi intenzivního vývoje, můžete experimentovat s Fe, nově vznikajícím jazykem pro smart kontrakty, který je v současnosti ještě v rané fázi.

Předpoklady

Předchozí znalosti programovacích jazyků, zejména JavaScriptu nebo Pythonu, vám mohou pomoci lépe porozumět rozdílům mezi jazyky pro smart kontrakty. Doporučujeme také, abyste nejprve pochopili koncept smart kontraktů, než se ponoříte do srovnání jazyků. Úvod do chytrých kontraktů.

Solidity

  • Objektově orientovaný, vysoce úrovňový jazyk pro implementaci chytrých kontraktů.
  • Jazyk se složenými závorkami, který je nejvíce ovlivněn jazykem C++.
  • Staticky typovaný (typ proměnné je znám v době kompilace).
  • Podporuje:
    • Dědičnost (můžete rozšiřovat jiné kontrakty).
    • Knihovny (můžete vytvářet opakovaně použitelný kód, který můžete volat z různých kontraktů – podobně jako statické funkce ve statické třídě v jiných objektově orientovaných programovacích jazycích).
    • Komplexní uživatelem definované typy.

Příklad kontraktu

Tento příklad by vám měl poskytnout představu o tom, jaká je syntaxe kontraktů v Solidity. Podrobnější popis funkcí a proměnných naleznete v dokumentaci (opens in a new tab).

Vyper

  • Pythonický programovací jazyk
  • Silné typování
  • Malý a srozumitelný kompilátor
  • Efektivní generování bytekódu
  • Úmyslně má méně funkcí než Solidity s cílem učinit kontrakty bezpečnějšími a snáze auditovatelnými. Vyper nepodporuje:
    • Modifikátory
    • Dědičnost
    • Inline sestavení (assembly)
    • Přetěžování funkcí
    • Přetěžování operátorů
    • Rekurzivní volání
    • Nekonečné smyčky
    • Binární pevné body

Pro více informací si přečtěte Vyper rationale (opens in a new tab).

Příklad

Tento příklad by vám měl poskytnout představu o tom, jaká je syntaxe kontraktů ve Vyperu. Podrobnější popis funkcí a proměnných najdete v dokumentaci (opens in a new tab).

Yul a Yul+

Pokud jste v Ethereum nováčkem a ještě jste neprogramovali v jazycích pro smart kontrakty, doporučujeme začít se Solidity nebo Vyperem. Na Yul nebo Yul+ se zaměřte až poté, co si osvojíte osvědčené postupy v oblasti bezpečnosti smart kontraktů a specifika práce s EVM.

Yul

  • Pokročilý jazyk pro Ethereum.
  • Podporuje EVM a Ewasm (opens in a new tab), což je varianta WebAssembly pro Ethereum, a je navržen tak, aby byl použitelným společným jmenovatelem obou platforem.
  • Dobrá volba pro optimalizační fáze na vyšší úrovni, které mohou mít stejný přínos jak pro platformy EVM, tak pro Ewasm.

Yul+

  • Nízkoúrovňové, vysoce efektivní rozšíření Yulu.
  • Původně navrženo pro kontrakt optimistického rollupu.
  • Yul+ lze považovat za experimentální návrh upgradu Yul, který do něj přidává nové funkce.

Příklad kontraktu

Následující jednoduchý příklad implementuje funkci mocniny. Lze jej zkompilovat pomocí solc --strict-assembly --bin input.yul. Příklad by měl být uložen v souboru input.yul.

Pokud již máte se smart kontrakty bohaté zkušenosti, úplnou implementaci ERC20 v jazyce Yul naleznete zde (opens in a new tab).

Fe

  • Staticky typovaný jazyk pro Virtuální stroj Etherea (EVM).
  • Inspirován jazyky Python a Rust.
  • Cílem je, aby byl snadno naučitelný – i pro vývojáře, kteří jsou v ekosystému Ethereum noví.
  • Vývoj Fe je stále v raných fázích, první alfa verze jazyka byla vydána v lednu 2021.

Příklad kontraktu

Následuje jednoduchý kontrakt implementovaný v jazyce Fe.

Jak si vybrat

Stejně jako u jakéhokoli jiného programovacího jazyka jde především o výběr správného nástroje pro daný úkol a o osobní preference.

Uvádíme několik věcí, které byste měli zvážit, pokud jste ještě žádný z jazyků nezkusili:

Co je skvělé na Solidity?

  • Pokud jste začátečník, najdete mnoho tutoriálů a vzdělávacích nástrojů. Více se o tom dozvíte v sekci Učte se kódováním.
  • K dispozici je dobrá sada nástrojů pro vývojáře.
  • Solidity má velkou vývojářskou komunitu, což znamená, že na případné otázky pravděpodobně najdete odpovědi poměrně rychle.

Co je skvělé na Vyperu?

  • Skvělý na začátek pro Python vývojáře, kteří chtějí psát chytré kontrakty.
  • Vyper má menší počet funkcí, což ho činí skvělým pro rychlé prototypování nápadů.
  • Vyper usiluje o snadnou auditovatelnost a maximální čitelnost pro lidské bytosti.

Co je skvělé na Yul a Yul+?

  • Jednoduchý a funkční nízkoúrovňový jazyk.
  • Umožňuje dostat se mnohem blíže k surovému EVM, což vám může pomoci s optimalizací spotřeby paliva vašich kontraktů.

Srovnání jazyků

Pro srovnání základní syntaxe, životního cyklu kontraktů, rozhraní, operátorů, datových struktur, funkcí, řízení toku a dalšího se podívejte na tento tahák od Auditless (opens in a new tab)

Další čtení

Byl tento článek užitečný?