solidity - 在 BSCScan.com 上验证合同
问题描述
我在一个朋友的帮助下创建了一种加密货币(我们花了很长时间从这里和那里复制粘贴代码)并编辑合同的信息,这对我来说至关重要,我现在需要验证合同。这是我的合约地址:
0xe1c7a0d5e099a1f0c14b60b0c320423cf2f4543b
这是我在 Remix 中使用的代码:
pragma solidity >=0.8.0;
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol";
contract HelpingArtistsAtRisk is ERC20 {
constructor(uint256 initialsupply) public ERC20 ("Helping Artists At Risk", "HAAR"){
_mint(msg.sender,initialsupply);}
}
当我尝试验证它时,它给我一个又一个错误。以下是错误消息:
警告:源文件中未提供 SPDX 许可证标识符。在发布之前,请考虑向每个源文件添加包含“SPDX-License-Identifier:”的注释。对非开源代码使用“SPDX-License-Identifier: UNLICENSED”。请参阅https://spdx.org了解更多信息。--> myc
ParserError:未找到源“https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol”:不支持文件导入回调-> myc:3:1:| 3 | 导入“https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol”
BEP-20.sol:1:1:错误:编译器版本 >=0.8.0 不满足 r semver 要求
ParserError:预期的编译指示、导入指令或合同/接口/库/结构/枚举/常量/函数定义。--> myc:1:1: | 1 | “SPDX 许可证标识符:未经许可” | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
我只是想获得 BSCSCAN 的验证。
解决方案
从solidity 0.6.8开始,你应该为你的合约设置一个License header,所以你需要在文件的第一行添加这个:
// SPDX-License-Identifier: UNLICENSED
您可以使用 UNLICENSED 或使用预定义的许可证之一。这是列表:https ://spdx.org/licenses/
有关 SPDX 许可证herader 的更多信息:https ://forum.openzeppelin.com/t/solidity-0-6-8-introduces-spdx-license-identifiers/2859
这应该可以修复您的第一个警告和最后一个错误。
进行此更改后,我能够使用 remix 编译合约,但我认为所有其他错误都与编译器版本有关,您能否分享您在编译器选项中看到的版本和其他设置?
我正在使用编译器 0.8.4+commit.c7e474f2
您还需要删除构造函数中的 public 关键字,编译器会忽略它。最终结果是:
// SPDX-License-Identifier: UNLICENSED
pragma solidity >=0.8.0;
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol";
contract HelpingArtistsAtRisk is ERC20 {
constructor(uint256 initialsupply) ERC20 ("Helping Artists At Risk", "HAAR"){
_mint(msg.sender,initialsupply);}
}
推荐阅读
- sql - 数据库查询以生成基于时间的图表
- nativescript - Nativescript 应用程序因“遇到未定义的提供程序!”而崩溃 在 IOS 上加载模块但在 Android 上工作之前
- mysql - MYSQL,包括空结果
- shell - 检查文件是否存在于 3 个不同的目录中并将它们移动到另一个
- curl - 在 VS2017、x64 中使用 curl
- sql - MIN DATE 有两个表和同一项目的多个实例
- email - 使用 Godaddy、SMTP2Go 和 Netlify 进行电子邮件转发
- python - 您如何使用 python 3 在 tkinter gui 中制作滚动页面,就像在网站上一样?
- javascript - 如何找到多重集的所有分区,其中每个部分都有不同的元素?
- amazon-web-services - 批量处理 AWS Lambda 消息