4

我目前正在构建符合 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 进行验证。现在这只是一个单一的文件合同。

4

2 回答 2

7

简而言之,由于我对 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 网络应用程序中无法验证包含导入文件的合约。

如果有人有兴趣了解我是如何构建这一切的,那么最终产品就这里

于 2021-05-28T15:51:28.797 回答
0

npx hardhat flatten以前把所有的代码都编译成一页,然后把代码复制粘贴到Etherscan的单文件验证中。我认为如果你只是在学习在 Etherscan 中验证你的智能合约,那很好。但说到生产级代码,我认为 OP 的解决方案更好。

于 2022-02-28T13:14:18.787 回答