了解 getTransaction 的使用案例、代码示例、请求参数、响应结构和提示。
getTransaction
RPC 方法允许您通过提供其签名来检索有关已确认交易的详细信息。这包括交易的槽位、区块时间、元数据(如费用、状态和余额变化)以及交易结构本身。
logMessages
和 err
字段以了解交易失败的原因。transactionSignature
(字符串,必需):您要查询的 base-58 编码的交易签名。
options
(对象,可选):一个可选的配置对象,可以包括:
commitment
(字符串,可选):指定承诺级别(例如,"finalized"
,"confirmed"
)。如果未提供,则使用节点的默认承诺(通常为 "finalized"
)。encoding
(字符串,可选):transaction
数据的编码。常见值:
"json"
:以结构化 JSON 格式返回交易数据(但指令可能仍然是 base64 编码)。"jsonParsed"
:返回交易数据,其中程序特定的指令被解析为人类可读的 JSON 结构(如果可能)。这通常是分析最有用的编码。"base58"
:将交易数据作为 base-58 编码字符串返回。"base64"
:将交易数据作为 base-64 编码字符串返回。"json"
,但 Solana 默认可能不同。最好指定此项。maxSupportedTransactionVersion
(数字,可选):RPC 端点应处理的最大交易版本。
0
以包含版本化交易(包括传统)。0
以支持所有交易类型。null
。否则,它返回一个包含以下字段的对象:
slot
(u64): 交易被包含在区块中的槽号。blockTime
(i64 | null): 生成包含交易的区块时的估计 Unix 时间戳(自纪元以来的秒数)。如果不可用,可以是null
。meta
(object | null): 包含交易执行元数据的对象。如果交易在处理前失败或元数据不可用,可以是null
。
err
(object | null): 如果交易失败则为错误对象,否则为null
。fee
(u64): 为交易支付的 lamports 费用。preBalances
(array of u64): 交易处理之前涉及账户的 lamport 余额。postBalances
(array of u64): 交易处理之后涉及账户的 lamport 余额。preTokenBalances
(array of objects | null): 交易之前涉及的代币账户的代币余额。postTokenBalances
(array of objects | null): 交易之后涉及的代币账户的代币余额。innerInstructions
(array of objects | null): 作为此交易中 CPI(跨程序调用)的一部分执行的指令数组。logMessages
(array of string | null): 由交易指令及任何内部指令发出的日志消息数组。loadedAddresses
(object, optional): 指定从地址查找表加载的账户用于此交易。包含writable
和readonly
的公钥数组。returnData
(object, optional): 通过sol_set_return_data
和sol_get_return_data
返回的交易数据。包含programId
(字符串)和data
(数组:[string, encoding]
)。computeUnitsConsumed
(u64, optional): 此交易消耗的计算单元数量。transaction
(object | array): 交易结构本身。格式取决于encoding
参数:
encoding
是"jsonParsed"
或"json"
:一个包含message
(包含accountKeys
、instructions
、recentBlockhash
等)和signatures
(字符串数组)的对象。encoding
是"base58"
、"base64"
:一个数组[encoded_string, encoding_format_string]
。version
(“legacy” | number | undefined): 交易的版本。对于旧交易可以是"legacy"
,对于版本化交易可以是一个数字(例如,0
)。如果maxSupportedTransactionVersion
未设置且交易是版本化的,则为undefined
。jsonParsed
编码):
commitment
级别进行查询。请求尚未达到指定承诺的交易将导致 null
。jsonParsed
与 json
: 虽然 jsonParsed
非常方便,但解析支持取决于 RPC 节点对特定程序的能力。如果程序未被识别,即使使用 jsonParsed
,其指令可能会回退到较少解析的格式。maxSupportedTransactionVersion: 0
,以确保您的应用程序能够处理传统和版本化交易。否则,您可能会错过数据或在处理较新的交易格式时遇到错误。getTransaction
RPC 方法,使您能够获取和理解详细的 Solana 交易数据。