从零开始的Hardhat学习 1| Hardhat 的基本使用、部署智能合约

Hardhat 是一个以太坊智能合约开发环境,旨在帮助开发者管理、测试、部署和调试 Solidity 项目。它内置了 Hardhat Network(一个本地以太坊网络),并提供丰富的插件生态。以下将介绍 Hardhat 的基本使用方法。

1. 安装 Hardhat

首先确保系统已安装 Node.js(版本 12 以上)和 npm/yarn。然后创建一个新项目文件夹并初始化 npm:

bash 复制代码
mkdir my-hardhat-project
cd my-hardhat-project
npm init -y

安装 Hardhat 作为开发依赖:

bash 复制代码
npm install --save-dev hardhat
yarn add -D hardhat

运行 Hardhat 创建示例项目:

bash 复制代码
npx hardhat --init

根据提示选择"Create a JavaScript project"或"Create a TypeScript project"(建议初学者选 JavaScript),并同意安装一些附加依赖(如 @nomicfoundation/hardhat-toolbox)。安装完成后,项目结构如下:

text 复制代码
contracts/          # 存放 Solidity 合约
scripts/           # 存放部署脚本
test/              # 存放测试文件
hardhat.config.js  # Hardhat 配置文件

2. Hello World

solidity 复制代码
pragma solidity 0.8.7;

Contract HelloWorld{
  function hello() public pure returns(string memory){
    return "Hello,World";
  }
}

编译:

bash 复制代码
npx hardhat compile

3. TypeScript

将 hardhat.config.js 改为 hardhat.config.ts

添加ts的库

复制代码
yarn add -D ts-node typescript
3.1 HelloWorld.ts

Mocha 测试框架安装类型定义文件

复制代码
yarn add -D @types/mocha

HelloWorld.ts

ts 复制代码
import "@nomicfoundation/hardhat-ethers";
import {ethers} from "hardhat";
import {expect} from "chai";

describe("HelloWorld",function(){
    it("should say hello",async function(){
      // 1.setup
      // 2.import contract
      // 3.test action
      const HW = await ethers.getContractFactory("HelloWorld");
      const hw = await HW.deploy();
      await hw.waitForDeployment();

      expect(await hw.hello()).to.equals("Hello,World!");
    })
});

编译

复制代码
npx hardhat test

4. 部署智能合约

scripts 文件夹下新建 deploy-hello.ts

ts 复制代码
import "@nomicfoundation/hardhat-ethers";
import {ethers} from "hardhat";

async function deploy(){
    const HelloWorld = await ethers.getContractFactory("HelloWorld");
    const hello = await HelloWorld.deploy();
    await hello.waitForDeployment();
    return hello;
}

async function sayHello(hello:any){
    console.log("Say Hello",await hello.hello());
}

deploy().then(sayHello);

启动网络

复制代码
npx hardhat node

打开另一终端运行

复制代码
npx hardhat run .\scripts\deploy-hello.ts --network localhost
相关推荐
何事误红尘1 小时前
全志A40i学习笔记():开发资料、启用串口
学习
for_ever_love__1 小时前
python基础语法学习: 异常的传递性
开发语言·python·学习
PC2005-cloud2 小时前
DeepSeek Harness 创建 skill 指南:结构、安装、使用
笔记·学习
YM52e2 小时前
分页查询的基石:ArkTS 为鸿蒙商品列表设计 LIMIT/OFFSET 的表
android·学习·华为·harmonyos
math_hongfan2 小时前
主从嵌套层次分明:ArkUI 订单卡片内嵌明细的鸿蒙界面
学习·华为·harmonyos
还不秃顶的计科生4 小时前
具身智能论文学习8:Octo: An Open-Source Generalist Robot Policy
人工智能·深度学习·学习·机器学习·语言模型·vla·vlm
woshihuanglaoshi4 小时前
事务加持防超卖:ArkTS 在鸿蒙里玩转 TRANSACTION 出入库
学习·华为·harmonyos
世人万千丶5 小时前
去重插入与超限淘汰:ArkTS 实现鸿蒙搜索历史的 LIMIT 艺术
运维·服务器·学习·华为·harmonyos·鸿蒙
2601_949950636 小时前
在线练题更方便,用练题簿打造属于自己的移动题库
学习·考研·刷题·小程序推荐
woshihuanglaoshi7 小时前
十二商品二十流水:鸿蒙进销存种子数据装满预警看板
学习·华为·harmonyos