如何获取Flow区块链NFT项目UFCStrike的Collection ID?
解决Flow API查询NFT集合时的{id}获取问题
你要查询的UFCStrike对应合约为A.329feb3ab062d289.UFC_NFT,Flow官方Collections API要求的{id}是NFT集合的唯一标识,和合约地址不是同一概念,可通过以下两种方式获取:
从NFT铸造事件提取
每个UFCStrike NFT铸造时会触发NFT.Minted类事件(可能是合约自定义事件或标准NFT事件),事件数据中包含collectionID字段。你可以调用Flow的事件查询接口,指定事件类型为A.329feb3ab062d289.UFC_NFT.Minted(若合约继承了标准NFT,也可使用A.f8d6e0586b0a20c7.NFT.Minted),过滤该合约的铸造事件后即可从中提取目标集合的ID。通过持有NFT的用户地址查询
找一个已知持有UFCStrike NFT的用户地址,执行以下Cadence脚本获取其关联的集合ID:import UFC_NFT from 0x329feb3ab062d289 pub fun main(address: Address): UInt64? { let collectionCap = getAccount(address).getCapability<&UFC_NFT.Collection>(UFC_NFT.CollectionPublicPath) let collection = collectionCap.borrow() ?? panic("该地址未持有UFCStrike NFT集合") return collection.id }将脚本提交到Flow的脚本执行API(
/scripts/execute)并传入目标地址,就能返回对应的集合ID。
拿到集合ID后,即可替换Collections API路径中的{id},完成集合信息查询。
内容的提问来源于stack exchange,提问作者user100911
相关产品推荐
相关产品推荐

