我也问过同样的问题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行找不到标识符或标识符不唯一:
IERC721Full private _token;
CappedCrowdsale
继承了Crowdsale
合约,除了CappedCrowdsale的_cap之外,该合约还以(uint256速率,地址钱包,IERC20令牌)为参数。就我而言,我必须将IERC20替换为IERC721。
我不确定是否/如何导入ERC721Full
和接口ERC721Mintable
,因为ERC721Mintable
不带构造函数参数,但继承了ERC721Full
,它带两个字符串名称,符号分别。对于导入相关库并相应地构建构造函数的任何提示,更正和建议,我将不胜感激。也可以随意评论我对库的选择,让我知道您对0xcert,模块化网络的看法。
答案 0 :(得分:0)
您可以研究Su Squares使用的方法。
https://github.com/su-squares/ethereum-contract/blob/master/contracts/SuNFT.sol
通过在创建合同时铸造10,000个令牌来实现。令牌由合同本身拥有。然后人们可以从合同中购买代币。
之所以选择这种方式,是因为每个令牌都已经在主页上可见。另外,我们希望在出售令牌之前为令牌分配元数据。
您可以选择使用这种方法,也可以选择其他方法。