【发布时间】:2019-02-17 15:14:46
【问题描述】:
我也问过同样的问题here,在此使用别名以引起更多关注。我正在考虑使用 OpenZeppelin 的 CappedCrowdsale 和 MintableERC721 建立一个有上限的人群销售合同。我想知道是在达到上限后铸造代币还是在收到付款后单独铸造更好?
我已经开始通过假设在人群销售结束时铸造它来构建它,但我不确定一些事情。我想出了以下几点:
pragma solidity ^0.4.24;
import "./openzeppelin-solidity/contracts/crowdsale/validation/CappedCrowdsale.sol";
import "./openzeppelin-solidity/contracts/token/ERC721/ERC721Full.sol";
import "./openzeppelin-solidity/contracts/token/ERC721/ERC721Mintable.sol";
//import "./openzeppelin-solidity/contracts/token/ERC721/IERC721.sol";
contract SSale is CappedCrowdsale, ERC721Full {
using SafeMath for uint256;
/*
??? using ERC721Mintable for ERC721Full; ???
uint256 private _rate;
address private _wallet;
*/
IERC721 private _token;
/* @param _rate for Crowdsale
@param _wallet for Crowdsale
@param _token for Crowdsale
@param _cap for CappedCrowdsale
@param name for ERC721Full
@param symbol for ERC721Full
*/
constructor(uint256 _rate, address _wallet, IERC721 token,
uint _cap,
string name, string symbol) public
Crowdsale(_rate, _wallet, _token)
CappedCrowdsale(_cap)
ERC721Full(name, symbol){}
}
当前版本在第 17 行给出了 DeclarationError: Identifier not found or not unique:
IERC721Full private _token;
CappedCrowdsale 继承了 Crowdsale 合约,除了 CappedCrowdsale 的 _cap 之外,还以(uint256 汇率、地址钱包、IERC20 代币)为参数。在我的情况下,我必须用 IERC721 替换 IERC20。
我不确定是否/如何导入ERC721Full 和接口ERC721Mintable,因为ERC721Mintable 不接受构造函数参数,而是继承ERC721Full,分别接受两个字符串名称和符号。对于导入相关库和相应地构建构造函数的任何提示、更正和建议,我将不胜感激。也请随意评论我选择的库,让我知道您对 0xcert,Modular-Networks 的看法。
【问题讨论】:
标签: blockchain ethereum solidity smartcontracts