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框架环境的搭建的更多相关文章

  1. Go语言打造以太坊智能合约测试框架(level1)

    传送门: 柏链项目学院 Go语言打造以太坊智能合约测试框架 前言 这是什么? 这是一个基于go语言编写的,自动化测试以太坊智能合约的开发框架,使用此框架,可以自动化的部署合约,自动测试合约内的功能函数 ...

  2. 实现CTF智能合约题目的环境部署

    本文章是参考一位大佬博客学来的. 智能合约题的环境主要包括两部分:一个是智能合约的部署,另一个就是监听合约事件进而发送flag的脚本. 智能合约部署 这里写的合约是指solidity合约,使用Remi ...

  3. django框架 - 环境的搭建

    本章介绍django的mac环境的搭建,IDE使用的是pycharm,步骤如下: 第一步:新建项目 第二步:选择django项目模版 第三步:在终端中使用命令创建myapp应用 第四步:在settin ...

  4. Go语言打造以太坊智能合约测试框架(level3)

    传送门: 柏链项目学院 第三课 智能合约自动化测试 之前课程回顾 我们之前介绍了go语言调用exec处理命令行,介绍了toml配置文件的处理,以及awk处理文本文件获得ABI信息.我们的代码算是完成了 ...

  5. Go语言打造以太坊智能合约测试框架(level2)

    传送门: 柏链项目学院 第二课 智能合约自动化编译 前期内容回顾 之前我们的介绍的是如何通过solc编译智能合约,并且调用智能合约,本节我们继续实践,将智能合约的代码自动化编译以及abi文件生成搞定. ...

  6. SSH三个主流框架环境的搭建

    part 1  Hibernate环境的搭建 part2  struts2环境的搭建 第一步:从struts2官网下载需要的各种资料和jar包 第二步:在ecplise里面创建web项目,然后在web ...

  7. IDEA搭建Spring框架环境

      一.spring 框架概念 spring 是众多开源 java 项目中的一员,基于分层的 javaEE 应用一站式轻量 级开源框架,主要核心是 Ioc(控制反转/依赖注入) 与 Aop(面向切面) ...

  8. Spring框架环境搭建

    环境要求:jdk  1.7 及以上.Spring版本:4.3.2 1.建立普通的java 工程 2.新建lib目录,并将一下5个核心jar包拷贝过来,并加入classpath中 下载地址: http: ...

  9. BOOM -- 智能合约编程

    译注:原文首发于ConsenSys开发者博客,原作者为Eva以及ConsenSys的开发团队.如果您想要获取更多及时信息,可以访问ConsenSys首页点击左下角Newsletter订阅邮件.本文的翻 ...

  10. EOS基础全家桶(十一)智能合约IDE-EOS_Studio

    简介 我们马上要进入智能合约的开发了,以太坊最初提供了智能合约的功能,并宣告区块链进入2.0时代,而EOS的智能合约更进一步,提供了更多的便利性和可能性.为了进一步了解智能合约,并进行开发,我们需要先 ...

随机推荐

  1. ES5新增数组常见方法(indexof/forEach/map/filter)

    新增的数组常见方法:以下说明中,红色为必选参数,蓝色为可选参数 1.indexOf(data,start); 用于返回某个数组或者字符串中规定字符或者字符串的位置: var arr = [" ...

  2. SpringBoot打包成exe(别再用exe4j了,使用JDK自带工具)

    SpringBoot打包成exe(别再用exe4j了,使用JDK自带工具) 搜到大部分打包exe的文章都是使用exe4j打包 步骤贼多,安装麻烦,打包麻烦 收费软件,公司使用会吃律师函 JDK14以上 ...

  3. 端口转发、Http Tunnel、内网穿透

    原文链接:https://www.yuque.com/tec-nine/architecture/mgxc71 SSH 命令帮助 命令行选项有: -a 禁止转发认证代理的连接. -A 允许转发认证代理 ...

  4. day04-SpringCloud Eureka-服务注册与发现01

    SpringCloud Eureka-服务注册与发现01 1.Eureka介绍 1.1学习Eureka前的说明 目前主流的服务注册&发现的组件是 Nacos,但是 Eureka 作为老牌经典的 ...

  5. kubernetes(k8s) 安装 Prometheus + Grafana

    kubernetes(k8s) 安装 Prometheus + Grafana 组件说明 MetricServer:是kubernetes集群资源使用情况的聚合器,收集数据给kubernetes集群内 ...

  6. flask基本项目结构

    |-- myproject |-- config.py |-- flask-env.yml |-- manage.py |-- app | |-- models.py | |-- __init__.p ...

  7. Java设计模式 —— 代理模式

    15 代理模式 15.1 代理模式概述 Proxy Pattern: 给某一个对象提供一个代理或占位符,由代理对象来控制对原对象的访问. 代理对象是客户端和目标对象的之前的桥梁,它接收来自客户端的请求 ...

  8. MySQL(九)InnoDB数据结构

    InnoDB数据结构 1 数据库的存储结构:页 ​ 索引信息和数据记录都是保存在文件上的,确切来说是保存在页结构中:另一方面,索引是在存储引擎上实现的,MySQL服务器上的存储引擎负责对表中数据的读取 ...

  9. Linux 阶段二

    1.2 安装JDK JDK具体安装步骤如下: 1). 上传安装包 使用FinalShell自带的上传工具将jdk的二进制发布包上传到Linux 由于上述在进行文件上传时,选择的上传目录为根目录 /,上 ...

  10. Django框架——静态文件配置、form表单、request对象、连接数据库、ORM简介、ORM基本操作和语句

    配置文件介绍 SECRET_KEY = '0yge9t5m9&%=of**qk2m9z^7-gp2db)g!*5dzb136ys0#)*%*a' # 盐 DEBUG = True # 调试模式 ...