使用导入的 OpenZeppelin 文件在 Etherscan 上验证和发布合同

问题描述

我目前正在构建符合 ERC721 的合约并已在此处发布合约:https://ropsten.etherscan.io/address/0xa513bc0a0d3af384fefcd8bbc1cc0c9763307c39 - 我正在尝试验证和发布合约源代码

我的文件的开头看起来像这样:

// SPDX-License-Identifier: MIT

// We will be using solidity version 0.8.4
pragma solidity 0.8.4;

import "@openzeppelin/contracts/token/ERC721/ERC721.sol";

contract ViperToken is ERC721 {

但是,当尝试使用 solidity 单个文件验证和发布时,出现以下错误

ParserError: Source "@openzeppelin/contracts/token/ERC721/ERC721.sol" not found: File import callback not supported
 --> myc:6:1:
  |
6 | import "@openzeppelin/contracts/token/ERC721/ERC721.sol"
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

任何人都可以指出我的方向 1. 解决这个问题或 2. 有关如何适当编写具有导入的依赖项的合同的文档,可以使用 Etherscan 进行验证。现在这只是一个单一的文件合同。

解决方法

简单地说,我必须钻进一个兔子洞才能解决这个问题,因为我对 Solidity 还很陌生。

我必须执行以下操作;

  1. 学习和使用 https://www.trufflesuite.com/ 来设置项目并将我的合同放在那里(使用 Ganache 对任何刚接触 Solidity 的人进行测试也有很大帮助)
  2. 使用 HD Wallet 提供程序包并按照此处的教程在 ropsten Etherscan https://medium.com/coinmonks/5-minute-guide-to-deploying-smart-contracts-with-truffle-and-ropsten-b3e30d5ee1e
  3. 最后,使用 truffle-plugin-verify https://github.com/rkalis/truffle-plugin-verify 在 Etherscan 上验证合约

总而言之,我很确定在 Etherscan 网络应用程序中无法验证包含导入文件的合同。

如果有人有兴趣了解我如何构建它,最终产品就在这里https://github.com/lukecurtis93/viper-nft(这只是我在网上找到的一个 CryptoKitties 克隆作为基础并更新了所有内容)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...