跳转到主要内容
/* INLINE_CODE_PLACEHOLDER_ca0bbc06ea63ceb748733ff6b8ec19c4 */ RPC 方法提供关于 Solana 网络上当前 SOL 供应的信息。它详细说明了总供应量、流通供应量、非流通供应量,并且可以选择列出非流通账户。

常见使用案例

  • 了解 SOL 代币经济学: 获取当前 SOL 分布的快照。
  • 经济分析: 追踪供应指标随时间的变化。
  • 显示网络统计: 向用户提供仪表板或浏览器上的最新 SOL 供应信息。
  • 通胀监测: 虽然 getInflationRategetInflationGovernor 提供更直接的通胀数据,getSupply 可以提供更广泛的背景。

请求参数

getSupply 方法接受具有以下字段的可选配置对象:
  1. commitment (字符串, 可选): 指定查询的承诺级别。如果省略,则使用 RPC 节点的默认承诺。
  2. excludeNonCirculatingAccountsList (布尔值, 可选): 如果设置为 true,则响应中将不包含 nonCirculatingAccounts 数组。默认为 false。如果不需要单个非流通账户的列表,这可以减少响应大小。
示例配置:
{
  "commitment": "finalized",
  "excludeNonCirculatingAccountsList": true
}

响应结构

响应是一个 JSON 对象,具有以下字段:
  • value: 包含供应信息的对象:
    • total (u64): 总 SOL 供应量(以 lamports 为单位)。
    • circulating (u64): 流通 SOL 供应量(以 lamports 为单位)。
    • nonCirculating (u64): 非流通 SOL 供应量(以 lamports 为单位)。
    • nonCirculatingAccounts (字符串数组, 可选): 持有非流通 SOL 的账户公钥数组(以 base58 编码的字符串表示)。如果请求中的 excludeNonCirculatingAccountsList 设置为 true,则省略此字段。
  • context: 包含以下内容的对象:
    • slot (u64): 信息检索时的槽位。
示例响应 (使用 excludeNonCirculatingAccountsList: false):
{
  "jsonrpc": "2.0",
  "result": {
    "context": {
      "slot": 169890374
    },
    "value": {
      "circulating": 423105827585008800,
      "nonCirculating": 123456789012345678, // Example value
      "nonCirculatingAccounts": [
        "Stake11111111111111111111111111111111111111",
        "Vote11111111111111111111111111111111111111",
        // ... other non-circulating accounts
      ],
      "total": 546562616597354478
    }
  },
  "id": 1
}
示例响应 (使用 excludeNonCirculatingAccountsList: true):
{
  "jsonrpc": "2.0",
  "result": {
    "context": {
      "slot": 169890380
    },
    "value": {
      "circulating": 423105830000000000,
      "nonCirculating": 123456780000000000, // Example value
      "total": 546562610000000000
      // nonCirculatingAccounts field is absent
    }
  },
  "id": 1
}

代码示例

# Basic Request:
curl -X POST -H "Content-Type: application/json" -d \
  '{"jsonrpc":"2.0","id":1,"method":"getSupply"}' \
  <YOUR_RPC_URL>

# Request with excludeNonCirculatingAccountsList:
curl -X POST -H "Content-Type: application/json" -d \
  '{"jsonrpc":"2.0","id":1,"method":"getSupply", "params": [{"excludeNonCirculatingAccountsList": true}]}' \
  <YOUR_RPC_URL>

# Request with commitment:
curl -X POST -H "Content-Type: application/json" -d \
  '{"jsonrpc":"2.0","id":1,"method":"getSupply", "params": [{"commitment": "confirmed", "excludeNonCirculatingAccountsList": false}]}' \
  <YOUR_RPC_URL>

开发者提示

  • Lamports 与 SOL: 金额以 lamports 返回。记得除以 1,000,000,000 (1 SOL = 10^9 lamports) 转换为 SOL。
  • 数据新鲜度: 数据反映了 context 对象中指示的槽位状态,并基于使用的承诺级别。
  • excludeNonCirculatingAccountsList: 如果您只需要汇总供应数字以优化响应大小和处理时间,请使用此选项,尤其是在非流通账户列表很长时。
  • 动态值: 由于代币发行(通胀)和燃烧机制,供应数据可能会频繁变化。
本指南应帮助您有效使用 getSupply RPC 方法查询 Solana 的供应数据。

相关方法