我正在开发一个简单的NFT市场,人们可以连接自己的集合(每个集合都有自己的智能契约),并将这些集合的NFT出售。
我看到了一个教程,NFT在被列出出售时永远不会离开所有者的手,当销售完成时,直接发生在卖方和买方之间的转移。当然,卖方必须事先批准市场作为经营者。
然而,我看到了另一个教程,卖方在上市时将NFT转移到市场,然后当另一个人购买NFT时,市场将它转移给买方。我认为这不需要卖方对市场的“批准”。
每种方法的优缺点是什么?哪个比较常见?
发布于 2022-05-23 23:11:51
您的第一个教程是nft的一个简单示例。与市场无关。
市场是指便利买卖双方交换货物的任何地点,无论是个人还是网上。
如果您正在创建一个市场,那么您的Nft项应该有一个要在市场上列出的属性。
struct NftItem{
uint tokenId;
uint price;
// creator and owner are not same. creator someone who minted. creator does not change
address creator;
bool isListed;
}
当您创建一个Nft项目时,如果列出的是真的,它将在市场上列出,这样访问者就可以查看它。
function _createNftItem(uint tokenId,uint price) private{
require(price > 0, "Price must be at least 1 wei");
_idToNftItem[tokenId]=NftItem(
tokenId,
price,
msg.sender,
// I set listed true
true
);
}
发布于 2023-03-30 13:23:33
您的第一个教程非常类似于openSea。
我想在第一篇教程中,openSea获得了nft所有者的外部批准。因为在合同中,msg.sender不能调用审批函数。
有关更多信息,请阅读以下内容:https://github.com/OpenZeppelin/openzeppelin-contracts/issues/4137
https://ethereum.stackexchange.com/questions/128578
复制相似问题