Solana RPC 方法与文档
通过 HTTP 和 Websocket 方法,使用 JSON RPC API 直接与 Solana 节点交互。
配置状态承诺
对于预检和交易处理,Solana 节点根据客户端设置的承诺要求选择查询哪个银行状态。承诺描述了某个时间点区块的最终确定程度。在查询分类账状态时,建议使用较低级别的承诺来报告进度,并使用较高级别的承诺来确保状态不会被回滚。
按照承诺的降序排列(从最最终确定到最不最终确定),客户端可以指定:
finalized
- 节点将查询由集群的超级多数确认的最新区块,该区块已达到最大锁定状态,这意味着集群已将此区块视为最终确定。confirmed
- 节点将查询由集群的超级多数投票确认的最新区块。- 它结合了来自 gossip 和重放的投票。
- 它不计算区块后代的投票,仅计算对该区块的直接投票。
- 从 1.3 版本及以后,此确认级别还支持“乐观确认”保证。
processed
- 节点将查询其最新的区块。请注意,该区块可能仍会被集群跳过。
对于连续处理许多相互依赖的交易,建议使用 confirmed
承诺,它在速度和回滚安全性之间取得了平衡。为了完全安全,建议使用 finalized
承诺。
默认承诺级别
如果未提供承诺配置,节点将
默认使用 finalized
承诺级别。
只有查询银行状态的方法接受承诺参数。它们在下面的 API 参考中有标注。
RpcResponse 结构
许多接受承诺参数的方法会返回一个 RpcResponse JSON 对象,该对象由两部分组成:
context
:一个 RpcResponseContext JSON 结构,其中包括一个slot
字段,表示操作评估的时间点。value
:操作本身返回的值。
解析的响应
某些方法支持 encoding
参数,并且如果请求了
"encoding":"jsonParsed"
,且节点拥有对应程序的解析器,则可以以解析的 JSON 格式返回账户或指令数据。Solana 节点目前支持以下原生和 SPL 程序的 JSON 解析:
程序 | 账户状态 | 指令 |
---|---|---|
地址查找 | v1.15.0 | v1.15.0 |
BPF 加载器 | 不适用 | 稳定版 |
BPF 可升级加载器 | 稳定版 | 稳定版 |
配置 | 稳定版 | |
SPL 关联代币账户 | 不适用 | 稳定版 |
SPL 备忘录 | 不适用 | 稳定版 |
SPL 代币 | 稳定版 | 稳定版 |
SPL 代币 2022 | 稳定版 | 稳定版 |
抵押 | 稳定版 | 稳定版 |
投票 | 稳定版 | 稳定版 |
账户解析器的列表可以在 此处找到,指令解析器可以在 此处找到。
过滤条件
某些方法支持提供一个 filters
对象,以便在 RpcResponse
JSON 对象中返回的数据进行预过滤。以下是可用的过滤器:
-
memcmp: object
- 将提供的一系列字节与 program account 数据在特定偏移量处进行比较。字段:offset: usize
- program account 数据中开始比较的偏移量bytes: string
- 要匹配的数据,作为编码字符串encoding: string
- 用于过滤bytes
数据的编码方式,可以是 "base58" 或 "base64"。数据大小限制为解码后不超过 128 字节。
新增:此字段以及 base64 支持仅适用于 solana-core v1.14.0 或更新版本。在查询较早版本的节点时请省略此字段
-
dataSize: u64
- 将 program account 数据长度与提供的数据大小进行比较
Is this page helpful?