Přejít na hlavní obsah
Change page

Jazyky pro chytré kontrakty

Skvělou vlastností Etherea je, že chytré kontrakty lze programovat pomocí jazyků, které jsou pro vývojáře poměrně přívětivé. Pokud máte zkušenosti s Pythonem nebo jakýmkoli jazykem se složenými závorkami (opens in a new tab), najdete zde jazyk se známou syntaxí.

Dva nejaktivnější a nejudržovanější jazyky jsou:

  • Solidity
  • Vyper

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

Zkušenější vývojáři mohou také chtít použít Yul, mezijazyk pro Ethereum Virtual Machine, nebo Yul+, což je 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 chytré kontrakty, který je v současné době stále v plenkách.

Předpoklady

Předchozí znalost programovacích jazyků, zejména JavaScriptu nebo Pythonu, vám může pomoci pochopit rozdíly v jazycích pro chytré kontrakty. Než se ponoříte příliš hluboko do srovnávání jazyků, doporučujeme vám také porozumět chytrým kontraktům jako konceptu. Úvod do chytrých kontraktů.

Solidity

  • Objektově orientovaný vysokoúrovňový jazyk pro implementaci chytrých kontraktů.
  • Jazyk se složenými závorkami, který byl 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 znovupoužitelný kód, který lze 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živatelsky definované typy.

Příklad kontraktu

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

Vyper

  • Programovací jazyk v pythonovském stylu
  • Silné typování
  • Malý a srozumitelný kód kompilátoru
  • Efektivní generování bajtkódu
  • Záměrně 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
    • Vložený (inline) assembly
    • Přetěžování funkcí
    • Přetěžování operátorů
    • Rekurzivní volání
    • Smyčky nekonečné délky
    • Binární pevnou řádovou čárku

Pro více informací si přečtěte zdůvodnění návrhu jazyka Vyper (opens in a new tab).

Příklad

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

Yul a Yul+

Pokud jste v Ethereu nováčkem a ještě jste neprogramovali v žádném jazyce pro chytré kontrakty, doporučujeme začít se Solidity nebo Vyperem. Yul nebo Yul+ prozkoumejte až tehdy, když budete obeznámeni s osvědčenými postupy zabezpečení chytrých kontraktů a specifiky práce s EVM.

Yul

  • Mezijazyk pro Ethereum.
  • Podporuje EVM a Ewasm (opens in a new tab), což je WebAssembly přizpůsobené pro Ethereum, a je navržen tak, aby byl použitelným společným jmenovatelem obou platforem.
  • Dobrý cíl pro vysokoúrovňové fáze optimalizace, ze kterých mohou těžit platformy EVM i Ewasm stejnou měrou.

Yul+

  • Nízkoúrovňové, vysoce efektivní rozšíření jazyka Yul.
  • Původně navrženo pro kontrakt typu optimistický rollup.
  • Na Yul+ lze pohlížet jako na experimentální návrh upgradu jazyka 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 s chytrými kontrakty bohaté zkušenosti, plnou implementaci ERC-20 v jazyce Yul najdete zde (opens in a new tab).

Fe

  • Staticky typovaný jazyk pro Ethereum Virtual Machine (EVM).
  • Inspirováno jazyky Python a Rust.
  • Klade si za cíl být snadno naučitelný – a to i pro vývojáře, kteří jsou v ekosystému Etherea nováčky.
  • Vývoj jazyka Fe je stále v rané fázi, jazyk měl svou alfa verzi 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 danou práci a také o osobní preference.

Zde je několik věcí, které byste měli zvážit, pokud jste ještě žádný z těchto jazyků nevyzkoušeli:

Co je skvělé na Solidity?

  • Pokud jste začátečník, existuje mnoho tutoriálů a výukových nástrojů. Více se o tom dozvíte v sekci Učte se programováním.
  • K dispozici jsou dobré vývojářské nástroje.
  • Solidity má velkou komunitu vývojářů, což znamená, že s největší pravděpodobností najdete odpovědi na své otázky poměrně rychle.

Co je skvělé na Vyperu?

  • Skvělý způsob, jak začít pro vývojáře v Pythonu, kteří chtějí psát chytré kontrakty.
  • Vyper má menší počet funkcí, což z něj dělá skvělý nástroj pro rychlé prototypování nápadů.
  • Vyper si klade za cíl být snadno auditovatelný a maximálně čitelný pro lidi.

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

  • Zjednodušený a funkční nízkoúrovňový jazyk.
  • Umožňuje dostat se mnohem blíže k samotnému EVM, což může pomoci optimalizovat spotřebu gasu vašich kontraktů.

Srovnání jazyků

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

Další čtení