کتابخانه ها در سالیدیتی شبیه قراردادهایی هستند که حاوی کدهای قابل استفاده مجدد هستند. یک کتابخانه دارای عملکردهایی است که می توان آنها را با قراردادهای دیگر فراخوانی کرد. استقرار یک کد مشترک با ایجاد یک کتابخانه هزینه گاز را کاهش می دهد.
توابع کتابخانه را می توان مستقیماً فراخوانی کرد وقتی که متغیرهای حالت را تغییر ندهند، یعنی فقط توابع خالص و view را می توان از خارج از کتابخانه فراخوانی کرد. نمی توان آن را از بین برد زیرا بی تابعیت فرض می شود. کتابخانه دارای متغیرهای حالت نیست، نمی تواند هیچ عنصری را به ارث ببرد و نمی تواند به ارث برسد.
پیشنهاد ویژه: آموزش سالیدیتی
قرارداد کتابخانه ای با استفاده از کلمه کلیدی کتابخانه به جای قرارداد عمومی تعریف می شود. کتابخانهها هیچ فضای ذخیرهسازی ندارند، بنابراین نمیتوانند متغیرهای حالت را نگه دارند، توابع بازگشتی یا قابل پرداخت نیز نمیتوانند در داخل کتابخانه ایجاد شوند، زیرا نمیتوانند اترها را ذخیره کنند. کتابخانه ها برای تغییر وضعیت قرارداد نیستند، فقط می توان از آن برای انجام عملیات اساسی بر اساس ورودی ها و خروجی ها استفاده کرد. با این حال میتواند برخی از انواع دادهها مانند struct و enums را که توسط کاربر تعریف شدهاند و متغیرهای ثابتی که در پشتهای از اتریوم ذخیره میشوند، نه در ذخیرهسازی، پیادهسازی کند.
مثال: در مثال زیر، library libraryExample برای نشان دادن روند ایجاد یک کتابخانه ایجاد شده است.
دیپلوی کتابخانه با استفاده از کلمه کلیدی “For”.
یک کتابخانه را می توان بر روی همان قرارداد تعریف کرد و همچنین می توان آن را از خارج با استفاده از دستورهای import وارد کرد.
مثال:
یک فایل تکی میتواند شامل چندین کتابخانه باشد که با استفاده از کرلیبریس (آکولاد) در دستور import که با کاما از هم جدا شدهاند، مشخص شوند.
با استفاده از کلمه کلیدی “for” می توان به کتابخانه در قرارداد هوشمند دسترسی داشت.
دستور بالا را می توان برای پیوست کردن توابع کتابخانه به هر نوع استفاده کرد. libraryName نام کتابخانه مورد نظر برای وارد کردن است، dataType نوع متغیری است که میخواهیم به کتابخانه دسترسی پیدا کنیم. همه اعضای کتابخانه می توانند توسط عملگر wildcard (*) نیز استفاده شوند.
مثال: در مثال زیر، قرارداد libraryExample برای نشان دادن نحوه استقرار یک کتابخانه با استفاده از کلمه کلیدی “For” ایجاد شده است.
پیشنهاد مطالعه: بلاکچین به زبان ساده
Solidity چند کتابخانه آماده برای سهولت کاربران دارد.
برخی از کتابخانه ها در زیر فهرست شده اند:
Modular network: این شامل بسیاری از کتابخانه های مدولار است که برای پیاده سازی بسیار مفید هستند مانند ArrayUtils، Token، CrowdSale، Vesting، StringUtils، LinkedList، Wallet و غیره.
OpenZeppelin: سایر کتابخانه های پشتیبانی Roles، MerkleProof، ECDSA، Math، Address، SafeERC20، ERC165Checker، SafeMath، Arrays و غیره هستند که از سرریز شدن محافظت می کند.
Dapp-bin: ایجاد شده توسط اتریوم شامل کتابخانه های جالب و مفیدی مانند DoublyLinkedList، StringUtils، IterableMapping و غیره است.