Knihovny smart kontraktů
Stránka naposledy aktualizována: 21. srpna 2025
Ve svém projektu nemusíte psát každý smart kontrakt od nuly. Existuje mnoho open-source knihoven smart kontraktů, které poskytují znovupoužitelné stavební bloky pro váš projekt, což vám může ušetřit čas a práci s vymýšlením již existujících řešení.
Předpoklady
Než se ponoříte do knihoven smart kontraktů, je dobré mít pevné základy ve struktuře smart kontraktů. Pokud jste tak ještě neučinili, přejděte na anatomii chytrých kontraktů.
Co je obsahem knihovny
V knihovnách smart kontraktů obvykle najdete dva druhy stavebních bloků: znovupoužitelné akce, které můžete přidat ke svým kontraktům, a implementace různých standardů.
Chování
Při psaní chytrých kontraktů se vám může stát, že budete opakovaně psát podobné vzory, jako je přiřazení admin adresy pro provádění chráněných operací v kontraktu nebo přidání tlačítka pro nouzové pozastavení v případě neočekávaného problému.
Knihovny chytrých kontraktů obvykle poskytují znovupoužitelné implementace tohoto chování jako knihovny (opens in a new tab) nebo prostřednictvím dědičnosti (opens in a new tab) v Solidity.
Jako příklad následuje zjednodušená verze Ownable kontraktu (opens in a new tab) z knihovny OpenZeppelin Contracts (opens in a new tab), která určí adresu jako vlastníka kontraktu a poskytne modifikátor pro omezení přístupu k metodě pouze tomuto vlastníkovi.
1contract Ownable {2 address public owner;34 constructor() internal {5 owner = msg.sender;6 }78 modifier onlyOwner() {9 require(owner == msg.sender, "Ownable: caller is not the owner");10 _;11 }12}Zobrazit všeAbyste mohli ve svém smart kontraktu použít takovýto stavební blok, musíte jej nejprve importovat a následně jej ve svých vlastních kontraktech rozšířit (dědit z něj). To vám umožní použít modifikátor poskytnutý základním kontraktem Ownable k zabezpečení vašich vlastních funkcí.
1import ".../Ownable.sol"; // Cesta k importované knihovně23contract MyContract is Ownable {4 // Následující funkci může volat pouze vlastník5 function secured() onlyOwner public {6 msg.sender.transfer(1 ether);7 }8}Dalším populárním příkladem je SafeMath (opens in a new tab) nebo DsMath (opens in a new tab). Jedná se o knihovny (na rozdíl od základních kontraktů), které poskytují aritmetické funkce s kontrolami přetečení, což jazyk samotný nenabízí. Je dobrým zvykem používat některou z těchto knihoven místo nativních aritmetických operací, aby byl váš smart kontrakt chráněn před přetečeními, která mohou mít katastrofální následky!
Standardy
Aby se usnadnila skladatelnost a interoperabilita, komunita Etherea definovala několik standardů ve formě ERC. Více si o nich můžete přečíst v sekci standardy.
Pokud zahrnete ERC do svých smart kontraktů, je dobré hledat standardní implementace místo toho, abyste se snažili vytvořit vlastní. Spousta knihoven smart kontraktů zahrnuje implementace pro nejpopulárnější ERC. Například všudypřítomný standard zaměnitelných tokenů ERC20 lze nalézt v HQ20 (opens in a new tab), DappSys (opens in a new tab) a OpenZeppelin (opens in a new tab). Navíc některé ERC poskytují kanonické implementace jako součást samotného standardu.
Stojí za zmínku, že některé ERC nejsou samostatné, ale jsou rozšířením jiných ERC. Například ERC2612 (opens in a new tab) přidává rozšíření k ERC20 pro zlepšení jeho použitelnosti.
Jak přidat knihovnu
Vždy se řiďte dokumentací knihovny, kterou přidáváte, kde najdete konkrétní instrukce, jak ji zahrnout do svého projektu. Řada knihoven pro chytré kontrakty v Solidity je zabalena pomocí npm, takže je můžete jednoduše nainstalovat pomocí příkazu npm install. Většina nástrojů pro kompilaci kontraktů prohledá vaši složku node_modules, aby našla knihovny chytrých kontraktů, takže můžete postupovat následovně:
1// Tímto se načte knihovna @openzeppelin/contracts z vaší složky node_modules2import "@openzeppelin/contracts/token/ERC721/ERC721.sol";34contract MyNFT is ERC721 {5 constructor() ERC721("MyNFT", "MNFT") public { }6}Bez ohledu na to, jakou metodu používáte, při zahrnutí knihovny vždy sledujte verzi jazyka. Například nemůžete použít knihovnu pro Solidity 0.6, pokud píšete své smart kontrakty v Solidity 0.5.
Kdy použít
Použití knihovny smart kontraktů přináší vašemu projektu několik výhod. Především vám ušetří čas tím, že poskytne hotové stavební bloky, které můžete zahrnout do svého systému, místo abyste je museli programovat sami.
Bezpečnost je také velkým přínosem. Open source knihovny smart kontraktů jsou často podrobeny přísné kontrole. Vzhledem k tomu, že na nich závisí mnoho projektů, je komunita silně motivována je neustále kontrolovat. Mnohem častěji lze najít chyby v aplikačním kódu než v knihovnách pro znovupoužitelné smart kontrakty. Některé knihovny také procházejí externími audity (opens in a new tab) pro zvýšení bezpečnosti.
Nicméně používání knihoven smart kontraktů nese riziko, že do vašeho projektu zahrnete kód, se kterým nejste obeznámeni. Je lákavé importovat kontrakt a přímo jej zahrnout do vašeho projektu, ale bez perfektního porozumění tomu, co tento kontrakt dělá, můžete neúmyslně do systému zavést neočekávané chování a tím si zadělat na problémy. Vždy si předtím, než kód zahrnete do svého projektu, přečtěte jeho dokumentaci a poté si kód sami prohlédněte!
Nakonec při rozhodování, zda zahrnout knihovnu, zvažte její celkové použití. Široce adoptovaná knihovna má výhodu větší komunity, což znamená více lidí, kteří do ní nahlížejí a hledají problémy. Bezpečnost by měla být při vytváření smart kontraktů vaší hlavní prioritou!
Související nástroje
OpenZeppelin Contracts - Nejoblíbenější knihovna pro bezpečný vývoj chytrých kontraktů.
DappSys - Bezpečné, jednoduché a flexibilní stavební bloky pro chytré kontrakty.
HQ20 - Projekt v Solidity s kontrakty, knihovnami a příklady, které vám pomohou vytvořit plně funkční distribuované aplikace pro reálný svět.
thirdweb Solidity SDK - Poskytuje nástroje potřebné pro efektivní vytváření vlastních chytrých kontraktů
Související návody
- Bezpečnostní aspekty pro vývojáře na Ethereu – Tutoriál o bezpečnostních aspektech při vytváření chytrých kontraktů, včetně použití knihoven.
- Pochopení chytrého kontraktu tokenu ERC-20 – Tutoriál o standardu ERC20, poskytovaný několika knihovnami.
Další čtení
Víte o komunitním zdroji, který vám pomohl? Upravte tuto stránku a přidejte ho!