کتابخانه ها در سالیدیتی

کتابخانه ها در سالیدیتی

کتابخانه ها در سالیدیتی شبیه قراردادهایی هستند که حاوی کدهای قابل استفاده مجدد هستند. یک کتابخانه دارای عملکردهایی است که می توان آنها را با قراردادهای دیگر فراخوانی کرد. استقرار یک کد مشترک با ایجاد یک کتابخانه هزینه گاز را کاهش می دهد.

توابع کتابخانه را می توان مستقیماً فراخوانی کرد وقتی که متغیرهای حالت را تغییر ندهند، یعنی فقط توابع خالص و view را می توان از خارج از کتابخانه فراخوانی کرد. نمی توان آن را از بین برد زیرا بی تابعیت فرض می شود. کتابخانه دارای متغیرهای حالت نیست، نمی تواند هیچ عنصری را به ارث ببرد و نمی تواند به ارث برسد.

پیشنهاد ویژه: آموزش سالیدیتی

ایجاد کتابخانه در برنامه نویسی بلاکچین سالیدیتی

قرارداد کتابخانه ای با استفاده از کلمه کلیدی کتابخانه به جای قرارداد عمومی تعریف می شود. کتابخانه‌ها هیچ فضای ذخیره‌سازی ندارند، بنابراین نمی‌توانند متغیرهای حالت را نگه دارند، توابع بازگشتی یا قابل پرداخت نیز نمی‌توانند در داخل کتابخانه ایجاد شوند، زیرا نمی‌توانند اترها را ذخیره کنند. کتابخانه ها برای تغییر وضعیت قرارداد نیستند، فقط می توان از آن برای انجام عملیات اساسی بر اساس ورودی ها و خروجی ها استفاده کرد. با این حال می‌تواند برخی از انواع داده‌ها مانند struct و enums را که توسط کاربر تعریف شده‌اند و متغیرهای ثابتی که در پشته‌ای از اتریوم ذخیره می‌شوند، نه در ذخیره‌سازی، پیاده‌سازی کند.

image-5.png


مثال: در مثال زیر، library libraryExample برای نشان دادن روند ایجاد یک کتابخانه ایجاد شده است.

image-6.png


دیپلوی کتابخانه با استفاده از کلمه کلیدی “For”.

یک کتابخانه را می توان بر روی همان قرارداد تعریف کرد و همچنین می توان آن را از خارج با استفاده از دستورهای import وارد کرد.

مثال:

image-7.png


یک فایل تکی می‌تواند شامل چندین کتابخانه باشد که با استفاده از کرلیبریس (آکولاد) در دستور import که با کاما از هم جدا شده‌اند، مشخص شوند.

با استفاده از کلمه کلیدی “for” می توان به کتابخانه در قرارداد هوشمند دسترسی داشت.

دستور بالا را می توان برای پیوست کردن توابع کتابخانه به هر نوع استفاده کرد. libraryName نام کتابخانه مورد نظر برای وارد کردن است، dataType نوع متغیری است که می‌خواهیم به کتابخانه دسترسی پیدا کنیم. همه اعضای کتابخانه می توانند توسط عملگر wildcard (*) نیز استفاده شوند.

مثال: در مثال زیر، قرارداد libraryExample برای نشان دادن نحوه استقرار یک کتابخانه با استفاده از کلمه کلیدی “For” ایجاد شده است.

image-8.png

پیشنهاد مطالعه: بلاکچین به زبان ساده

کتابخانه های آماده

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 و غیره است.

 

اشتراک گذاری :
مریم گوهرزاد
نویسنده

مریم گوهرزاد

مدرس و بنیانگذار هلدینگ آرتا رسانه. برنامه نویس و محقق حوزه بلاکچین و توسعه‌دهنده بلاکچین | متخصص Solidity | توسعه‌دهنده وب Full-Stackمن یک توسعه‌دهنده علاقه‌مند به فناوری‌های بلاکچین و وب ۳ هستم و در زمینه Solidity، توسعه قراردادهای هوشمند و ساخت برنامه‌های غیرمتمرکز (DApps) فعالیت می‌کنم. تمرکز من بر طراحی و پیاده‌سازی راهکارهایی است که در کنار بهره‌گیری از فناوری‌های نوین، عملکرد مناسب، امنیت و تجربه کاربری مطلوبی ارائه دهند.در مسیر حرفه‌ای خود، تجربه کار با قراردادهای هوشمند و معماری راهکارهای مبتنی بر بلاکچین را به دست آورده‌ام و همواره تلاش می‌کنم دانش خود را با آخرین تغییرات و پیشرفت‌های این حوزه به‌روز نگه دارم. برای من، بلاکچین تنها یک فناوری جدید نیست؛ بلکه بستری برای ایجاد راهکارهای متفاوت و کاربردی در دنیای واقعی است.در کنار تخصص در حوزه بلاکچین، به عنوان یک توسعه‌دهنده وب Full-Stack نیز در طراحی و توسعه وب‌سایت‌ها و برنامه‌های تحت وب فعالیت می‌کنم. تجربه کار در بخش‌های Front-End و Back-End به من این امکان را داده است که پروژه‌ها را از مرحله ایده و طراحی تا توسعه و اجرا، با دیدی جامع دنبال کنم. در فرآیند توسعه، توجه ویژه‌ای به کدنویسی تمیز، معماری مناسب، طراحی واکنش‌گرا، عملکرد مطلوب و تجربه کاربری روان دارم.همیشه به دنبال یادگیری، تجربه فناوری‌های جدید و پیدا کردن راه‌های بهتر برای حل مسائل فنی هستم. از مواجهه با چالش‌های پیچیده استقبال می‌کنم و معتقدم بهترین نتایج زمانی شکل می‌گیرند که دانش فنی، خلاقیت و همکاری مؤثر در کنار یکدیگر قرار بگیرند.اگر به دنبال همکاری در یک پروژه بلاکچینی، Web3 یا توسعه وب هستید، خوشحال می‌شوم با یکدیگر در ارتباط باشیم و ایده‌ها را به راهکارهای واقعی و قابل اجرا تبدیل کنیم.

TEST_VALUE_123
https://t.me/artarasaneh
tel:09193426251
https://wa.me/+989193426251
https://instagram.com/artarasaneh_com