Hardhat چیست؟

HardHat

Hardhat

صنعت Web3 مدت زمان زیادی نیست که شروع به رشد کرده است. برنامه های جدید و غیرمتمرکز (DAppها) مبتنی بر Web3 اغلب توسعۀ خوبی داشته اند. مسلماً شناخته شده ترین پلتفرم توسعه پیشرو برای DAppها همچنان اتریوم است. علاوه بر این، همانطور که توسعه دهندگان بیشتر و بیشتری به دنبال ایجاد DApp هستند، نیاز روزافزونی به یک فرایند توسعه ساده تر وجود دارد. یکی از ابتکاراتی که برای حل این مشکل وجود دارد، Hardhat است. Hardhat یک محیط توسعه است که می تواند به تسهیل روند توسعه DAppهای مبتنی بر اتریوم کمک کند.

بنابراین، اگر علاقمند به کسب اطلاعات بیشتر در مورد آن هستید، در ادامه برای توضیح کامل اینکه چیست و چگونه می توانید به راحتی از Hardhat با Moralis استفاده کنید، با ما همراه باشید.

توسعه وب 3 و بلاکچین می تواند یک فرایند پیچیده باشد، بنابراین استفاده از ابزارهایی برای آسان تر و راحت تر کردن این فرایند می تواند مفید باشد. این ویژگی دقیقاً همان چیزی است که Moralis و Hardhat هر دو برای کاربران خود ارائه می دهند. این پلتفرم ها به روند توسعه کمک کرده و زندگی توسعه دهندگان را آسان تر می کنند.

محیط توسعه Hardhat می تواند به تمام موارد از جمله کامپایل کردن، آزمایش، استقرار و اشکال زدایی نرم افزار اتریوم کمک کند. با این وجود، این موارد فقط نگاهی سطحی به خدماتی است که Hardhat به ما ارائه می دهد، بنابراین اجازه دهید نگاهی دقیق‌ تر به چیستی و نحوه عملکرد آن بیندازیم. اگر می‌ خواهید درباره Hardhat اطلاعات بیشتری کسب کنید، ویدیوهای YouTube Moralis را، مانند اتصال Hardhat به MetaMask، اتصال Hardhat به Moralis و نوشتن Solidity در کنسول (console.log) را مشاهده کنید. اگر در رابطه با کار با Solidity نیاز به مطالعه بیشتری دارید، راهنمای جامع Moralis را بررسی کنید که توضیح می دهد “Solidity چیست؟”

Hardhat چیست؟

محیطی است که توسعه دهندگان برای آزمایش، کامپایل، استقرار و اشکال زدایی DApp های مبتنی بر بلاکچین اتریوم از آن استفاده می کنند. به این ترتیب، به برنامه نویسان و توسعه دهندگان کمک می کند تا بسیاری از وظایف ذاتی توسعه DAppها و قراردادهای هوشمند را مدیریت کنند. همراه با ارائه ابزارهای مناسب برای مدیریت این فرایند به توسعه دهندگان، Hardhat به خودکارسازی برخی از این مراحل کمک می کند و عملکردهای جدید و مفیدی را در اختیار توسعه دهندگان قرار می دهد.

HardHat

Hardhat دارای یک شبکه محلی اتریوم از پیش ساخته است که با توسعه در هسته آن طراحی شده است. این شبکه روی اشکال‌ زدایی Solidity تمرکز دارد و دارای ردیابی پشته‌ ها، پیام‌ هایی در هنگام شکست تراکنش‌ های DApps، و غیره است. Hardhat ابزارهای ضروری را در اختیار توسعه‌ دهندگان قرار می‌ دهد تا بفهمند کجای یک برنامه خراب می‌ شود. همچنین پاسخی برای حل آن ها به توسعه‌ دهندگان ارائه می‌ دهد.

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

Hardhat Runner

Hardhat Runner دستوری مبتنی بر رابط خط فرمان (CLI) است که برای تعامل با Hardhat استفاده می شود. Hardhat Runner یک task runner است و گزینه ها و جایگزین های مختلفی را در اختیار کاربران قرار می دهد. طراحی task runner حول پلاگین ها و وظایف می چرخد. به این معنی که هر بار که توسعه‌ دهنده ای Hardhat را از CLI اجرا می‌ کند، وظیفه‌ ای را اجرا می‌ کند. یک مثال را در ادامه مشاهده خواهید کرد:

npx hardhat compile

اجرای این دستور کار کامپایل داخلی را شروع می کند. علاوه بر این، یک کار می تواند وظیفه دیگری را فراخوانی کند، به این معنی که امکان توسعه و تعریف گردش کار پیچیده وجود دارد. همچنین این امکان برای کاربران Hardhat وجود دارد که وظایفی را که از قبل وجود داشته اند لغو کنند، به این معنی که گردش کار، قابل توسعه و سفارشی سازی است.

شبکه Hardhat

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

شبکه Hardhat چگونه کار می کند؟

شبکه با هر تراکنش و بدون هیچ تأخیری یک بلوک را استخراج می کند. همراه با این ویژگی، شبکه توسط یک پیاده سازی EMV پشتیبانی می شود، که همان پیاده سازی است که توسط سایر برنامه ها مانند Remix ،Ethereum Studio و ganache استفاده می شود. علاوه بر این، این شبکه از هارد فورک های مختلف مانند بیزانس، Constantinople و پترزبورگ نیز پشتیبانی می کند.

چگونه می توان از شبکه Hardhat استفاده کرد؟

شبکه Hardhat دارای برخی رفتارهای پیش فرض است. به عنوان مثال، اگر “defaultNetwork” روی “hardhat” تنظیم شده باشد یا شبکه خالی باشد، Hardhat همیشه یک نمونه را شروع می کند. علاوه بر این، می توانیم از شبکه برای اجرای تست ها، وظایف و اسکریپت ها استفاده کنیم.

امکان افزودن پلاگین به شبکه Hardhat اتریوم نیز وجود دارد. برخی از پلاگین های قابل استفاده ethers.js ،Waffle ،Truffle و موارد دیگر هستند که می توانند مستقیماً به ارائه دهنده متصل شوند. همچنین امکان اتصال مشتریان خارجی به شبکه نیز وجود دارد. نمونه ای از یک مشتری خارجی، MetaMask است.

در ادامۀ مقاله، آموزش خواهیم داد که چگونه Hardhat می تواند به MetaMask متصل شود.

Solidity Stack Traces

این شبکه بلاکچینی، از Solidity با یک استاندارد درجه یک پشتیبانی می کند. بنابراین، شبکه می داند قراردادهایی که در حال اجرا هستند، قصد انجام چه کاری را دارند و در صورت شکست، دلیل آن را نیز ارائه می دهد.

اگر تماس یا تراکنش با شکست مواجه شود، شبکه یک استثناء برای کاربران فراهم می کند. این استثناء یک ردیابی پشته ای ترکیبی Solidity و JavaScript را ایجاد می کند. این ویژگی به این معنی است که ردیابی پشته در جاوا اسکریپت تا فراخوانی یک قرارداد، شروع می شود و سپس با یک پشته فراخوانی کامل Solidity ادامه می یابد. به این معنا که ردیابی پشته ای که شبکه ارائه می دهد، دلیل شکست قرارداد یا تراکنش را به توسعه دهنده می دهد.

پیام های خطای خودکار

از آنجایی که شبکه همیشه این توانایی را دارد که بداند چه تراکنش‌ ها یا تماس‌ هایی با شکست مواجه می‌ شوند و چرا ناموفق هستند، از این اطلاعات برای آسان‌ تر کردن فرایند اشکال‌ زدایی استفاده می‌ کند.

هنگامی که یک تراکنش بدون دلیل شناخته شده با شکست مواجه می شود، شبکه یک پیام واضح برای توضیح خطا در اختیار کاربران قرار می دهد. در ادامه چند نمونه از مواردی که شبکه یک پیام خطا برای کمک به فرایند اشکال زدایی نمایش می دهد را، بررسی خواهیم کرد:

  • وقتی شخصی ETH را بدون تابع دریافت یا بازگشت قابل پرداخت به یک قرارداد ارسال می کند.
  • فراخوانی یک تابع بدون پارامترهای مناسب.
  • فراخوانی یک تابع خارجی در یک حساب غیر قراردادی.
  • تلاش برای ارسال مقدار ناکافی ETH.
  • فراخوانی نادرست قرارداد از پیش کامپایل شده.
  • تلاش برای استقرار قراردادهایی در شبکه که از حد اندازه بیت کد فراتر می روند.

علاوه بر این، می توانید اطلاعات بیشتری را در مورد شبکه Hardhat در اسناد آن ها مطالعه کنید.

نحوه نصب Hardhat

نصب Hardhat برای توسعه اتریوم کار بسیار آسانی است و فقط چند لحظه طول می کشد. Hardhat از طریق نصب محلی در پروژه های توسعه دهنده استفاده می شود. یکی از دلایل این امر، باز تولید محیط توسط توسعه دهنده است که از تداخل نسخه های بعدی جلوگیری می کند.

npm istall –save-dev darhat

اولین مرحله در فرایند نصب، ایجاد یک پروژه npm است. ما می توانیم این کار را با یافتن یک پوشه خالی انجام دهیم، دستور npm init را اجرا و دستورالعمل ها را دنبال کنیم. همانطور که یک پروژه را نهایی می کنیم و آن را برای توسعه آماده می کنیم، گام بعدی اجرای دستور بالا است.

با دستور بالا Hardhat نصب می شود، راه استفاده از نصب محلی از طریق دستور “npx” است. به عنوان مثال می توان دستور npx hardhat را نام برد.

نحوه شروع استفاده از Hardhat

در این بخش به بررسی اصول اولیه نحوه اجرای پروژه با Hardhat می پردازیم. هنگام کاوش در مورد آنچه با Hardhat امکان پذیر است و اینکه چگونه کارها را انجام می دهیم، از یک پروژه نمونه به عنوان مبنای کار خود استفاده خواهیم کرد.

 به محض اینکه نصب نسخه barebones محیط را نهایی کنیم، امکان اجرای وظایف، کامپایل کد، اجرای تست ها، استفاده از شبکه Hardhat و استقرار قراردادها بدون نصب هیچ پلاگینی وجود دارد.

برای انجام پروژه، باید با اجرای npx hardhat در پوشه پروژه، یک پروژه ایجاد کنیم. پس از تکمیل این کار، می‌ توانیم یک پروژه نمونه ایجاد کنیم که از آن برای بررسی نحوه شروع کار با Hardhat استفاده می‌ کنیم. پروژه نمونه از نصب “hardhat-waffle” و “hardhat-ethers” درخواست می‌ کند تا پروژه را قادر سازد تست‌ های Waffle را اجرا کند.

وظایف

اولین چیزی که می خواهیم به آن توجه کنیم این است که چه وظایفی در دسترس هستند. اجرای دستور npx hardhat لیستی از تمام کارهای موجود را در اختیار ما قرار می دهد. از آنجایی که ما از نسخه barebones Hardhat بدون هیچ پلاگینی استفاده می کنیم، تنها چند کار محدود ساخته شده است. با این وجود، با اضافه کردن افزونه ها، وظایف بیشتری در این لیست ظاهر می شود.

نمونه ای از یک کار در پروژه نمونه، کار “حساب ها” است. برای اجرای این کار، به سادگی npx hardhat accounts را وارد کنید، و نتیجه، لیستی از تمام حساب های متصل به پروژه خواهد بود.

compile

عملکرد مفید بعدی که Hardhat برای توسعه اتریوم ارائه می کند، توانایی کامپایل کد است. برای این کار، می‌ توانیم به پوشه «contracts/» نگاه کنیم تا قراردادهای هوشمند پروژه را بررسی کنیم. در پروژه نمونه، “Greeter.sol” را پیدا خواهیم کرد. برای کامپایل کردن، می توان دستور زیر را اجرا کرد:

npx hardhat compile

قراردادهای آزمایشی

قبلاً Waffle و Ethers.js را در پروژه نمونه نصب کرده ایم که چند تست را ارائه می‌ دهد. البته در صورت تمایل می توان از تست های دیگر کتابخانه ها نیز استفاده کرد. برای پروژه نمونه، اگر به پوشه ”test/” نگاه کنیم، یک نمونه تست پیدا خواهیم کرد. اجرای این تست با وارد کردن دستور زیر امکان پذیر است:

npx hardhat test

استقرار قراردادها

انجام استقرار قراردادها پس از نهایی کردن آزمایشات، از طریق یک اسکریپت امکان پذیر است. در داخل پوشه “scripts/”، اگر از پروژه نمونه استفاده می کنیم، نمونه اسکریپت را پیدا می کنیم: “sample-script.js”. می توانیم اسکریپت را به سادگی با استفاده از دستور زیر اجرا کنیم:

npx hathat run scripts/sample-script.js

اتصال Hardhat به MetaMask

یکی از ویژگی های مهم در مورد Moralis راه حل های مختلف یکپارچه شده با پلتفرم توسعه است. یکی از نمونه های آن، نحوه اتصال آسان Hardhat به مورالیس است. با این وجود، قبل از اتصال Hardhat به Moralis، ابتدا باید آن را به یک کیف پول یا یک DApp متصل کنیم. در این مورد، نحوه اتصال Hardhat به MetaMask را بررسی خواهیم کرد.

اولین کاری که برای اتصال Hardhat به MetaMask باید انجام دهید، دنبال کردن مراحل بالا در مورد نحوه نصب محیط توسعه است.

پس از اتمام مراحل نصب، مرحله بعدی اجرای یک گره با دستور زیر است: npx hardhat node. با انجام این کار، یک گره محلی اتریوم با برخی موارد اضافی مانند توانایی استفاده از ()console.log را ایجاد خواهید کرد.

پس از اجرای دستور، آدرسی درست در زیر دستور ورودی به شما ارائه می شود. این آدرس را کپی کنید و به MetaMask بروید. می توانید از منوی کشویی استفاده کرده و “Custom RPC” را انتخاب کنید و از این آدرس هنگام ایجاد شبکه استفاده کنید.

npx harhat node

با اتمام ساخت شبکه، حساب دارای 0 اتریوم را خواهید داشت. می‌ توانیم به کنسول برگردیم و ببینیم که چندین حساب مختلف ایجاد شده‌ اند. می توانیم کلید خصوصی را از هر یک از آن ها بگیریم، یک حساب وارد کنیم و ببینیم که حساب با چه مقداری ETH ارائه شده است. با این وجود، این فقط ETH در شبکه محلی است و ETH واقعی نیستند. اما اکنون می توان از این اتریوم برای آزمایش قراردادها و غیره استفاده کرد.

علاوه بر این، در کانال یوتیوب Moralis، ویدیوی دقیق تری را خواهید دید که در آن فرایند اتصال Hardhat به MetaMask را توضیح می دهد.

اتصال Hardhat به مورالیس

پس از برقراری ارتباط بین Hardhat و MetaMask، می‌ توانیم فرایند اتصال Hardhat به Moralis را آغاز کنیم.

اولین کاری که باید انجام شود، اضافه کردن یک سرور جدید به Moralis است. اطمینان حاصل کنید که این سرور روی یک “Local Dev Chain” تنظیم شده است. پس از این، سرور جدید را به زنجیره محلی که در قسمت قبل در هنگام اتصال Hardhat به MetaMask راه اندازی کردیم، متصل می کنیم. برای اتصال سرور به طوری که Moralis بداند در زنجیره محلی چه اتفاقی می افتد، باید به جزئیات سرور نگاه کنیم.

هنگامی که بتوانیم جزئیات را مشاهده کنیم، باید یک تب “Devchain Proxy Server” در بالا سمت راست وجود داشته باشد. در ابتدا، وضعیت سرور “قطع” خواهد بود، اما می توانیم سرور را با دنبال کردن مراحل ارائه شده، به زنجیره محلی متصل کنیم.

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

محمد امیدی
ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *