Opensea识别NFT创建者规则 如何设置minter钱包为NFT创建者
一、OpenSea 代币创建者识别逻辑
- 优先读取ERC721/ERC1155标准的
tokenURI返回元数据中creator字段的配置,若有明确配置则直接采用该地址作为创建者 - 若元数据未配置
creator字段,OpenSea会默认取NFT首次铸造交易的发起地址,如果铸造是合约内部触发、交易的from地址为合约本身,就会把合约地址识别为创建者,你当前xarb合约遇到的就是该类情况 - 对于兼容OpenSea元数据标准的合约,平台也会主动读取合约实现的
creatorOf(uint256 tokenId)方法的返回值作为对应NFT的创建者
二、设置minter钱包为NFT创建者的实现方案
- 方案1:元数据侧配置:每个NFT的
tokenURI返回的JSON结构中明确新增creator字段,值为对应NFT铸造者的钱包地址,该方案无需修改已部署的合约逻辑,仅需调整元数据生成规则即可 - 方案2:合约侧实现兼容接口:若需修改合约,可在xarb合约中新增
creatorOf(uint256 tokenId)公开查询方法,铸造NFT时同步将对应tokenId的minter地址存入链上映射,该查询方法直接返回映射中存储的地址即可,OpenSea会优先读取该接口的返回值 - 方案3:调整铸造交易结构:若你的业务场景支持用户主动发起铸造,调整合约逻辑让铸造交易的
msg.sender为用户钱包地址而非合约内部调用触发,OpenSea会直接识别交易发起地址为对应NFT的创建者
Foundation的单合约实现采用的就是上述方案2,在合约中内置了铸造者记录和对应的查询接口,因此不会出现创建者显示为合约地址的问题。
内容的提问来源于stack exchange,提问作者FaSh
相关产品推荐
相关产品推荐

