Rinkeby测试网NFT在Opensea可见但Rarible不可见的原因排查
合约接口实现不完整
Rarible对ERC721/ERC1155标准的兼容性要求可能比Opensea更严格。比如你的新合约可能没实现ERC721Enumerable接口中的totalSupply、tokenByIndex、tokenOfOwnerByIndex方法,而旧合约包含了这些实现。Rarible的索引服务可能依赖这些方法来遍历合约内的所有NFT,缺少的话会导致无法正确抓取数据。另外,检查是否严格遵循了ERC标准的事件发射要求,比如铸造时必须从0x0000000000000000000000000000000000000000地址触发Transfer事件,新合约如果遗漏了这个事件,Rarible的索引器就无法检测到NFT的创建。元数据格式不符合Rarible的要求
虽然Opensea能兼容一些非标准的元数据格式,但Rarible可能对字段的完整性和格式有更严格的校验。比如:- 元数据是否缺少
name、description、image这些必填字段; image字段是否使用了Rarible认可的格式(比如必须是ipfs://开头的原生链接,而非IPFS网关的HTTP链接);- 属性(
attributes)数组的结构是否正确,比如每个属性的trait_type和value字段是否齐全,类型是否匹配(比如数值类型不能写成字符串)。
- 元数据是否缺少
Rarible测试网索引未触发或存在延迟
Opensea通常会自动发现并索引Rinkeby上的新NFT合约,但Rarible可能需要手动提交合约地址来触发索引。你可以尝试在Rarible测试网的合约管理页面手动添加你的新合约地址,强制触发一次索引。另外,测试网的索引服务可能存在延迟,等待一段时间后再查看是否能显示。未实现Rarible的扩展接口
旧合约可能实现了Rarible要求的自定义扩展接口(比如用于版税的EIP2981,或者Rarible专属的IRaribleNFT接口),而新合约没有包含这些实现。虽然这些接口不是ERC标准的强制要求,但Rarible可能依赖它们来识别合约并展示NFT。
内容的提问来源于stack exchange,提问作者Terry Windwalker

