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

Solana主网RPC返回区块JSON结构疑问及交易信息查询咨询

关于Solana主网RPC区块JSON结构的疑问解答

1. preBalances与postBalances索引0数值差异的原因

  • preBalances和postBalances数组按交易中涉及账户的顺序排列,索引0对应的是交易的付费账户(payer)。
  • 该账户需要承担交易手续费,因此postBalances[0]是扣除手续费后的余额,自然和交易前的preBalances[0]存在差异。
  • 其余索引的账户如果是只读账户(如程序账户、未发生余额变动的账户),或是仅参与签名但无余额变化的账户,它们的preBalances和postBalances数值就会一致,这是正常逻辑,并非未填充。

2. 在指定区块中查询交易发起地址、金额及接收地址的方法

第一步:获取目标区块的解析后数据

调用RPC方法getBlock获取目标区块数据时,需指定参数encoding: "jsonParsed",这样能直接拿到结构化的交易数据,无需手动解析二进制内容。

第二步:解析单条交易的关键信息

针对区块内的每一笔交易,从transaction字段中提取对应信息:

  • 发起钱包地址:取transaction.message.header.payer字段,这就是发起交易并支付手续费的账户地址。
  • 交易金额与接收地址:需要遍历transaction.message.instructions数组中的指令:
    • 若为系统程序(地址为11111111111111111111111111111111)的转账指令(InstructionType: Transfer),可从data解析出转账金额,accounts数组的第1位是接收地址(第0位为发起地址)。
    • 若为SPL代币等其他程序的交易,需对应程序的指令格式解析:比如SPL代币转账指令中,accounts数组通常包含代币账户所有者、发送方代币账户、接收方代币账户,金额从data字段提取。
  • 注意:若交易包含多笔指令,需逐个解析每笔指令的金额与对应接收方,汇总后得到完整的资金流向。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 16:02:38