Solana RPC HTTP 方法

Solana 节点使用 JSON-RPC 2.0 规范接受 HTTP 请求。

对于 JavaScript 应用程序,请使用 @solana/web3.js 库作为与 Solana 节点交互的 RPC 方法的便捷接口。对于与 Solana 节点的 PubSub 连接,请使用 Websocket API

RPC HTTP 端点

默认端口:8899

请求格式

要发起 JSON-RPC 请求,请发送带有 Content-Type: application/json 标头的 HTTP POST 请求。JSON 请求数据应包含 4 个字段:

  • jsonrpc: <string> - 设置为 "2.0"
  • id: <string | number | null> - 客户端生成的请求的唯一标识符。通常是字符串或数字,尽管技术上允许为 null,但不建议这样做
  • method: <string> - 包含要调用方法的字符串
  • params: <array> - 一个 JSON 数组,包含按顺序排列的参数值

使用 curl 的示例:

curl https://api.devnet.solana.com -s -X POST -H "Content-Type: application/json" -d '
{
"jsonrpc": "2.0",
"id": 1,
"method": "getBalance",
"params": [
"83astBRguLMdt2h5U1Tpdq5tjFoJ6noeGwaY3mDLVcri"
]
}
'

响应输出将是一个包含以下字段的 JSON 对象:

  • jsonrpc: <string> - 与请求规范匹配
  • id: <number> - 与请求标识符匹配
  • result: <array|number|object|string> - 请求的数据或成功确认

可以通过将多个 JSON-RPC 请求对象的数组作为单个 POST 的数据发送来批量发送请求。

示例请求

commitment 参数应作为 params 数组中的最后一个元素:

curl https://api.devnet.solana.com -s -X POST -H "Content-Type: application/json" -d '
{
"jsonrpc": "2.0",
"id": 1,
"method": "getBalance",
"params": [
"83astBRguLMdt2h5U1Tpdq5tjFoJ6noeGwaY3mDLVcri",
{
"commitment": "finalized"
}
]
}
'

定义

  • 哈希:一段数据的 SHA-256 哈希值。
  • Pubkey:Ed25519 密钥对的公钥。
  • 交易:由客户端密钥对签名的 Solana 指令列表,用于授权这些操作。
  • 签名:交易有效负载数据(包括指令)的 Ed25519 签名。这可以用来标识交易。

健康检查

虽然这不是一个 JSON RPC API,但在 RPC HTTP 端点上的 GET /health 提供了一种供负载均衡器或其他网络基础设施使用的健康检查机制。此请求将始终返回 HTTP 200 OK 响应,响应体为 "ok"、"behind" 或 "unknown":

  • ok:节点在距离最新集群确认 slot 的 HEALTH_CHECK_SLOT_DISTANCE 个 slot 以内
  • behind { distance }:节点落后于最新集群确认 slot 的 distance 个 slot,其中 distance > HEALTH_CHECK_SLOT_DISTANCE
  • unknown:节点无法确定其相对于集群的位置

Is this page helpful?

Table of Contents

Edit Page