智能合约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的智能合约更进一步,提供了更多的便利性和可能性.为了进一步了解智能合约,并进行开发,我们需要先 ...
随机推荐
- MySQL相关知识点思维导图整理
MySQL相关知识点思维导图整理 Xmind思维导图下载地址: 蓝奏云:https://shuihan.lanzoui.com/iXZw7frkn5a
- go微服务框架kratos学习笔记二(kratos demo 结构)
目录 api cmd configs dao di model server service 上篇文章go微服务框架kratos学习笔记一(kratos demo)跑了kratos demo 本章来看 ...
- API获取商品评论?
前言 小伙伴们好,前两天因为个人原因耽误了内容的更新,在这里和所有的小伙伴道个歉,今天CC和大家唠唠商品评论的这个话题,大家在网上购物的决策会因为<商品评论的好坏>吗,相信绝大的一部分的小 ...
- python之多线程操作
线程模块 Python3 通过两个标准库 _thread 和 threading 提供对线程的支持. _thread 提供了低级别的.原始的线程以及一个简单的锁,它相比于 threading 模块的功 ...
- [Linux/Redis]搭建Redis集群
1 基本信息 3台服务器(CentOS7.3) 192.168.1.101 node101 192.168.1.102 node102 192.168.1.103 node103 2 单机 安装 Re ...
- [Git]解决GIT冲突问题:git pull failed
1 文由 花了很长时间一次性修改了项目的一大堆文件,准备最后git pull同步一下本地仓库代码,再一次性git commit,git push新代码的. but天不遂人愿,git pull时产生冲突 ...
- MySQL笔记之Checkpoint机制
CheckPoint是MySQL的WAL和Redolog的一个优化技术. 一.Checkpoint机制 CheckPoint做了什么事情?将缓存池中的脏页刷回磁盘. checkpoint定期将db b ...
- Java语言在Spark3.2.4集群中使用Spark MLlib库完成朴素贝叶斯分类器
一.贝叶斯定理 贝叶斯定理是关于随机事件A和B的条件概率,生活中,我们可能很容易知道P(A|B),但是我需要求解P(B|A),学习了贝叶斯定理,就可以解决这类问题,计算公式如下: P(A)是A的先验概 ...
- 【JavaSE】网络编程
1. 网络编程概述 网络编程的目的:直接或者间接地通过网络协议与其他计算机实现数据交换,进行通讯. 网络编程两个主要的问题: ①如何精准地定位网络上的一台或多台主机,并定位主机上的特定应用 ②找到主机 ...
- 【Dotnet 工具箱】WPF UI - 现代化设计的开源 WPF 框架
1.WPF UI - 现代化设计的开源 WPF 框架 WPF UI 是一个基于 C# 开发的, 拥有 4k star 的开源 UI 框架.WPF UI 在 WPF 的基础上,提供了更多的现代化,流利的 ...