我正在研究荷兰式拍卖风格的 ICO 合同,我目前正在尝试迁移我的 ERC20 合同的早期阶段以测试基本功能(它是否具有正确的名称、符号和小数点)。合同可以编译,但我无法迁移它,因为它是一个“抽象合同”。我的代币合约继承自 ERC20Detailed,即 Open Zeppelin 合约,后者又继承自 IERC20 接口合约。我能做些什么来解决这个问题?我尝试让我的 Token 合约也从 ERC20 继承基础合约,但它说标识符已经声明。我看到了来自 Truffle 终端输出的可能响应,但我很好奇为什么我的实现不起作用,并且希望在理解 Solidity 接口和抽象合约方面获得更多帮助。
我能做些什么来解决这个问题?我尝试让我的 Token 合约也从 ERC20 继承基础合约,但它说标识符已经声明。
pragma solidity ^0.5.8;
import "node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol";
contract Token is ERC20Detailed{
constructor(string memory _name, string memory _symbol, uint8 _decimals)
ERC20Detailed(_name, _symbol, _decimals)
public
{
}
}
Bash 终端的输出
“Token”是抽象合约或接口,无法部署。* 将抽象导入到使用它们的“.sol”文件中,而不是单独部署它们。* 继承抽象的合约必须准确地实现它的所有方法签名。* 仅实现部分继承抽象的合约也被认为是抽象的。