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

如何通过API获取Solana链上指定NFT的全部交易记录

Solana链上单NFT全量交易记录采集实现方案

你在solana-py、Solscan公共API文档里找不到对应实现的核心原因是:solana-py仅做原生RPC接口封装,没有提供NFT维度的聚合查询能力;Solscan公共API早已下线全量交易查询类的公开端点,相关能力仅对Pro付费用户开放。以下是3种可落地的实现路径:

方案1:基于Solana原生RPC自行拉取解析(无第三方依赖,成本最低)

  • 第一步:拉取目标NFT Mint地址关联的所有交易签名
    目标NFT的Mint地址为2Nzt8TYeAfgJDftKzkb7rgYShVvyXTR7cPVvpqaZ2a4V,调用RPC接口getSignaturesForAddress分页拉取该地址下的所有交易签名,单次请求最多拉取1000条,通过before参数不断翻页,直到接口返回空数据为止,即可拿到该地址关联的全部交易签名列表。
  • 第二步:批量拉取交易详情并过滤有效交易
    拿到签名列表后,批量调用getTransaction接口获取每笔交易的原始数据,过滤掉元数据更新、权限修改这类非交易类操作,只保留NFT所有权转移、挂单、成交类的有效记录:
    • 匹配Token Program中该Mint对应的Token Account余额变动,识别NFT转移行为
    • 匹配主流NFT交易平台(Tensor、Magic Eden、OpenSea等)的合约指令,标记交易类型、成交价格、买卖双方地址
  • solana-py核心实现代码参考:
from solana.rpc.api import Client
from solders.pubkey import Pubkey

# 初始化RPC客户端,公共RPC限流严格,生产环境请替换为付费RPC节点地址
client = Client("https://api.mainnet-beta.solana.com")
nft_mint = Pubkey.from_string("2Nzt8TYeAfgJDftKzkb7rgYShVvyXTR7cPVvpqaZ2a4V")

all_tx_sigs = []
last_sig = None
while True:
    resp = client.get_signatures_for_address(nft_mint, before=last_sig, limit=1000)
    batch_data = resp.value
    if not batch_data:
        break
    all_tx_sigs.extend([item.signature for item in batch_data])
    last_sig = batch_data[-1].signature

# 后续遍历all_tx_sigs拉取单交易详情、按规则解析即可

注意:官方公共RPC节点有严格的请求频率、数据量限制,拉取全量历史交易建议使用付费RPC服务,避免触发限流导致拉取中断。

方案2:使用第三方结构化数据API(开发量最小,效率最高)

  • Solscan Pro API:申请付费API密钥后,直接调用代币交易查询接口,传入目标Mint地址即可拿到结构化的交易列表,返回字段已包含交易时间、交易类型、成交价、参与方地址等信息,无需自行解析原始交易数据。
  • 其他Solana生态数据服务:多数面向开发者的链上数据平台都支持按Mint地址查询NFT全量交易,部分服务有免费额度,适合小规模采集场景。

方案3:自建索引(适合长期高频数据需求)

如果需要长期采集多个NFT的交易数据,可以基于开源Solana区块索引工具,同步全链区块数据到本地数据库,自定义规则筛选目标NFT的相关交易,后续查询不需要再依赖外部接口,灵活性最高,但前期搭建、维护成本也最高。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 20:39:19