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

۱. تست با Hardhat

۱.۱. نصب Hardhat

برای شروع با Hardhat، ابتدا آن را نصب کنید:

npm install --save-dev hardhat

۱.۲. ایجاد پروژه Hardhat

با استفاده از دستور زیر یک پروژه Hardhat جدید ایجاد کنید:

npx hardhat

۱.۳. نوشتن تست‌ها

شما می‌توانید تست‌های خود را در پوشه test اضافه کنید. برای نوشتن تست‌ها از Mocha و Chai استفاده می‌شود. برای یک قرارداد ساده، مثلاً ERC20:

const { expect } = require("chai");

describe("MyToken", function () {
  it("should have the correct name and symbol", async function () {
    const MyToken = await ethers.getContractFactory("MyToken");
    const token = await MyToken.deploy();
    
    expect(await token.name()).to.equal("MyToken");
    expect(await token.symbol()).to.equal("MTK");
  });
});

۱.۴. اجرای تست‌ها

برای اجرای تست‌ها، از دستور زیر استفاده کنید:

npx hardhat test

آموزش سالیدیتی + 5 پروژه عملی

۲. دیباگ با Hardhat

۲.۱. استفاده از Hardhat Network

می‌توانید از Hardhat Network برای دیباگ قراردادهای خود استفاده کنید. با استفاده از دستورات زیر، شبکه محلی را راه‌اندازی کنید:

npx hardhat node

۲.۲. استفاده از Hardhat Console

از Hardhat Console برای تعامل با قراردادها استفاده کنید:

npx hardhat console

۳. تست با Foundry

۳.۱. نصب Foundry

برای نصب Foundry، ابتدا باید foundryup را نصب کنید:

curl -L https://foundry.paradigm.xyz | bash

۳.۲. ایجاد پروژه Foundry

با استفاده از دستور زیر یک پروژه Foundry جدید بسازید:

forge init

۳.۳. نوشتن تست‌ها

تست‌های خود را در پوشه test اضافه کنید. مثلاً برای تست یک قرارداد ERC20:

pragma solidity ^.8.;

import "forge-std/Test.sol";
import "../src/MyToken.sol";

contract MyTokenTest is Test {
    MyToken token;

    function setUp() public {
        token = new MyToken();
    }

    function testName() public {
        assertEq(token.name(), "MyToken");
    }
}

۳.۴. اجرای تست‌ها

برای اجرای تست‌ها در Foundry، از دستور زیر استفاده کنید:

forge test

۴. دیباگ با Foundry

۴.۱. استفاده از Forge

می‌توانید با استفاده از ویژگی‌های دیباگ Forge، قراردادها را دیباگ کنید. برای اجرای دیباگ، از forge test -vvvv استفاده کنید که جزئیات بیشتری را در مورد تست‌ها ارائه می‌دهد:

forge test -vvvv

۴.۲. استفاده از Remix

برای دیباگ قراردادها، می‌توانید از Remix IDE نیز استفاده کنید که ابزارهای قوی برای تست و دیباگ قراردادهای هوشمند ارائه می‌دهد.

نتیجه‌ گیری

با تست قراردادهای هوشمند با Foundry و Hardhat، شما قادر خواهید بود تا به‌راحتی قراردادهای هوشمند خود را تست و دیباگ کنید. هرکدام از این ابزارها ویژگی‌های خاص و قابلیت‌های منحصر به فرد خود را دارند که انتخاب بین آن‌ها به نیازها و ترجیحات شما بستگی دارد.