在以太坊开发的世界中,一个工具因其稳健性和多功能性而脱颖而出:Hardhat。该工具旨在帮助开发人员轻松管理,测试和部署以太坊的智能合约。在这篇文章中,我们将深入了解Hardhat是什么,其工作原理以及如何使用RPC。此外,我们将带您完成使用HardHat(在测试环境上)与智能合约进行编译和互动的步骤。
什么是硬汉?
HardHat是以太坊的开发环境和任务跑步者,可帮助开发人员建立和与智能合约互动。它旨在为开发人员提供在写作,测试和部署智能合约方面的无缝经验。它具有内置的打字稿支持,调试和网络功能,使其成为以太坊开发的一站式服务。
怎么运行的?
HardHat可以通过在计算机上建立本地以太坊网络来开发目的。这个称为HardHat网络的本地网络使您可以在受控环境中执行和测试智能合约。它提供了详细的错误消息和控制台。log功能,这使调试变得轻而易举。
硬汉和RPC
HardHat网络通过称为JSON-RPC(远程过程调用)的API与您的以太坊节点进行通信。 RPC允许客户端与远程服务器进行交互。对于HardHat,它连接到以太坊节点(本地一个或遥控器),并发送请求与区块链交互,例如部署智能合约或查询交易。 HardHat使用以太坊JSON-RPC API,这是一组用于与以太坊网络交互的方法。
编译和与智能合约互动
让我们浏览使用HardHat与智能合约进行编译和互动的示例。
步骤1:安装HARDHAT
首先,您需要安装硬窃。确保已安装了node.js,然后在终端中运行以下命令:
npm install --save-dev hardhat
步骤2:创建一个新的HardHat项目
接下来,通过运行以下命令来创建一个新的HardHat项目:
npx hardhat
提示时选择“创建一个空的hardhat.config.js”。这将在根文件夹中使用必要的配置文件(hardhat.config.js)创建一个新目录。
步骤3:写智能合约
在合同目录(/合同)中创建一个新文件,说helloworld.sol,并添加以下固体代码:
// SPDX-License-Identifier: MIT
pragma solidity ^0.7.3;
contract HelloWorld {
function sayHello() public pure returns (string memory) {
return "Hello, Hardhat!";
}
}
步骤4:编译智能合约
通过运行以下命令来编译智能合约:
npx hardhat compile
步骤5:编写测试
在测试目录(/test)中创建一个新文件,说helloworld.test.js,并添加以下JS代码:
const { expect } = require("chai");
describe("HelloWorld contract", function () {
it("Should return the right greeting", async function () {
const HelloWorld = await ethers.getContractFactory("HelloWorld");
const helloWorld = await HelloWorld.deploy();
await helloWorld.deployed();
expect(await helloWorld.sayHello()).to.equal("Hello, Hardhat!");
});
});
让我们将其分解:
const { expect } = require("chai");
此行从Chai库中导入期望功能,这是一个流行的JavaScript测试库。期望用来对您的代码做出断言。
const HelloWorld = await ethers.getContractFactory("HelloWorld");
这条线为Helloworld合同创建了合同工厂。合同工厂是一个可用于部署合同新实例的对象。
const helloWorld = await HelloWorld.deploy();
这条线部署了Helloworld合同的实例。
await helloWorld.deployed();
此线路等待部署合同。合同部署是一种异步操作,涉及以太坊网络上开采的交易。
expect(await helloWorld.sayHello()).to.equal("Hello, Hardhat!");
此行称为Helloworld合同的Sayhello函数,并检查其返回字符串“ Hello,hardhat!”。
步骤6:运行测试
通过执行以下命令来运行测试:
npx hardhat test
如果所有内容都正确设置了,则应看到一条消息说您的测试通过了。
就是这样!您刚刚编写,编译,部署(到测试网络)并与Hardhat测试了智能合约。
概括
HARDHAT是一个开发环境,可以编译,部署,测试和调试您的以太坊软件。它可以帮助开发人员管理和自动化建立智能合约和执行复杂部署的重复任务。 ð