智能合约HardHat框架环境的搭建
1.首先创建一个npm项目
PS C:\Users\lcds\blockchainprojects> mkdir hardhatcontract
PS C:\Users\lcds\blockchainprojects> cd .\hardhatcontract\
2.运行 npm init -y 初始化项目
PS C:\Users\lcds\blockchainprojects\hardhatcontract> npm init -y
Wrote to C:\Users\lcds\blockchainprojects\hardhatcontract\package.json:
{
"name": "hardhatcontract",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
3.运行 npm i hardhat 安装项目依赖
PS C:\Users\lcds\blockchainprojects\hardhatcontract> npm i hardhat
4.运行 npx hardhat
PS C:\Users\lcds\blockchainprojects\hardhatcontract> 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.15.0
√ What do you want to do? · Create a TypeScript project
√ Hardhat project root: · C:\Users\lcds\blockchainprojects\hardhatcontract
√ Do you want to add a .gitignore? (Y/n) · y
× Help us improve Hardhat with anonymous crash reports & basic usage data? (Y/n) · y
You need to install these dependencies to run the sample project:
npm install --save-dev "hardhat@^2.15.0" "@nomicfoundation/hardhat-toolbox@^3.0.0"
Project created
See the README.md file for some example tasks you can run
Give Hardhat a star on Github if you're enjoying it!
https://github.com/NomicFoundation/hardhat
5.它会自动创建一个项目模板或者创建一个hardhat配置文件,
这里会出现三个选项,第一个是创建一个JavaScript项目,第二个是创建一个TypeScript项目,第三个是创建一个空的配置文件,我这里选择第二个,再之后就是项目的根目录,可以选择默认的路径,再之后是否生成.gitignore,我们选择y,再之后它会为我们是否安装这个项目的所有依赖,我们继续选择y,等安装依赖完成后,项目中会出现三个文件夹和一个配置文件,我们分别来看一下这几个文件的作用:
PS C:\Users\lcds\blockchainprojects\hardhatcontract> dir
目录: C:\Users\lcds\blockchainprojects\hardhatcontract
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2023/6/17 8:35 contracts
d----- 2023/6/17 8:34 node_modules
d----- 2023/6/17 8:35 scripts
d----- 2023/6/17 8:35 test
-a---- 2023/6/17 8:35 101 .gitignore
-a---- 2023/6/17 8:34 181 hardhat.config.ts
-a---- 2023/6/17 8:34 140706 package-lock.json
-a---- 2023/6/17 8:34 279 package.json
-a---- 2023/6/17 8:34 352 README.md
-a---- 2023/6/17 8:34 232 tsconfig.json
6.第一个文件是hardht.config.ts 配置文件,它里面有一个配置对象,这个配置对象可以设置solidity的版本,区块链网络,和ohai测试库的相关配置。
第一个文件夹是contracts 用来放置智能合约文件默认生成的 lock.sol文件,该文件就是一个智能合约文件;
第二个文件夹是scripts 是用来放置一些脚本文件,默认只有一个deploy.ts文件,deploy.ts里面是一些用TypeScript编写的部署脚本;
第三个文件夹是test 用来放置合约的测试文件,测试文件好像比智能合约文件大很多,原因就是智能合约必须经过全面,严格的测试保证没有漏洞才可以在主网上部署,因为智能合约一经部署就很难修改了
7.Hardhat命令一很多,有12个子命令 分别是:check clean compile console coverage flatton help node run test typechain verify 下面介绍几个最常用的命令:
7.1 第一个是help 在使用此命令之前,需要安装如下三条命令
1) npm install --save-dev typescript
2) npm install --save-dev ts-node
3) npm install @nomicfoundation/hardhat-toolbox
help命令的作用是把hardhat所有的命令参数展示出来,在命令行运行 npx hardhat help
7.2 第二个命令是compile
它是智能合约的编译命令,在命令行运行
npx hardhat compile
首次使用它,它会在本地下载一个编译器到本地,然后将contracts目录下的合约进行编译,然后把合约进行部署,编译完成后会生成三个文件夹。
第一个文件夹是 artifacts 其中将放置编译信息和ABI,主要是用来给外部使用,让外部可以来与智能合约进行交互,比如前端等;
第二个文件夹是cache,它会存放编译的缓存信息,比如会记录合约的内容哈希和最后修改时间,这样可以在下次编译时不再编译哪些没有变化的合约;
第三个文件夹是typechain-types 它是合约所对应的TypeScript类型文件,如果你是用TypeScript,那么它非常用用,因为我们没有学习solidity,所以这里的很多概念,我们一带而过,等后面学习智能合约时再一点点讲解。
7.3 第三个命令是clean 它可以帮助我们清理掉编译出来的文件,在命令行运行 npx haedhat clean
7.4 第四个命令是typechain 它可以帮我们生成对应的TypeScript类型文件,如果没有artifacts目录的话,也会一并生成
7.5 第五个命令是 test 在命令行运行 npx hardhat test 会运行所有的单元测试,hardhat使用测试框架摩卡【ohai】测试代码和普通的JavaScript单元测试没有上面区别。
7.6 第六个命令是 coverage 它的作用是运行单元测试,并同时生成单元测试覆盖率报告 运行 npx hardhat coverage
7.7 第七个命令是 run 它可以运行scripts目录下的脚本,比如将我们的合约部署到指定的网络中,在命令行运行 npx hardhat run scripts/deploy.ts 它会运行我们的scripts/deploy.ts,并在控制台打印合约部署后的地址
7.8 第八个命令是 node 在命令行运行 npx hardhat node 它可以帮助我们在本地启动一个区块链网络,并提供一个服务节点,服务节点默认的 JSON-RPC 地址是http://127.0.0.1:8545 同时它还会在控制台输出20个以太坊钱包地址和私钥。每个账户会包含10000个ETH用于测试,剩下的四个命令现在并不是很好理解,我们在后面适当的时候和给大家介绍,请一定要将开发环境搭建好,并尝试一下流程中介绍到的hardhat命令。
智能合约HardHat框架环境的搭建的更多相关文章
- Go语言打造以太坊智能合约测试框架(level1)
传送门: 柏链项目学院 Go语言打造以太坊智能合约测试框架 前言 这是什么? 这是一个基于go语言编写的,自动化测试以太坊智能合约的开发框架,使用此框架,可以自动化的部署合约,自动测试合约内的功能函数 ...
- 实现CTF智能合约题目的环境部署
本文章是参考一位大佬博客学来的. 智能合约题的环境主要包括两部分:一个是智能合约的部署,另一个就是监听合约事件进而发送flag的脚本. 智能合约部署 这里写的合约是指solidity合约,使用Remi ...
- django框架 - 环境的搭建
本章介绍django的mac环境的搭建,IDE使用的是pycharm,步骤如下: 第一步:新建项目 第二步:选择django项目模版 第三步:在终端中使用命令创建myapp应用 第四步:在settin ...
- Go语言打造以太坊智能合约测试框架(level3)
传送门: 柏链项目学院 第三课 智能合约自动化测试 之前课程回顾 我们之前介绍了go语言调用exec处理命令行,介绍了toml配置文件的处理,以及awk处理文本文件获得ABI信息.我们的代码算是完成了 ...
- Go语言打造以太坊智能合约测试框架(level2)
传送门: 柏链项目学院 第二课 智能合约自动化编译 前期内容回顾 之前我们的介绍的是如何通过solc编译智能合约,并且调用智能合约,本节我们继续实践,将智能合约的代码自动化编译以及abi文件生成搞定. ...
- SSH三个主流框架环境的搭建
part 1 Hibernate环境的搭建 part2 struts2环境的搭建 第一步:从struts2官网下载需要的各种资料和jar包 第二步:在ecplise里面创建web项目,然后在web ...
- IDEA搭建Spring框架环境
一.spring 框架概念 spring 是众多开源 java 项目中的一员,基于分层的 javaEE 应用一站式轻量 级开源框架,主要核心是 Ioc(控制反转/依赖注入) 与 Aop(面向切面) ...
- Spring框架环境搭建
环境要求:jdk 1.7 及以上.Spring版本:4.3.2 1.建立普通的java 工程 2.新建lib目录,并将一下5个核心jar包拷贝过来,并加入classpath中 下载地址: http: ...
- BOOM -- 智能合约编程
译注:原文首发于ConsenSys开发者博客,原作者为Eva以及ConsenSys的开发团队.如果您想要获取更多及时信息,可以访问ConsenSys首页点击左下角Newsletter订阅邮件.本文的翻 ...
- EOS基础全家桶(十一)智能合约IDE-EOS_Studio
简介 我们马上要进入智能合约的开发了,以太坊最初提供了智能合约的功能,并宣告区块链进入2.0时代,而EOS的智能合约更进一步,提供了更多的便利性和可能性.为了进一步了解智能合约,并进行开发,我们需要先 ...
随机推荐
- odoo 开发入门教程系列-准备一些操作(Action)?
准备一些操作(Action)? 到目前为止,我们主要通过声明字段和视图来构建模块.在任何真实的业务场景中,我们都希望将一些业务逻辑链接到操作按钮.在我们的房地产示例中,我们希望能够: 取消或将房产设置 ...
- 【Diary】CSP-S 2020 游记
一年 好快 从三百多天倒计时 一点一点掂着 又回来了 但是时间永远不会等待你. --??? CSP-J1/S1 CSP-J1/S1 Day0 请了一上午假. 这段时间都在摸鱼,作业没写( 多备赛一个上 ...
- 全网最详细中英文ChatGPT-GPT-4示例文档-智能聊天机器人从0到1快速入门——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)
目录 Introduce 简介 setting 设置 Prompt 提示 Sample response 回复样本 API request 接口请求 python接口请求示例 node.js接口请求示 ...
- 多态 polymorphic
多态是同一个行为具有多个不同表现形式,多态实现需要以下条件 继承父类并重写方法 父类引用指向子类对象:Animal a = new Cat(); 多态实例: //测试类 public class Te ...
- 【c#表达式树】最完善的表达式树Expression.Dynamic的玩法
引言 在我第一次写博客的时候,写的第一篇文章,就是关于表达式树的,链接:https://www.cnblogs.com/1996-Chinese-Chen/p/14987967.html,其中,当时一 ...
- NextCloud 在lnmp下 nginx 的配置
server { listen 80; listen [::]:80; server_name lnmp.org www.lnmp.org; root /home/wwwroot/nextcloud; ...
- Go语言实现网盘系统(未完)
该项目将基于go-zero和xorm go-zero中文文档: https://legacy.go-zero.dev/cn/ Xorm中文文档: http://xorm.topgoer.com/ 功能 ...
- SMBMS超市管理系统(Javaweb项目)
SMBMS超市管理系统(Javaweb项目) 项目环境 jdk 1.8.0_261 mysql 8.0.21 IDEA 2021.2.2 项目架构 数据库 项目源代码 filer 字符编码过滤器 pa ...
- 搭建CTF动态靶场
前言 本文借鉴文章:https://www.yuque.com/dengfenglai-esbap/kb/mc4k41?#xOxNG 在此基础上修改了一点(照着原来的做没成功),感谢这位师傅给的资源. ...
- DRF的限流组件(源码分析)
DRF限流组件(源码分析) 限流,限制用户访问频率,例如:用户1分钟最多访问100次 或者 短信验证码一天每天可以发送50次, 防止盗刷. 对于匿名用户,使用用户IP作为唯一标识. 对于登录用户,使用 ...