دوره اشنایی با توسعه قرار داد های هوشمند بر روی csc - قسمت 3

با سلام خدمت جامعه توسعه دهندگان بلاکچین و قرار داد های هوشمند
من 0Xlive هستم و در این قسمت میخوایم به HardHat بپردازیم

در قسمت قبلی درباره remix صحبت کردیم و نحوه کامپایل و دیپلوی قرار داد هوشمند رو باهاش بررسی کردیم
توی این قسمت میخوایم به نصب , پیکر بندی و استفاده از HardHat بپردازیم

f4b1ed867f903661437779f548a5978e9a817f6b_2_690x192

نصب Hardhat

هارد هت یک محیط توسعه برای کامپایل , تست , دیپلوی و دیباگ قرار داد های هوشمند اتریومی هستش که بهتون در مدیریت و اتومات کردن task ها کمک میکنه.

هاردهت در خودش یک شبکه local اتریومی برای توسعه همراه پلاگین های زیادی که میتونه در توسعه قرار داد های هوشمند و Dapp شما کمک کنه رو تعبیه کرده

ابتدا در یک دایرکتوری خالی دستور زیر رو برای Initialization در ترمینال وارد میکنیم:

npm init

حالا در همین دایرکتوری اقدام به نصب هارد هت میکنیم:

npm install --save-dev hardhat

بعد از نصب هارد هت رو با دستور زیر اجرا میکنیم:

npx hardhat

از اونجایی که هارد هت به شکل local نصب میشه برای اجرای اون از دستور npx استفاده میکنیم

استفاده از Hardhat

بعد از اینکه هارد هت رو اجرا کردیم مطابق متن زیر از ما یک سری سوالات میپرسه که میخوای چه کاری رو انجام بدی؟

$ npx hardhat

Welcome to Hardhat v2.0.8

? What do you want to do? …
❯ Create a sample project
  Create an advanced sample project
  Create an advanced sample project that uses TypeScript
  Create an empty hardhat.config.js
  Quit

گزینه اول : از شما میپرسه که میخوای یک نمونه پروژه رو پیکر بندی کنی؟ ( انتخاب ما در اینجا همین گزینه هست )

گزینه دوم : یک پروژه با جزئیات و پارامتر های بیشتری رو پیکربندی میکنه

گزینه سوم : مشابه گزینه بالا یک پروژه رو پیکر بندی میکنه که از تایپ اسکریپت استفاده میکنه

گزینه چهارم : فقط یک فایل حاوی پیکربندی هارد هت با اسم hardhat.config.js میسازه ( مناسب کسانی هست که فقط به پیکربندی نیاز دارند )

بعد از انتخاب گزینه اول از شما میپرسه که میخواید hardhat-waffle و hardhat-ethers رو نصب کنید؟ این دوتا کتابخونه بسیار در توسعه dapp ها به ما کمک میکنند چرا که حاوی کتابخونه های مختلفی برای توسعه شبکه های اتریومی هست.

و خودش اون رو به فایل پیکربندی هارد هت اضافه میکنه:

require("@nomiclabs/hardhat-waffle");

اما میتونید به شکل دستی از با دستور زیر اون رو نصب کنید

npm install --save-dev @nomiclabs/hardhat-waffle ethereum-waffle chai @nomiclabs/hardhat-ethers ethers

مراحل بعدی رو میتونید yes yes ادامه بدید :sunglasses:

و در اخر هاردهت پروژه ای با این ساختار میسازه:

contracts/
scripts/
test/
hardhat.config.js

حالا بریم برای پیکربندی هاردهت و مقدار زیر رو به hardhat.config.js اضافه میکنیم:

module.exports = {
  solidity: "0.8.10",
  networks: {
    csc: {
      url: "https://testnet-rpc.coinex.net",
      accounts: ["YOUR PRIVATE KEY"],
    }
  }
};

ظبق پیکربندی بالا من نسخه سالیدیتی رو 0.8.10 تنظیم کردم و شبکه ای با نام csc و به ادرس نود شبکه تست اضافه کردم
و برای account کلید خصوصی خودم رو به هاردهت دادم تا با اون تراکنش ها رو امضا کنه
اما از کجا میتونیم کلید خصوصی رو گیر بیاریم؟
شما میتونید کلید خصوصی اکانت خودتون رو از متامسک خروجی بگیرید

خود هاردهت همراه خودش یک شبکه local اتریوم رو داره اما اگر قصد دیپلوی روی شبکه اصلی یا شبکه تست رو دارید نیازداریم که مطابق بالا پیکربندی کنیم

برای دیپلوی کردن قرار داد های هوشمند خودمون میتونیم این فرایند رو با کمک js خودکار کنیم

در دایرکتوری scripts یک فایل با نام deploy.js میسازیم و متن زیر رو در اون قرار میدیم:

async function main() {
  // We get the contract to deploy
  const Greeter = await ethers.getContractFactory("Greeter");
  const greeter = await Greeter.deploy("Hello, Hardhat!");

  await greeter.deployed();

  console.log("Greeter deployed to:", greeter.address);
}

main()
  .then(() => process.exit(0))
  .catch((error) => {
    console.error(error);
    process.exit(1);
  });

با دستور زیر قرار داد هوشمند خودمون رو دیپلوی میکنیم:

npx hardhat run --network csc scripts/deploy.js

کد بالا قرار داد مارو روی شبکه csc دیپلوی میکنه و ادرس قرار داد هوشمند مارو در ترمینال چاپ میکنه

تبریک میگم حالا ما میتونیم قرار داد خودمون رو روی شبکه دیپلوی کنیم :partying_face:

برای یادگیری خودکار کردن پروسه های پیچیده تر میتونید مستندات خود هارد هت رو بررسی کنید

در قسمت های بعدی دوباره به هارد هت بر میگردیم و اون رو عمیق تر بررسی میکنیم