You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XRPL中通过NFTokenPage ID查找NFT失败,求相关代码示例

XRPL NFTokenPage 查询问题排查与代码示例

核心排查点

  • 参数校验:计算NFTokenPage ID时,必须确保账户地址(Base58格式)、可选的发行者地址、NFT分类(Taxon)、反向分页标记这些参数完全匹配目标NFT的属性,任何参数偏差都会导致ID无效。
  • 账本状态:查询时必须指定ledger_index: "validated"(已验证账本),而非current(未闭合账本),未闭合账本的数据可能不完整或未最终确认。
  • 分页逻辑:单个NFTokenPage最多存储32个NFT,若目标NFT不在你计算的页面中,需要通过页面返回的PreviousPageMin或NextPageMax字段遍历其他分页。

实际可用代码示例(Python + xrpl-py)

使用官方维护的xrpl-py库可以避免手动计算ID的误差,以下是完整的查询示例:

import xrpl
from xrpl.models.requests import LedgerEntry
from xrpl.utils import calculate_nftoken_page_id

# 连接测试网
client = xrpl.clients.JsonRpcClient("wss://s.altnet.rippletest.net:51233")

# 替换为你的测试网账户地址
target_account = "r..."
# 可选:指定发行者或Taxon缩小查询范围
target_issuer = None  # 示例:"rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe"
target_taxon = None   # 示例:12345

# 计算NFTokenPage ID
page_id = calculate_nftoken_page_id(
    account=target_account,
    issuer=target_issuer,
    taxon=target_taxon,
    is_reverse=False
)

# 构造查询请求
query_request = LedgerEntry(
    ledger_index="validated",
    object_id=page_id
)

# 执行查询并处理结果
try:
    response = client.request(query_request)
    if response.is_successful():
        nft_page = response.result["node"]
        print("当前NFTokenPage包含的NFT:")
        for nft in nft_page["NFTokens"]:
            print(f"NFT ID: {nft['NFTokenID']}")
            print(f"发行者: {nft['Issuer']}")
            print(f"分类(Taxon): {nft['NFTokenTaxon']}\n")
    else:
        print(f"查询失败:{response.result['error_message']}")
except Exception as e:
    print(f"请求异常:{str(e)}")

WebSocket工具手动查询注意事项

如果使用官方WebSocket工具,需严格按照以下格式构造请求:

{
  "id": 1,
  "command": "ledger_entry",
  "ledger_index": "validated",
  "object_id": "你的NFTokenPage ID"
}

若返回entryNotFound,优先检查ID计算参数,或先用account_nfts命令获取账户完整NFT列表,反向验证目标NFT所属的NFTokenPage ID。

内容的提问来源于stack exchange,提问作者crtag

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 13:25:23