Přejít na hlavní obsah
Change page

Úvod do chytrých kontraktů

Co je to chytrý kontrakt?

„Chytrý kontrakt“ je jednoduše program, který běží na blockchainu Etherea. Je to sbírka kódu (jeho funkcí) a dat (jeho stavu), která se nachází na konkrétní adrese na blockchainu Etherea.

Chytré kontrakty jsou typem účtu na Ethereu. To znamená, že mají zůstatek a mohou být cílem transakcí. Nejsou však ovládány uživatelem, místo toho jsou nasazeny do sítě a běží podle naprogramování. Uživatelské účty pak mohou s chytrým kontraktem interagovat odesíláním transakcí, které spustí funkci definovanou v chytrém kontraktu. Chytré kontrakty mohou definovat pravidla, podobně jako běžný kontrakt, a automaticky je vynucovat prostřednictvím kódu. Chytré kontrakty nelze ve výchozím nastavení smazat a interakce s nimi jsou nevratné.

Předpoklady

Pokud teprve začínáte nebo hledáte méně technický úvod, doporučujeme náš úvod do chytrých kontraktů.

Než se vrhnete do světa chytrých kontraktů, ujistěte se, že jste si přečetli o účtech, transakcích a virtuálním stroji Etherea.

Digitální prodejní automat

Asi nejlepší metaforou pro chytrý kontrakt je prodejní automat, jak jej popsal Nick Szabo (opens in a new tab). Se správnými vstupy je zaručen určitý výstup.

Chcete-li získat svačinu z prodejního automatu:

peníze + výběr svačiny = vydaná svačina

Tato logika je naprogramována v prodejním automatu.

Chytrý kontrakt má, podobně jako prodejní automat, naprogramovanou logiku. Zde je jednoduchý příklad toho, jak by tento prodejní automat vypadal, kdyby to byl chytrý kontrakt napsaný v jazyce Solidity:

Stejně jako prodejní automat odstraňuje potřebu zaměstnance prodejce, mohou chytré kontrakty nahradit zprostředkovatele v mnoha odvětvích.

Nevyžadující povolení

Kdokoli může napsat chytrý kontrakt a nasadit jej do sítě. Stačí se jen naučit programovat v jazyce pro chytré kontrakty a mít dostatek ETH na nasazení vašeho kontraktu. Nasazení chytrého kontraktu je technicky vzato transakce, takže musíte zaplatit gas stejným způsobem, jako musíte platit gas za jednoduchý převod ETH. Náklady na gas pro nasazení kontraktu jsou však mnohem vyšší.

Ethereum má pro psaní chytrých kontraktů jazyky přívětivé pro vývojáře:

  • Solidity
  • Vyper

Více o jazycích

Před nasazením však musí být zkompilovány, aby virtuální stroj Etherea mohl kontrakt interpretovat a uložit. Více o kompilaci

Skládatelnost

Chytré kontrakty jsou na Ethereu veřejné a lze je považovat za otevřená API. To znamená, že ve svém vlastním chytrém kontraktu můžete volat jiné chytré kontrakty, a tím výrazně rozšířit to, co je možné. Kontrakty mohou dokonce nasazovat další kontrakty.

Zjistěte více o skládatelnosti chytrých kontraktů.

Omezení

Samotné chytré kontrakty nemohou získávat informace o událostech v „reálném světě“, protože nemohou načítat data z offchain zdrojů. To znamená, že nemohou reagovat na události v reálném světě. To je záměr. Spoléhání se na externí informace by mohlo ohrozit konsensus, který je důležitý pro bezpečnost a decentralizaci.

Pro blockchainové aplikace je však důležité, aby mohly využívat offchain data. Řešením jsou orákula, což jsou nástroje, které přijímají offchain data a zpřístupňují je chytrým kontraktům.

Dalším omezením chytrých kontraktů je maximální velikost kontraktu. Chytrý kontrakt může mít maximálně 24 KB, jinak mu dojde gas. To lze obejít pomocí vzoru Diamond (opens in a new tab).

Multisig kontrakty

Multisig kontrakty (s vícenásobným podpisem) jsou účty chytrých kontraktů, které k provedení transakce vyžadují více platných podpisů. To je velmi užitečné pro zamezení jediným bodům selhání u kontraktů, které drží značné množství etheru nebo jiných tokenů. Multisig kontrakty také rozdělují odpovědnost za provádění kontraktu a správu klíčů mezi více stran a zabraňují tomu, aby ztráta jednoho soukromého klíče vedla k nevratné ztrátě prostředků. Z těchto důvodů lze multisig kontrakty použít pro jednoduchou správu DAO. Multisig kontrakty vyžadují k provedení N podpisů z M možných přijatelných podpisů (kde N ≤ M a M > 1). Běžně se používají N = 3, M = 5 a N = 4, M = 7. Multisig 4/7 vyžaduje čtyři ze sedmi možných platných podpisů. To znamená, že prostředky jsou stále dostupné, i když se ztratí tři podpisy. V tomto případě to také znamená, že většina držitelů klíčů musí souhlasit a podepsat, aby se kontrakt mohl provést.

Zdroje o chytrých kontraktech

OpenZeppelin Contracts - Knihovna pro bezpečný vývoj chytrých kontraktů.

Další čtení

Návody: Podpisy chytrých kontraktů (EIP-1271) na Ethereu