Okosszerződés könyvtárak
Utolsó módosítás: @robertdosa(opens in a new tab), 2024. április 29.
Nem kell minden okosszerződést a nulláról megírni. Számos nyílt forráskódú okosszerződés könyvtár áll rendelkezésedre, amelyek újrafelhasználható építőelemeket kínálnak a projektedhez, így megkímélnek attól, hogy újra fel kelljen találni a kereket.
Előfeltételek
Mielőtt belevetnéd magad az okosszerződés könyvtárakba, érdemes tisztában lenned az okosszerződések felépítésével. Irány az okosszerződés anatómia cikk, ha még nem olvastad el.
Mi van egy könyvtárban
Az okosszerződés könyvtárakban általában kétféle építőelem található: újrafelhasználható eljárások, amelyeket hozzáadhatsz a szerződéseidhez, valamint különféle szabványok megvalósítása.
Eljárások
Okosszerződés írás közben jó esély van rá, hogy újra és újra hasonló minták megírásán találod magad, mint például hozzárendelsz egy admin címet védett operációk véghezviteléhez, vagy egy vészeseti szünet gombot adsz hozzá egy váratlan esemény miatt.
Az okosszerződéses könyvtárak általában ezeknek a viselkedéseknek az újrafelhasználható megvalósítását biztosítják könyvtárakon(opens in a new tab) vagy öröklésen keresztül(opens in a new tab) Solidity-ben.
Példaként az alábbiakban bemutatjuk az Ownable
szerződés(opens in a new tab) egyszerűsített verzióját az OpenZeppelin Szerződés könyvtárból(opens in a new tab), mely egy címet jelöl ki tulajdonosként a szerződésben, és egy módosítóval lekorlátozza az adott metódus hozzáférését az adott tulajdonosra.
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}Összes megjelenítéseMásolás
Egy ehhez hasonló építőelem használatához a szerződésedben, először be kell importálnod, majd kiterjesztened belőle a szerződéseidet. Ez lehetővé teszi az Ownable
szerződés által biztosított módosító használatát, hogy bebiztosítsd a saját függvényeidet.
1import ".../Ownable.sol"; // Az importált könyvtár útvonala23contract MyContract is Ownable {4 // Az alábbi függvényt csak a tulajdonos hívhatja meg5 function secured() onlyOwner public {6 msg.sender.transfer(1 ether);7 }8}Másolás
Egy másik népszerű példa a SafeMath(opens in a new tab) vagy a DsMath(opens in a new tab). Ezek olyan könyvtárak (szemben az alapszerződésekkel), amelyek számtani függvényeket biztosítanak túlcsordulás-ellenőrzésekkel, amelyeket a nyelv nem biztosít. Jó gyakorlat ezeknek a könyvtáraknak az alkalmazása a natív számtani műveletek helyett, hogy megvédd a szerződésed a túlcsordulástól, amelynek katasztrofális következményei lehetnek!
Szabványok
Hogy elősegítsük az összeilleszthetőséget és az interoperabilitást, az Ethereum közösség számos szabványt vezetett be ERC-k formájában. Többet olvashatsz róluk a szabványok részben.
Amikor egy ERC-t szeretne betenni a szerződésbe, célszerű sztenderd megvalósításokat keresni ahelyett, hogy megpróbálná a sajátját bevezetni. Számos okosszerződés könyvtár tartalmazza a legnépszerűbb ERC-k megvalósításait. Például a mindenütt jelen levő ERC20 felcserélhető tokenszabvány megtalálható a HQ20(opens in a new tab), DappSys(opens in a new tab) és OpenZeppelin(opens in a new tab) platformon. Ezenkívül, egyes ERC-k kanonikus megvalósításokat is biztosítanak az ERC részeként.
Érdemes megemlíteni, hogy egyes ERC-k nem önállóak, hanem kiegészítenek más ERC-ket. Például az ERC2612(opens in a new tab) kiterjeszti az ERC20-as szabványt a használhatóság javítása érdekében.
Hogyan lehet könyvtárt hozzáadni
Mindig nézd át a könyvtár dokumentációját, amit használsz a projektedben specifikus instrukciókért arról, hogyan kell használni. Számos Solidity szerződés könyvtár az npm
használatával van csomagolva, így elég csak npm install
módon telepíteni őket. A legtöbb szerződés fordító eszköz végig nézi a node_modules
mappát okosszerződés könyvtárak után kutatva, így megteheted a következőt:
1// Ez betölti az @openzeppelin/contracts könyvtárat a node_modules könyvtárból2import "@openzeppelin/contracts/token/ERC721/ERC721.sol";34contract MyNFT is ERC721 {5 constructor() ERC721("MyNFT", "MNFT") public { }6}Másolás
Az általad használt módszertől függetlenül, ha könyvtárat importálsz be, mindig ellenőrizd le a nyelv verziót. Például nem használhatsz könyvtárat a Solidity 0.6-hoz, ha a szerződéseidet a Solidity 0.5-ben írod.
Mikor használjuk
Egy okosszerződés könyvtár használatának számos előnye van. Először is, időt takarít meg azzal, hogy használatra kész építőelemeket biztosít, amelyeket beépíthetsz a rendszeredbe, ahelyett, hogy saját magadnak kellene leprogramozni őket.
A biztonság is egy fontos pozitívum. A nyílt forráskódú okosszerződés könyvtárakat gyakran alaposan megvizsgálják. Tekintettel arra, hogy sok projekt függ tőlük, a közösségnek erős ösztönzője van arra, hogy folyamatosan felülvizsgálja őket. Sokkal gyakrabban lehet hibákat találni az alkalmazáskódban, mint az újrafelhasználható szerződés könyvtárakban. Némely könyvtár külső auditnak(opens in a new tab) veti alá magát magasabb fokú biztonságért.
Az okosszerződés könyvtárak használata azonban azt a kockázatot hordozza magával, hogy számodra ismeretlen kódot veszel fel a projektbe. Csábító egy szerződést importálni és közvetlenül beilleszteni a projektbe, de anélkül, hogy megértenéd, hogy ez a szerződés mit csinál pontosan, véletlenül bevihetsz egy hibát a rendszerbe egy váratlan viselkedésből kifolyólag. Mindig feltétlenül olvasd el az importált kód dokumentációját, majd nézd át magát a kódot, mielőtt a projekt részévé tennéd!
Végül, amikor eldöntöd, hogy felveszel-e egy könyvtárat, vedd figyelembe annak általános használatát. Egy széles körben elfogadott szerződés előnye, hogy nagyobb a közössége, és többen tudnak foglalkozni a problémákkal. A biztonság legyen az elsődleges szempont okosszerződés fejlesztéskor!
Kapcsolódó eszközök
OpenZeppelin Contracts - A legnépszerűbb könyvtár biztonságos okosszerződés fejlesztéshez.
DappSys - Biztonságos, egyszerű, flexibilis okosszerződés építőelemek.
HQ20 - Egy Solidity projekt szerződésekkel, könyvtárakkal és példákkal, melyek segítenek teljesértékű alkalmazásokat fejleszteni a külvilágnak
thirdweb Solidity SDK – Olyan eszközöket biztosít, melyekkel hatékonyan lehet személyre szabott okosszerződéseket létrehozni
Kapcsolódó útmutatók
- Security considerations for Ethereum developers – Egy biztonsági megfontolásokról szóló útmutató okosszerződés-fejlesztéshez könyvtárhasználattal.
- Az ERC-20 tokenes okosszerződés megértése -Útmutató az ERC20 szabványról több könyvtáron keresztül.
További olvasnivaló
Van olyan közösségi erőforrása, amely segített Önnek? Szerkessze ezt az oldalt, és adja hozzá!