从智能合约转移Zed.Run NFT:无法确定tokenID问题咨询
从智能合约转移Zed.Run NFT的操作步骤
一、获取Zed.Run NFT的合约地址
Zed.Run的NFT遵循ERC721标准,各链的官方合约地址是固定的:
- Polygon链:
0xCe761D788DF608BD21bdd59d6f4B54b2e27F25Bb - Avax链:
0x59468516a8259058baD1cA5F8f4BFF190d30E066 - Klaytn链:
0x04263D1235448234D352d757c37A2e761210d29A
二、获取NFT的TokenID
有两种可靠方式获取你智能合约持有Zed.Run NFT的TokenID:
- 通过钱包查看:在MetaMask等钱包中,找到你的智能合约地址对应的资产列表,定位到Zed.Run NFT,点击详情即可看到TokenID。
- 通过合约方法读取:
- 打开对应链的区块浏览器(如Polygon的PolygonScan、Avax的SnowTrace),输入上述Zed.Run合约地址,进入「Read Contract」页面。
- 调用
balanceOf方法,传入你的智能合约地址,得到合约持有Zed.Run NFT的总数。 - 循环调用
tokenOfOwnerByIndex方法,第一个参数填你的智能合约地址,第二个参数从0开始递增(直到总数-1),逐个获取每个NFT的TokenID。
三、在智能合约中实现转移
确认合约地址和TokenID后,即可通过ERC721的transferFrom或safeTransferFrom方法完成转移,示例Solidity代码如下:
// 声明ERC721核心接口 interface IERC721 { function safeTransferFrom(address from, address to, uint256 tokenId) external; } contract YourContract { // 替换为对应链的Zed.Run合约地址 address public constant ZED_RUN_CONTRACT = 0xCe761D788DF608BD21bdd59d6f4B54b2e27F25Bb; // 转移NFT到指定地址 function transferZedRunNFT(address to, uint256 tokenId) external { // 调用safeTransferFrom,from为当前合约地址(合约持有NFT时) IERC721(ZED_RUN_CONTRACT).safeTransferFrom(address(this), to, tokenId); } }
注意:如果你的合约是被用户授权管理其NFT,
from参数需改为用户地址,且需确保用户已通过approve或setApprovalForAll给你的合约授权。
内容的提问来源于stack exchange,提问作者Galimi
相关产品推荐
相关产品推荐

