Hardhat 开发框架 - Solidity开发教程连载

Decert.me 连载教程 《Solidity开发教程》 -- 工具篇
摘要由CSDN通过智能技术生成

Decert.me 要连载教程了, 《Solidity 开发教程》 力求系统深入的介绍 Solidity 开发, 同时这是一套交互式教程,你可以实时的修改教程里的合约代码并运行。

本教程来自贡献者 @Tiny熊,让我们正式开始学习吧。

如果你已经是 Hardhat 的使用者,可以直接跳到文末,参与挑战领取技能认证 NFT。


Hardhat 提供了一个灵活且易于使用的环境,可以轻松地编写、测试和部署智能合约。类似的开发工具或框架还有: Remix IDETruffle Foundry, 目前最受欢迎的是 Hardhat 与 Foundry。

Hardhat 使用 Node 进行包管理,如果你熟悉 Node 及 Javascript, Hardhat 将非常简单上手。

Hardhat还内置了Hardhat 网络(Hardhat Node),它是为开发而设计的本地以太坊网络。 用来部署合约,运行测试和调试代码

在本文中,我们将介绍:

  1. 创建及配置Hardhat项目
  2. 编写智能合约
  3. Hardhat 编译合约
  4. 使用 Ethers.js 和为合约编写自动化测试
  5. 使用 console.log()调试 Solidity
  6. 使用 Hardhat 部署合约
  7. 使用 Hardhat Etherscan 进行开源验证。
  8. Hardhat 插件的使用

本文对应的代码在:https://github.com/xilibi2003/training_camp_2/tree/main/w1_hardhat

创建及配置Hardhat项目

Hardhat 构建在Node.js之上, 使用 Hardhat 要求我们在电脑先安装好Node.js (>= 16.0), 环境准备可以参考这里

先创建项目目录:

mkdir hardhat-tutorial
cd hardhat-tutorial

初始化 Node 项目:

npm init

安装 Hardhat :

npm install --save-dev hardhat

在安装Hardhat的目录下运行:

npx hardhat

使用键盘选择"创建一个新的hardhat.config.js(Create a JavaScript project)" ,然后回车。

$ npx hardhat
888    888                      888 888               888
888    888                      888 888               888
888    888                      888 888               888
8888888888  8888b.  888d888 .d88888 88888b.   8888b.  888888
888    888     "88b 888P"  d88" 888 888 "88b     "88b 888
888    888 .d888888 888    888  888 888  888 .d888888 888
888    888 888  888 888    Y88b 888 888  888 888  888 Y88b.
888    888 "Y888888 888     "Y88888 888  888 "Y888888  "Y888

👷 Welcome to Hardhat v2.13.0 👷‍

? What do you want to do? …
❯ Create a JavaScript project
  Create a TypeScript project
  Create an empty hardhat.config.js
  Quit

这个 JavaScript Hardhat 工程会默认下载 hardhat-toolbox 插件及一些常规设置:

创建好的Hardhat工程包含文件有:

  • contracts:智能合约目录
  • scripts :部署脚本文件
  • test:智能合约测试用例文件夹。
  • hardhat.config.js:配置文件,配置hardhat连接的网络及编译选项。

编写合约

合约开发推荐使用 VSCode 编辑器 + solidity 插件,在contracts 下新建一个合约文件 Counter.sol (*.sol 是 Solidity 合约文件的后缀名), 复制如下代码:

//SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract Counter {
   
    uint counter;

    constructor() {
   
        counter = 0;
    }

    function count() public {
   
        counter = counter + 1;
    }

    function get() public view returns (uint) {
   
        return counter;
    }
}

接下来就可以编译这个合约了。

使用OpenZepplin 等第三方库

在编写合约时,尽量不要重复造轮子,基于优质开源的第三方库,不仅可以提交效率,还可以让我们的合约代码更安全,例如要开发一个 Token,可以用npm 安装OpenZepplin 库:

npm install @openzeppelin/contracts --save-dev

然后在合约中 import 相应库中的合约文件及可。

pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract Token is ERC20 {
  constructor(uint256 initialSupply) ERC20("Token Name", "Token Symbol") {
    _mint(msg.sender, initialSupply);
  }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值