hardhat-zksync-vyper


hardhat-zksync-vyper

这个插件用于在将Vyper智能合约部署到zkSync Era之前提供一个方便的接口来编译它们。

安装

@matterlabs/hardhat-zksync-vyperopen in new window

这个插件与 @nomiclabs/hardhat-vyperopen in new window 一起使用。 要使用它,你必须在hardhat.config.ts文件中安装并导入两个插件。

import "@nomiclabs/hardhat-vyper"import "@matterlabs/hardhat-zksync-vyper";

用以下命令将该插件的最新版本添加到你的项目中。

# Yarn
yarn add -D @matterlabs/hardhat-zksync-vyper

# Npm
npm i -D @matterlabs/hardhat-zksync-vyper

出口

这个插件通常不会在代码中直接使用。

配置

zkvyper: {
  version: "0.1.0",
  compilerSource: "binary",  // binary or docker
  settings: {
    compilerPath: "zkvyper",  // ignored for compilerSource: "docker"
    experimental: {
      dockerImage: "matterlabs/zkvyper",  // required for compilerSource: "docker"
      tag: "latest"  // required for compilerSource: "docker"
    },
    libraries{} // optional. References to non-inlinable libraries

  }
}
networks: {
  hardhat: {
    zksync: true  // enables zksync in hardhat local network
  }
}
  • version是一个包含zkvyper编译器版本的字段。编译器的版本可以在[以下资源库](https://github.com/matter-labs/zkvyper-bin)中找到。
  • compilerSource表示编译器来源,可以是dockerbinary(推荐)。如果没有已经安装的二进制编译器,该插件将自动下载它。如果使用docker,你需要在后台运行Docker桌面,并在实验部分提供dockerImagetag
  • compilerPath(可选)是一个包含zkvyper二进制文件路径的字段。默认情况下,会使用$PATH中的二进制文件。如果compilerSourcedocker,这个字段将被忽略。
  • dockerImagetag构成了编译器docker镜像的名称。如果compilerSourcebinary,这些字段将被忽略。
  • libraries如果你的合同使用非可linable库作为依赖,必须在这里定义。了解更多关于在这里编译库
  • zksync网络选项表示zkvyper是否在某个网络上被启用。默认为 "false"。对多链项目很有用,你可以只对特定的网络启用zksync

Note

编译器不再作为Docker镜像发布,不再推荐使用。使用compilerSource: "binary"在Hardhat配置文件中使用二进制文件来代替。

命令

hardhat compile -- 编译contracts目录下的所有智能合约,并创建artifacts-zk文件夹,其中包含所有编译工件,包括合约的工厂依赖,可用于合约部署。

要了解什么是工厂依赖,请阅读Web3 API文档中的更多内容。