手机网站有免费做的吗,建设银行网站不能登录,建设银行网站明细多长时间,适合做书籍资源的WordPress主题演示源码#xff1a;hardhat-demo: 演示基于hardhat的HelloWord合约测试案例。 环境
NodeJs
创建工程
1.创建一个hardhat工程根目录(hardhat-demo)#xff0c;然后进入该目录执行。
npx hardhat执行该命令#xff0c;会进行hardhat工程初始化。 提示我们是否安装该版本h… 演示源码hardhat-demo: 演示基于hardhat的HelloWord合约测试案例。 环境
NodeJs
创建工程
1.创建一个hardhat工程根目录(hardhat-demo)然后进入该目录执行。
npx hardhat执行该命令会进行hardhat工程初始化。 提示我们是否安装该版本hardhat软件包。输入y回车。 就是问我们需要哪种工程环境。我这里选择创建一个支持ts的。 提示我们输入工程根目录。直接回车就行。 后面也是输入y回车。 2.创建完成我们删除他默认的测试案例形成如下结构。 contracts放测试合约。 scripts放部署脚本。 test放测试脚本。 hardhat.config.ts这是hardhat配置文件修改合约编译版本、连接测试网络等信息都在这个文件上。 使用 在./contracts 目录下面创建HelloWorld.sol // SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;contract HelloWorld {string private hello;function getHello() public view returns (string memory) {return hello;}function setHello(string memory _hello) public {hello _hello;}
} 由于我们的测试合约版本为0.8.0修改hardhat.config.ts文件。 import { HardhatUserConfig } from hardhat/config;
import nomicfoundation/hardhat-toolbox;const config: HardhatUserConfig {solidity: 0.8.0,networks: {// hardhat内置测试网络连接localhost: {url: http://127.0.0.1:8545,},// ganache 网络连接配置信息ganache: {url: http://127.0.0.1:7545,accounts: [0x172a483415c5e119f1ea336d44646572ac34a088e7bc2884f8e1f83da4cb304a]},},
};export default config;
部署 在./scripts创建deploy.ts 关于用法直接看注释。 import { ethers } from hardhat; // 从hardhat中导入ethers工具库/*** 主函数用于部署HelloWorld智能合约*/
async function main() {// 获取当前区块链环境的签名者列表[owner]表示获取第一个签名者通常是部署合约的账户const [owner] await ethers.getSigners();// 通过ethers获取HelloWorld合约的工厂这一步是准备部署合约const HelloWorld await ethers.getContractFactory(HelloWorld);// 连接到owner账户并部署HelloWorld合约const helloWorld await HelloWorld.connect(owner).deploy();// 等待合约部署完成await helloWorld.deployed();// 打印合约部署地址console.log(HelloWorld deployed to:, helloWorld.address);
}// 执行主函数
main().then(() process.exit(0)) // 主函数执行成功后退出进程返回码为0.catch((error) {console.error(error); // 主函数执行失败后打印错误信息process.exit(1); // 退出进程返回码为1表示有错误发生});
执行命令 npx hardhat run .\scripts\deploy.ts 测试 在 ./test创建HelloWorld.test.ts 关于用法直接看注释。 // 导入chai模块用于断言验证
import { expect } from chai;
// 导入hardhat模块用于部署和管理合约
import { ethers } from hardhat;// 描述HelloWorld合约的测试行为
describe(HelloWorld, function () {// 测试改变问候语后是否返回新的问候语it(Should return the new greeting once its changed, async function () {// 获取HelloWorld合约的工厂const HelloWorld await ethers.getContractFactory(HelloWorld);// 部署HelloWorld合约const helloWorld await HelloWorld.deploy();// 等待合约部署完成await helloWorld.deployed();// 验证初始问候语是否为空expect(await helloWorld.getHello()).to.equal();// 执行改变问候语的操作const setGreetingTx await helloWorld.setHello(Hello, world!);// 等待交易确认await setGreetingTx.wait();// 验证新的问候语是否为Hello, world!expect(await helloWorld.getHello()).to.equal(Hello, world!);});
});
执行命令npx hardhat test 指定脚本路径
此方法会执行test目录下的全部脚本要想执行特定脚本后面跟脚本路径。 部署到其他网络
下面以合约部署到ganache来说明。
我们需要先启动ganache指定端口为7545接着将第一个账户私钥粘贴到hardhat.config.ts的如下位置。 当一切准备齐全时执行部署命令带上 --network ganache即可。