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

如何分析Solana区块链已确认交易的tokenBalances及accountIndex含义

Solana RPC返回字段accountIndex的实际含义与通用NFT交易账户解析方案

accountIndex的实际含义

accountIndex字段指向的是getConfirmedParsedTransaction返回结果中transaction.message.accountKeys数组的下标,而非preBalances/postBalances数组的下标,之前的索引对应偏差是因为映射对象匹配错误导致的。

transaction.message.accountKeys是交易涉及所有账户的有序汇总列表,所有指令参数、余额变化、Token转移涉及的账户都会按顺序存入该数组,RPC返回的所有accountIndex字段均指向该数组的对应位置。

你提供的示例交易中:

  • preTokenBalances中accountIndex=2对应accountKeys[2]的地址,是本次交易NFT的卖方关联Token账户,该Token账户的owner即为你观察到的索引为3的卖方主钱包地址
  • postTokenBalances中accountIndex=1对应accountKeys[1]的地址,是本次交易NFT的买方关联Token账户,该Token账户的owner即为你观察到的索引为0的买方主钱包地址

通用NFT交易买卖方提取方案

无需适配不同交易市场的指令结构,可通过以下通用逻辑提取买卖双方信息:

  • 第一步:定位本次交易的NFT mint地址,在preTokenBalances和postTokenBalances中筛选满足uiTokenAmount.decimals=0、且持有量从1变为0(卖方侧)/从0变为1(买方侧)的条目,其mint字段即为交易的NFT地址
  • 第二步:提取卖方信息,取preTokenBalances中对应NFT mint的条目,用accountIndex从accountKeys数组中获取卖方Token账户地址,解析该Token账户的owner属性即为卖方主钱包地址
  • 第三步:提取买方信息,取postTokenBalances中对应NFT mint的条目,用accountIndex从accountKeys数组中获取买方Token账户地址,解析该Token账户的owner属性即为买方主钱包地址
  • 可选校验:对比preBalances和postBalances中买卖双方主钱包的SOL余额变化,差额部分对应版税、平台抽成、交易手续费等支出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:15:04