RPC API 参考
Savitri Network 通过 HTTP 暴露 JSON-RPC 2.0 API。所有请求均以 POST 方式发送至 / 或 /rpc。
连接
- 默认端点:
http://127.0.0.1:8545/rpc - 协议:JSON-RPC 2.0(无 REST 端点)
- TLS:RPC 服务器不终止 TLS。生产环境请使用反向代理(nginx、Caddy)。
- CORS:默认仅限
localhost和127.0.0.1来源。
速率限制
| 限制 | 值 |
|---|---|
| 全局 | 200 请求/秒 |
| 每 IP | 50 请求/秒 |
| 最大批量大小 | 100 个请求 |
| 最大请求体大小 | 1 MB |
超出限制将返回 HTTP 429(请求过多)。
请求格式
{
"jsonrpc": "2.0",
"method": "method_name",
"params": [],
"id": 1
}
参数可以以位置数组或命名对象的形式传入。
批量请求
发送请求数组,在单个 HTTP 请求中处理多个调用:
[
{"jsonrpc": "2.0", "method": "savitri_blockNumber", "params": [], "id": 1},
{"jsonrpc": "2.0", "method": "savitri_health", "params": [], "id": 2}
]
每批最多 100 个请求。
错误代码
| 代码 | 含义 |
|---|---|
| -32700 | 解析错误(无效 JSON) |
| -32600 | 无效请求(非 JSON-RPC 2.0) |
| -32601 | 方法未找到 |
| -32602 | 无效参数 |
| -32603 | 内部服务器错误 |
| -32001 | 资源未找到 |
| -32002 | 服务不可用(存储/内存池) |
| -32003 | 未实现 |
方法参考
链方法
| 方法 | 参数 | 描述 |
|---|---|---|
chain_getBlockHeight | [] | 获取当前区块高度 |
savitri_blockNumber | [] | chain_getBlockHeight 的别名 |
chain_getBlock | [height] | 按高度获取区块 |
savitri_getBlockByHeight | [height] | chain_getBlock 的别名 |
chain_getBlockByNumber | [height] | 按高度获取区块 |
chain_getBlockByHash | [hash] | 按哈希获取区块(扫描最近 1000 个区块) |
chain_getLatestBlock | [] | 获取最新区块 |
chain_getChainInfo | [] | 获取链元数据(id、name、height、version) |
savitri_getBlockHash | [height] | 获取指定高度的区块哈希 |
交易方法
| 方法 | 参数 | 描述 |
|---|---|---|
tx_sendTransaction | [raw_tx_hex] | 提交已签名的交易 |
savitri_sendRawTransaction | [raw_tx_hex] | tx_sendTransaction 的别名 |
tx_getTransaction | [hash] | 按哈希获取交易 |
savitri_getTransaction | [hash] | tx_getTransaction 的别名 |
tx_getTransactionReceipt | [hash] | 获取带状态的交易收据 |
tx_getTransactionsByBlock | [height] | 获取区块内所有交易 |
tx_getPendingTransactions | [] | 列出内存池中待处理的交易 |
账户方法
| 方法 | 参数 | 描述 |
|---|---|---|
account_getAccount | [address] | 获取余额和 nonce |
savitri_getAccount | [address] | account_getAccount 的别名 |
account_getBalance | [address] | 仅获取余额 |
account_getNonce | [address] | 仅获取 nonce |
account_getTokenBalance | [address, token_id] | 获取代币余额 |
网络方法
| 方法 | 参数 | 描述 |
|---|---|---|
net_version | [] | 获取网络版本 |
net_peerCount | [] | 获取已连接节点数量 |
net_listening | [] | 检查节点是否正在监听 |
net_peers | [] | 列出已连接节点及其分数 |
net_nodeInfo | [] | 获取节点信息(id、mode、peers、height) |
内存池方法
| 方法 | 参数 | 描述 |
|---|---|---|
mempool_getSize | [] | 获取待处理和排队的交易数量 |
mempool_getPendingTransactions | [] | 列出待处理的交易 |
mempool_getTransactionStatus | [hash] | 检查交易是否在内存池中 |
共识 / PoU 方法
| 方法 | 参数 | 描述 |
|---|---|---|
pou_getConsensusState | [] | 获取本地 PoU 分数、leader 和 epoch |
savitri_pouLocal | [] | pou_getConsensusState 的别名 |
savitri_pouPeers | [] | 获取所有节点的 PoU 分数 |
pou_getValidators | [] | 列出验证者及其分数 |
pou_getStakeInfo | [address] | 获取指定地址的质押信息 |
pou_getEpochInfo | [] | 获取当前 epoch 详情 |
savitri_pouGroups | [] | 列出 PoU 分组(仅限主节点) |
savitri_pouMasternodes | [] | 列出主节点(仅限主节点) |
savitri_pouGroupNodes | [group_id] | 列出分组中的节点(仅限主节点) |
代币方法
| 方法 | 参数 | 描述 |
|---|---|---|
token_getTokenInfo | [token_id] | 获取代币元数据(name、symbol、decimals、supply) |
token_getTokenBalance | [address, token_id] | 获取代币余额 |
token_getTokenTransfers | [token_id] | 获取转账历史 |
工具方法
| 方法 | 参数 | 描述 |
|---|---|---|
savitri_health | [] | 健康检查(status、service、mode) |
savitri_protocolVersion | [] | 获取协议版本 |
savitri_syncing | [] | 获取同步状态(当前/最高区块) |
savitri_gasPrice | [] | 获取当前 Gas 价格 |
savitri_estimateGas | [] | 估算交易 Gas |
savitri_faucetClaim | [address] | 领取测试网代币(5 SAVT) |
Monolith 方法
| 方法 | 参数 | 描述 |
|---|---|---|
savitri_getMonolithHead | [] | 获取最新的 monolith 元数据 |
savitri_getMonolithsForRange | [start, end] | 获取高度范围内的 monolith |
savitri_getMonolith | [monolith_id] | 获取完整的 monolith 区块 |
响应类型
各响应对象的详细 JSON 结构,请参见 响应类型。