首页 > 其他分享 >智能合约HardHat框架环境的搭建

智能合约HardHat框架环境的搭建

时间:2023-06-17 13:22:40浏览次数:40  
标签:lcds 17 框架 888 2023 HardHat 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命令。

 

标签:lcds,17,框架,888,2023,HardHat,hardhat,合约,搭建
From: https://www.cnblogs.com/lcds/p/longchi18.html

相关文章

  • 基于Hexo和Butterfly创建个人技术博客,(2) 博客站点配置,Hexo框架_config.yml配置文件细
    Hexo官司网查看这里个人站点效果查看这里本章目标:掌握hexo框架_config.yml配置文件的配置方法特别说明:本文中的配置是建站必要的配置,表格单元格内有重要对于Hexo提供的扩展配置会在另外的章节随着功能一起讲解,因这些扩展功能全是可选的在建站时不一定会需要;yaml文件的值可带引......
  • DNS服务搭建
     DNS的查询方式迭代查询迭代查询是指DNS客户端向DNS服务器发送一个请求,该服务器返回其所负责的一部分域名信息,让客户端接管查询的任务。客户端再向这个所负责的一部分域名信息中的另一个DNS服务器发出查询请求,直到最终查询得到结果为止。 递归查询递归查询是指DNS客户端向......
  • 【GStreamer rtsp】gstreamer-rtsp-server开发环境搭建
    1.安装gstreamer基础库sudoapt-getinstalllibgl1-mesa-devsudoapt-getinstallgstreamer1.0-libavsudoapt-getinstallgstreamer1.0-plugins-badsudoapt-getinstallgstreamer1.0-plugins-basesudoapt-getinstallgstreamer1.0-plugins-uglysudoapt-getinstall......
  • 基于uniapp+vite4+vue3搭建跨端项目|uni-app+uview-plus模板
    最近得空学习了下uniapp结合vue3搭建跨端项目。之前也有使用uniapp开发过几款聊天/仿抖音/后台管理等项目,但都是基于vue2开发。随着vite.js破局出圈,越来越多的项目偏向于vue3开发,就想着uniapp搭配vite4.x构建项目效果会如何?经过一番尝试果然真香~版本信息HBuilderX:3.8.4Vite......
  • Java分布式框架之Dubbo
    分布式与微服务 1、传统架构当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是影响项目开发的关键。存在的问题:代码耦合,开发维护困难无法对不同模块进行针对性优化无法水平扩展单点容错率低,并......
  • Day01 1.4 Python虚拟环境的搭建
    Day011.4Python虚拟环境的搭建【一】虚拟环境介绍(1)虚拟环境优点1、使不同应用开发环境相互独立2、环境升级不影响其他应用,也不会影响全局的python环境3、防止出现包管理混乱及包版本冲突(2)什么是虚拟环境,为什么要有它?它解决了什么问题操作系统装了python3.8使用djang......
  • pytest + yaml 框架 -38.企业微信机器人通知
    前言v1.3.2版本支持企业微信机器人发送报告通知了。pipinstallpytest-yaml-yoyo获取企业微信机器人token创建群聊机器人获取到webhook访问地址https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=*********************key=后面的这串就是我们要的token配置......
  • cenos 搭建k8s集群
    1、准备环境#开放防火墙端口或关闭防火墙systemctlstopfirewalld#关闭selinux setenforce0或者 永久修改sed-i's/enforcing/disabled/'/etc/selinux/config#关闭swaswapoff-a#三台服务器都修改/etc/hoststest1作为mastertest2作为节点1test3作为节点2# ......
  • python测试系列教程——python+Selenium+chrome自动化测试框架
    需要的环境浏览器(Firefox/Chrome/IE…)PythonSeleniumSeleniumIDE(如果用Firefox)FireBug、FirePath(如果用Firefox)chromedriver、IEDriverServer、phantomjs.exeIDE(Pycharm/Sublime/Eclipse…)1、浏览器建议用Firefox或Chrome,千万不要用最新版本,要用早两到三个版本的。2......
  • Docsify on VPS,搭建最简个人博客
    前一段VPS到期了,续费重启之后发现我的Ghost博客系统起不来了,想升级到最新5.0,一看还需要配套升级Nodejs和MySQL。我是一个特别怕麻烦的人,想着干脆看看有没有新的方案,更轻量级的,让知识记录和分享更没有负担的方案。网上搜了一圈,感觉拿Docsify做个博客网站不错,静态页面,没有数据库依......