• 介绍
• 构建信息文件
• 读取artifacts
• 目录结构
• hardhat Tutorials , hardhat 教程
• Contact 联系方式

• 介绍

使用 Hardhat 编译会为每个编译的合约生成两个文件(不是每个 .sol 文件):一个工件和一个调试文件。

artifact 拥有部署和与合约交互所需的所有信息。这些与大多数工具兼容,包括 Truffle 的工件格式。每个工件都包含一个具有以下属性的 json:

  • contractName:带有合同名称的字符串。

  • abi:合约 ABI 的 JSON 描述。

  • bytecode:未链接的部署字节码的"0x"-前缀十六进制字符串。如果合约不可部署,则它具有字符串“0x”。

  • deployedBytecode:未链接的运行时/已部署字节码的前缀为 "0x" 的十六进制字符串。如果合约不可部署,则它具有字符串“0x”。

  • linkReferences:字节码的链接引用对象 由 solc 返回。如果合约不需要链接,则此值包含一个空对象。

  • deployedLinkReferences:已部署字节码的链接引用对象 由 solc 返回。如果合约不需要链接,则此值包含一个空对象。

调试文件包含重现编译和调试合约所需的所有信息:这包括原始的 solc 输入和输出,以及用于编译它的 solc 版本。

• 构建信息文件

Hardhat 通过一次编译尽可能少的文件集来优化编译。一起编译的文件具有相同的 solc 输入和输出。由于在每个调试文件中包含此信息会非常浪费,因此此信息将在构建信息文件中进行重复数据删除,这些文件位于 artifacts/build-info 中。每个合约调试文件都包含其构建信息文件的相对路径,每个构建信息文件包含 solc 输入、solc 输出和使用的 solc 版本。

您不应该直接与这些文件交互。

• 读取artifacts

[HRE] 有一个带有辅助方法的 artifacts 对象。例如,您可以通过调用 hre.artifacts.getArtifactPaths() 获取所有工件的路径列表。

您还可以通过调用 hre.artifacts.readArtifact("Bar") 使用合约名称读取工件,这将返回 Bar 合约的工件内容。这只有在整个项目中只有一个名为“Bar”的合约时才有效;如果有两个,它会抛出一个错误。为了消除这种情况的歧义,您必须使用合约的完全限定名称hre.artifacts.readArtifact("contracts/Bar.sol:Bar")

• 目录结构

artifacts/ 目录的结构遵循合约的原始目录结构。例如,如果您的合同如下所示:

contracts
├── Foo.sol
├── Bar.sol
└── Qux.sol

那么您的工件目录的结构将如下所示:

artifacts
└── contracts├── Foo.sol│   ├── Foo.json│   ├── Foo.dbg.json│   ├── Foo2.json│   └── Foo2.dbg.json├── Bar.sol│   ├── Bar.json│   └── Bar.dbg.json└── Qux.sol├── Foo.json└── Foo.dbg.json

源代码中的每个 Solidity 文件都会在工件结构中获得一个目录。这些目录中的每一个都包含一个工件(.json)文件和一个调试(.dbg.json)文件,用于该文件中的每个_contract_。例如,Foo.sol 内部包含两个合约。

两个 Solidity 文件可以有同名的合约,这种结构允许这样做。

• hardhat Tutorials , hardhat 教程

CN 中文 Github hardhat 教程 : github.com/565ee/hardhat_CN
CN 中文 CSDN hardhat 教程 : blog.csdn.net/wx468116118
EN 英文 Github hardhat Tutorials : github.com/565ee/hardhat_EN

• Contact 联系方式

Homepage : 565.ee
微信公众号 : wx468116118
微信 QQ : 468116118
GitHub : github.com/565ee
CSDN : blog.csdn.net/wx468116118
Email : 468116118@qq.com

118 以太坊 ethereum hardhat :编译 artifacts相关推荐

  1. 10U 以太坊 ethereum hardhat : 创建项目

    • 设置项目 • 示例安全帽项目 • 测试 • 外部网络 • 插件和依赖项 • hardhat Tutorials , hardhat 教程 • Contact 联系方式 • 设置项目 Hardhat ...

  2. 11C 以太坊 ethereum hardhat : 编写脚本

    • 介绍 • 使用 Hardhat CLI 运行脚本 • 独立脚本:使用 Hardhat 作为库 • Hardhat参数 • hardhat Tutorials , hardhat 教程 • Cont ...

  3. 使用Ethereum C++ Aleth客户端创建具有两个同步节点的以太坊Ethereum私有网络

    Creating A Private Network With Two Syncing Nodes 本文是前面两篇文章的延续,链接分别为:Windows10安装Aleth和使用Ethereum C++ ...

  4. 【以太坊】ubuntu安装以太坊ethereum的测试网络ropsten-net以及雷电网络raiden-network环境...

    ubuntu安装以太坊ethereum的测试网络ropsten-net以及雷电网络raiden-network环境 前言 为了保证环境稳定,我从头开了一个虚拟机. 环境如下 xiaoyu@xiaoyu ...

  5. 使用web3和infura开发以太坊ethereum区块链

    web3 Github: https://github.com/ethereum/web3.js/ web3.js是以太坊提供的一个Javascript库,它封装了以太坊的RPC通信API,提供了一系 ...

  6. 【以太坊】ubuntu安装以太坊ethereum的测试网络ropsten-net以及雷电网络raiden-network环境

    ubuntu安装以太坊ethereum的测试网络ropsten-net以及雷电网络raiden-network环境 前言 为了保证环境稳定,我从头开了一个虚拟机. 环境如下 xiaoyu@xiaoyu ...

  7. 以太坊(Ethereum) - 让浏览器支持区块链(MetaMask)

    章节 以太坊(Ethereum) – 是什么 以太坊(Ethereum) – 什么是智能合约 以太坊(Ethereum) – 以太币 以太坊(Ethereum) – 虚拟机(E.V.M.) 以太坊(E ...

  8. 以太坊(Ethereum) - 什么是智能合约

    章节 以太坊(Ethereum) – 是什么 以太坊(Ethereum) – 什么是智能合约 以太坊(Ethereum) – 以太币 以太坊(Ethereum) – 虚拟机(E.V.M.) 以太坊(E ...

  9. 以太坊(Ethereum) - 网络节点

    章节 以太坊(Ethereum) – 是什么 以太坊(Ethereum) – 什么是智能合约 以太坊(Ethereum) – 以太币 以太坊(Ethereum) – 虚拟机(E.V.M.) 以太坊(E ...

最新文章

  1. MybatisPlus忽略实体类中的非数据库字段、JPA忽略实体类中的非数据库字段、HeHibernate忽略实体类中的非数据库字段
  2. Windows自带certutil工具校验用法
  3. 【端口号和服务漫谈】
  4. python+OpenCv+dlib实现人脸68个关键点检测
  5. 问卷 假设检验 t检验_真实问题的假设检验
  6. 如何优化WebAPP性能:从四个层面上彻底优化前端项目性能
  7. 干货!总结19个提升iOS开发技术的必看教程!
  8. Android 系统(147)---proc—cpufreq
  9. 极兔速递完成17.35亿美元融资?回应:不实消息
  10. java stream Interface Collector<T,A,R>
  11. Activiti6.0 安装出错 log4j:ERROR setFile(null,true) call failed.
  12. mysql中kill掉所有锁表的进程
  13. layui 自定义排序_layui使用心得
  14. idea使用教程-安装
  15. AD15使用出现的小问题
  16. 男生必学,与女生聊天技巧
  17. dhcp服务器修改网关地址,5.1.9 配置DHCP客户端网关地址
  18. python 3 4j不是合法的_3 4j 是合法Python数字类型。
  19. 图像的低频,中频,高频信息含义?
  20. MySQL 实际内存分配

热门文章

  1. PAT 乙级 1002 写出这个数
  2. 窗体内公用的数据表,在使用视图和行过滤时的有趣现象
  3. CLOB、BLOB , CLOB与BLOB的区别
  4. STM32蜂鸣器实例详解
  5. Uncaught (in promise) Error: Network Error at e.exports (axios.js:8:6410) at d.onerror (axio
  6. 免费AWS EC2实例
  7. Matlab bsxfun函数解析
  8. Linux下查看CPU核数
  9. Win10提示“无法创建新的分区也找不到现有的分区”
  10. .php on line 0,PHP Fatal error: Could not queue new timer in Unknown on line 0