Я задал тот же вопрос здесь, используя псевдоним здесь, чтобы привлечь больше внимания. Я думаю о создании закрытого контракта на массовую продажу с использованием CappedCrowdsale
и MintableERC721
OpenZeppelin. Интересно, лучше ли чеканить жетоны после достижения предела или чеканить отдельно после получения платежа?
Я начал строить его, предполагая, что чеканят в конце массовых распродаж, но я не уверен в некоторых вещах. Я придумал следующее:
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){}
}
Текущая версия выдает ошибку DeclarationError: Идентификатор не найден или не уникален в строке 17:
IERC721Full private _token;
CappedCrowdsale
наследует контракт Crowdsale
, который принимает (скорость uint256, адрес кошелька, токен IERC20) в качестве параметров в дополнение к _cap из CappedCrowdsale. В моем случае мне пришлось бы заменить IERC20 на IERC721.
Я не уверен, следует ли / как мне импортировать ERC721Full
и интерфейс ERC721Mintable
, потому что ERC721Mintable
не принимает параметров конструктора, но наследует ERC721Full
, который принимает две строки имени и символа соответственно. Буду признателен за любые подсказки, исправления и предложения по импорту соответствующих библиотек и соответствующему построению конструктора. Не стесняйтесь комментировать мой выбор библиотеки, дайте мне знать, что вы думаете о 0xcert, Modular-Networks.
Вы можете изучить подход, который использует Su Squares.
https://github.com/su-squares/ethereum-contract/blob/master/contracts/SuNFT.sol
Это работало путем чеканки 10000 токенов во время создания контракта. Токены принадлежали самому контракту. Затем люди могут покупать токены по контракту.
Причина, по которой мы выбрали этот подход, заключается в том, что каждый из токенов уже был виден на главной странице. Также мы хотели присвоить токенам метаданные до того, как они будут проданы.
Вы можете использовать подобный подход или разработать другой подход.