乐闻世界logo
搜索文章和话题

What is Hardhat Ignition and how to use it?

2月21日 15:59

Hardhat Ignition is Hardhat's declarative deployment system, providing a more powerful and maintainable deployment approach:

Core Concepts:

  1. Modular Deployment

    • Use modules to define deployment logic
    • Support dependencies between modules
    • Declarative configuration instead of imperative scripts
  2. Deployment State Management

    • Automatically track deployment state
    • Support incremental deployment
    • Avoid duplicate deployments

Basic Usage:

Create deployment module:

javascript
const { buildModule } = require("@nomicfoundation/hardhat-ignition/modules"); module.exports = buildModule("TokenModule", (m) => { const token = m.contract("MyToken", ["MyToken", "MTK", 18]); return { token }; });

Advanced Features:

  1. Parameterized Deployment
javascript
module.exports = buildModule("TokenModule", (m) => { const name = m.getParameter("name", "MyToken"); const symbol = m.getParameter("symbol", "MTK"); const token = m.contract("MyToken", [name, symbol, 18]); return { token }; });
  1. Dependency Management
javascript
module.exports = buildModule("DAppModule", (m) => { const token = m.contract("MyToken"); const sale = m.contract("TokenSale", [token]); // Call token contract function m.call(token, "transferOwnership", [sale]); return { token, sale }; });
  1. Using Existing Contracts
javascript
module.exports = buildModule("Module", (m) => { const existingContract = m.contractAt( "ExistingContract", "0x1234..." ); return { existingContract }; });

Deployment Commands:

bash
# Deploy to local network npx hardhat ignition deploy ./ignition/modules/Module.js # Deploy to testnet npx hardhat ignition deploy ./ignition/modules/Module.js --network sepolia # Deploy with parameters npx hardhat ignition deploy ./ignition/modules/Module.js --parameters name:CustomToken,symbol:CTK # Verify deployment npx hardhat ignition deploy ./ignition/modules/Module.js --verify

Deployment Plan:

Ignition generates a deployment plan showing the operations to be performed:

bash
npx hardhat ignition plan ./ignition/modules/Module.js

Advantages:

  • Declarative configuration is easier to understand
  • Automatically handle deployment dependencies
  • Support deployment verification
  • Better error handling
  • Suitable for complex multi-contract deployments
  • Facilitates team collaboration
标签:Hardhat