solidity - 仅通过 API 允许 NFT 铸造
问题描述
我正在构建一个具有不同 NFT 之间关系的 NFT 收集合同。这意味着每个铸造的 NFT 都有来自同一集合的纠缠 NFT(ei NFT #25 与 NFT#222 相关,反之亦然)。问题是我希望有一个网站可以随机化用户购买的 NFT 的 ID,所以他不能直接铸造可能很少见的纠缠不清的 NFT(用户很容易通过外观知道这一点)。
长话短说,我正试图找出一种方法来阻止用户铸造新的 NFT,但仍然让他们支付费用。我认为可能的唯一方法是使用铸币访问代码部署合约,该代码将由来自网络应用程序的铸币请求传递,因此:
uint256 MINT_PASS;
constructor(uint256 pass) ERC721("NFTexample", "XMP") public {
CEOaddress = msg.sender;
MINT_PASS = pass;
}
function minting(address recipient, string memory tokenURI, uint256 _tokenID, uint256 SECRET_CODE) public
returns (uint256)
{
require(MINT_PASS == SECRET_CODE);
uint256 newItemId = _tokenID;
_mint(recipient, newItemId);
}
我想做的事情有更好、更安全的实现吗?
解决方案
推荐阅读
- flutter - flutter_downloader 获得许多任务的进度
- python - 如何从其他几个 Dataframes 创建 Hierarchical Pandas Dataframes?
- flutter - pushReplacement 后弹出后返回数据
- css - 如何在css中创建继承如何DRY
- java - Java 反射:运行时修改意味着什么?
- html - HTML CSS - 在 div 上添加曲线
- elasticsearch - Elasticsearch - 从 OLD_INDEX 到 NEW_INDEX 的点别名
- python - Python 中的 format() 实际上是做什么的?
- scala - 重用在模式/匹配/替换/拆分 Spark 函数上使用的字符串
- c - 来自指针的填充结构是否会使对该结构的访问在释放后未定义?