آموزش راه اندازی و تایید یک NFT با استفاده از Foundry

در این مقاله یاد می‌گیریم چگونه یک قرارداد NFT را با استفاده از ابزار Foundry روی شبکه تست Sepolia مستقر کنیم و آن را به‌صورت خودکار در Etherscan تأیید کنیم. این آموزش گامی عملی برای حرفه‌ای‌تر شدن در توسعه قراردادهای هوشمند سالیدیتی است.

آموزش راه اندازی و تایید یک NFT با استفاده از Foundry در سالیدیتی

در آموزش ویدیویی بالا، شما یک NFT را با استفاده از محیط Remix روی پلتفرم Opensea قرار دادید. این روش خوب است، اما Remix برای استفاده در محیط پروداکشن (production use) ایده‌آل نیست. در این فصل، به شما نشان خواهیم داد که چگونه:

  • Foundry را برای کار با NFT پیکربندی کنید.
  • آن را بر روی تست نت Sepolia دیپلوی (deploy) کرده و در Etherscan تأیید (verify) کنید.

اگر تمرین‌ها را انجام داده باشید، باید Foundry از قبل روی سیستم شما نصب شده باشد، پس بیایید آن را پیکربندی کنیم. یک پوشه جدید ایجاد کنید؛ نام آن را foundry-nft بگذارید، با دستور cd وارد آن شوید و دستور forge init را در پوشه خالی اجرا کنید.

در اینجا کدی برای ایجاد NFT آمده است. فایل Counter.sol موجود در دایرکتوری src را به FoundryNFT.sol تغییر نام دهید و این کد را کپی و در آن پیست کنید:

نصب OpenZeppelin

ما قرارداد ERC721 از OpenZeppelin را ایمپورت (import) کرده و از آن ارث بری می‌کنیم، بنابراین برای نصب آن از دستور زیر استفاده کنید:

استفاده از Remappings

اگر پیش‌زمینه ای از کار با Remix دارید، متوجه خواهید شد که مسیر ایمپورت OpenZeppelin در اینجا متفاوت است. Remix کتابخانه ها را در همان محلی که Foundry ذخیره می‌کند، نگهداری نمی‌کند. با این حال، Foundry قابلیتی به نام remappings ارائه می‌دهد که اجازه می‌دهد هنگام ایمپورت، جستجوی فایل ها به مکان دیگری هدایت (redirect) شود. برای مشاهده تمام remappings های موجود، دستور forge remappings را اجرا می‌کنیم. خروجی به این صورت خواهد بود:

می‌توانیم remapping مربوط به OpenZeppelin را مشاهده کنیم، بنابراین نیازی نیست مسیر کامل را تا قرارداد های OpenZeppelin مشخص کنیم. می‌توانیم از مسیر openzeppelin-contracts/contracts/token/ERC721/ERC721.sol استفاده کنیم، به جای اینکه ابتدا دایرکتوری “lib/” را مشخص نماییم.

عدم استفاده از Remappings

اگر از remappings در forge استفاده نمی‌کردیم، مجبور بودیم مسیر کامل فایل ها یا دایرکتوری های خود را مشخص کنیم. به عنوان مثال، برای فایل ERC721.sol، برای ایمپورت کردن آن، باید چیزی شبیه به این مسیر را وارد می‌کردیم:

برای تأیید اینکه این (پیکربندی) هنوز معتبر است، دستور forge build را اجرا کنید و ببینید آیا کامپایل می‌شود. و همینطور هم هست (کامپایل با موفقیت انجام می‌شود):

اکنون تغییرات را به حالت قبل بازگردانید.

ایجاد فایل remappings.txt در یک مرحله

این کار را می‌توان با دستور زیر انجام داد:

تغییر نام فایل ها
ما می‌توانیم محل ارجاع remapping‌ ها را بیشتر پیکربندی کنیم، با ایجاد یک فایل به نام remappings.txt در دایرکتوری اصلی پروژه و افزودن این خط به فایل:

پس از انجام این کار، می‌توانیم از دستور

برای وارد کردن توکن ERC721 استفاده کنیم، به‌جای اینکه مسیر کامل فایل را به‌صورت صریح بنویسیم.

این remapping را می‌توان در فایل remappings.txt پیکربندی کرد، به شرطی که مسیر درست را مشخص کرده باشد.

گرفتن کلید Etherscan

زمانی که NFT خود را مستقر می‌کنیم، به یک API از Etherscan برای تأیید قرارداد نیاز داریم. این به ما اجازه می‌دهد تا به‌راحتی با استفاده از forge به Etherscan متصل شده و قرارداد هوشمند را تأیید کنیم، بدون اینکه نیاز باشد وارد سایت Etherscan شده و فرآیند دستی را دنبال کنیم.

به وب‌سایت Etherscan بروید، وارد حساب خود شوید و یک کلید API ایجاد کنید.

ما کلید API زیر را ایجاد کرده‌ایم:
U3D9IS6Z5E872VFS7M7AWR1SBA8786ZZ3Y
ما بعداً از این کلید API استفاده خواهیم کرد.

ایجاد یک کیف پول موقتی (throwaway wallet)

هرگز از کلید خصوصی یک کیف پول سخت افزاری یا هر کیف پولی که دارای ارزش قابل توجهی است استفاده نکنید.
برای استقرار قرارداد NFT در شبکه آزمایشی (testnet)، ما به یک کلید خصوصی با مقداری اتر آزمایشی (test ether) برای امضای تراکنش نیاز داریم.

برای ساده سازی، ما یک کیف پول موقتی ایجاد کرده‌ایم و مقداری اتر Sepolia به آن اختصاص داده‌ایم.
در اینجا کلید خصوصی این کیف پول آمده است:
787ea4ec95ab4f4e66c4c4c387cd0b5fbbec84a9293db485fa5f86f490c157d4
(نباید از این کلید استفاده شود، چون قبلاً افشا شده و ناامن در نظر گرفته می‌شود.)

قرار دادن کلید Etherscan و کلید خصوصی کیف پول در متغیرهای محیطی

اکنون که هم کلید API و هم کلید خصوصی را داریم، مرحله بعدی این است که یک فایل .env در دایرکتوری اصلی پروژه ایجاد کرده و موارد زیر را به آن اضافه کنیم:

مطمئن شوید که فایل .env را در فایل .gitignore قرار داده‌اید تا به‌طور تصادفی کلیدهای خصوصی خود را منتشر نکنید!

اجرای این اسکریپت

برای استقرار و تأیید قرارداد NFT روی شبکه Sepolia، این اسکریپت را اجرا کنید:

 

5/5 - (1 امتیاز)

راستی! برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام سورس باران عضو شوید.

پکیج آموزش پیشرفته ASP.NET Core + طراحی فروشگاه اینترنتی
  • انتشار: ۱۷ اردیبهشت ۱۴۰۴

دسته بندی موضوعات

آخرین محصولات فروشگاه

مشاهده همه

نظرات

بازخوردهای خود را برای ما ارسال کنید