Logo
新用户订阅 RPC,首月享 6.5 折优惠查看优惠
RPC Assistant

Solana 节点 API:如何连接、配置和调试 RPC 调用

摘要

Solana 节点 API 是一个 JSON-RPC 接口,允许应用程序读取网络状态、发送交易并订阅实时更新。本指南涵盖集群端点、请求格式、承诺级别和常见故障模式,以便您能够可靠地连接到 Solana 主网或开发网。

快速决策指南:您应该使用哪个 Solana 端点?

在编写任何代码之前,请决定哪个 Solana 集群和访问模式适合您的工作负载。答案取决于您是在构建生产应用、运行 QA 流水线,还是仅在本地进行原型开发。

工作负载推荐端点原因
本地开发http://localhost:8899 (solana-test-validator)快速迭代、明确的速率限制、完全控制
在 devnet 上原型开发公共 devnet 端点或托管 devnet RPC从水龙头获取免费 SOL,共享基础设施适合低流量
生产主网应用托管 RPC 提供商或专用节点公共端点有速率限制,不适合生产环境
高吞吐量或重型方法(getProgramAccounts)专用节点或具有专用容量的托管提供商避免 429 错误并提供一致的性能

如果您刚刚开始,请使用托管 RPC 提供商(如 OnFinality 的 Solana API)来获得稳定的端点,而无需运行自己的节点。对于生产环境,请评估专用节点选项以避免共享速率限制。

什么是 Solana 节点 API?

Solana 节点 API 是一个 JSON-RPC 2.0 接口,封装了验证器内部功能。它允许您读取账户状态、发送交易、模拟执行以及通过 WebSocket 订阅实时更新。大多数请求是带有 JSON 主体的 HTTP POST,响应是 JSON 对象。

与其他一些链不同,Solana 的 API 不兼容以太坊。您使用 getAccountInfogetBalancesendTransactiongetLatestBlockhash 等方法,而不是 eth_getBalanceeth_sendRawTransaction。这意味着您的工具和 SDK 必须支持 Solana。

Solana 集群和公共端点

Solana 有三个公共集群:主网、开发网和测试网。每个都有公共端点,但这些是共享基础设施,不适用于生产流量。官方文档警告说,公共端点可能返回 429(速率限制)或 403(被阻止)当过度使用时。

集群公共端点用例
主网https://api.mainnet.solana.com具有真实 SOL 的生产网络
开发网https://api.devnet.solana.com开发者测试,从水龙头获取免费 SOL
测试网https://api.testnet.solana.com验证器测试

对于生产环境,您应该使用托管 RPC 提供商或运行自己的节点。OnFinality 在 https://solana.api.onfinality.io/public 提供公共 Solana 端点,并在 wss://solana.api.onfinality.io/public-ws 提供 WebSocket 端点。这些适用于开发和轻度生产使用,但对于重负载,请考虑 专用节点

发起您的第一个 Solana RPC 调用

Solana RPC 使用 JSON-RPC 2.0。以下是一个基本的 curl 示例,用于获取当前 slot:

curl https://solana.api.onfinality.io/public \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"getSlot"}'

响应如下:

{"jsonrpc":"2.0","result":123456789,"id":1}

大多数方法需要参数。例如,要获取账户余额:

curl https://solana.api.onfinality.io/public \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"getBalance","params":["GgPpTKg78vmzgvPmNsDnN7hKs4q5WzJfPmZ3gY7hKJpX"]}'

将地址替换为真实的 Solana 公钥。

理解承诺级别

Solana RPC 方法接受 commitment 参数,该参数控制节点返回数据前区块必须被最终确认的程度。这对于应用程序的一致性至关重要。

承诺级别描述用例
processed节点最近处理的区块。可能被回滚。实时监控,但不适合金融交易
confirmed由超级多数权益投票的区块。大多数应用程序使用此级别作为速度和安全性之间的平衡
finalized区块已最终确定,具有最大锁定。高价值交易,不可逆性不可接受

例如,要获取具有 confirmed 承诺级别的余额:

curl https://solana.api.onfinality.io/public \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"getBalance","params":["GgPpTKg78vmzgvPmNsDnN7hKs4q5WzJfPmZ3gY7hKJpX",{"commitment":"confirmed"}]}'

使用 WebSocket 订阅

对于实时更新,Solana 提供 WebSocket 订阅。您可以订阅账户变更、程序更新、slot 变更等。以下是使用 wscat 的示例:

wscat -c wss://solana.api.onfinality.io/public-ws

然后发送订阅请求:

{"jsonrpc":"2.0","id":1,"method":"accountSubscribe","params":["GgPpTKg78vmzgvPmNsDnN7hKs4q5WzJfPmZ3gY7hKJpX",{"commitment":"confirmed"}]}

您将收到一个订阅 ID,然后随着账户变更收到通知。

您将使用的常见 Solana RPC 方法

以下是最常用的 HTTP 方法:

类别方法
账户getAccountInfo, getBalance, getMultipleAccounts
交易sendTransaction, simulateTransaction, getTransaction, getSignatureStatuses
区块getBlock, getBlocks, getBlockHeight
程序getProgramAccounts
集群getSlot, getEpochInfo, getHealth, getVersion
代币getTokenAccountBalance, getTokenSupply

有关完整列表,请参阅 Solana RPC HTTP 方法 参考。

调试常见的 Solana RPC 错误

当您的调用失败时,错误消息通常会告诉您需要修复什么。以下是常见问题:

错误可能原因修复
429 Too Many Requests您超出了共享端点上的速率限制使用具有更高限制的托管提供商或专用节点
403 Forbidden端点阻止了您的 IP 或流量模式检查您的请求量并考虑使用私有端点
-32602 Invalid params缺少或格式错误的参数验证方法签名和参数顺序
-32005 Node is unhealthy节点落后或正在同步等待并重试,或切换到健康的端点
Transaction simulation failed交易在链上会失败在发送前使用 simulateTransaction 进行调试

对于交易失败,始终先模拟:

curl https://solana.api.onfinality.io/public \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"simulateTransaction","params":["base58-encoded-tx"]}'

使用 JavaScript 构建:使用 @solana/web3.js

与 Solana 交互的最常见方式是使用 @solana/web3.js 库。以下是最小示例:

import { Connection, PublicKey } from '@solana/web3.js';

const connection = new Connection('https://solana.api.onfinality.io/public', 'confirmed');
const address = new PublicKey('GgPpTKg78vmzgvPmNsDnN7hKs4q5WzJfPmZ3gY7hKJpX');

const balance = await connection.getBalance(address);
console.log('Balance:', balance / 1e9, 'SOL');

对于 JS 中的 WebSocket 订阅,使用 connection.onAccountChange

connection.onAccountChange(address, (accountInfo) => {
  console.log('Account changed:', accountInfo);
});

何时使用专用 Solana 节点

如果您的应用程序依赖重型方法(如 getProgramAccounts,可能代价高昂)或需要一致的低延迟,共享公共端点可能不够。专用节点为您提供:

  • 不受其他用户速率限制的影响
  • 重型查询的一致性能
  • 对节点配置的完全控制
  • 如果需要,可访问归档数据

OnFinality 提供 专用 Solana 节点,您可以在几分钟内部署。您还可以比较 Solana RPC 提供商 以了解权衡。

关键要点

  • Solana 的节点 API 是基于 HTTP 和 WebSocket 的 JSON-RPC 2.0,具有 Solana 特定的方法。
  • 公共端点适合开发,但不适合生产流量。
  • 承诺级别(processedconfirmedfinalized)控制数据一致性。
  • 在发送交易前使用 simulateTransaction 调试交易失败。
  • 对于生产环境,考虑使用托管 RPC 提供商或专用节点以避免速率限制并确保可靠性。

常见问题解答

Solana RPC 和 Solana 节点 API 有什么区别?

它们指的是同一件事:允许您与 Solana 节点交互的 JSON-RPC 接口。这两个术语可以互换使用。

我可以在 Solana 上使用以太坊 RPC 方法吗?

不可以。Solana 使用自己的一套方法。您需要 Solana 特定的 SDK 和工具。

如何为 devnet 获取免费 SOL?

使用 Solana 水龙头 https://faucet.solana.com 请求 devnet SOL。

避免 429 错误的最佳方法是什么?

使用具有更高速率限制的托管 RPC 提供商或专用节点。公共端点是共享的,容易被限流。

OnFinality 是否支持 Solana WebSocket?

是的,OnFinality 在 wss://solana.api.onfinality.io/public-ws 提供 WebSocket 端点用于订阅。

有关支持的网络和定价的更多详细信息,请参阅 支持的 RPC 网络RPC 定价

RPC 知识库

相关 RPC 内容

RPC 提供商选择Solana

2025年Solana验证者最佳API有哪些?

验证者需要用于监控、质押和RPC访问的API。本指南将介绍关键的API类别、评估标准,以及如何为您的验证者运营选择合适的基础设施。...

网络 RPCEfinity

Optimism RPC 节点:端点、链设置和调试

使用正确的 RPC 端点、链设置和调试工作流程连接到 OP Mainnet 和 Optimism Sepolia。本参考涵盖公共和托管选项、常见故障模式以及如何选择适合您工作负载的基础设施。...

测试网 RPCSolana

如何选择 Solana 开发网 RPC 端点?

# 如何选择 Solana 开发网 RPC 端点? Solana 开发网 RPC 很重要,因为 Solana 开发网应用依赖稳定的端点访问来进行读取、交易、仪表盘和后端工作流。合适的提供商应匹配你的工作负载,支持你所需的网络和测试网,使限制透明化,并在共享 RPC 不再足够时提供扩展路径。 对于准备...

区块链基础设施Solana

Solana 索引器:你需要什么样的基础设施?

构建 Solana 索引器需要在基于 Geyser 插件的 DIY 管道和抽象化流与存储的托管服务之间做出选择。本文比较了自托管与基于提供商的方法,包括 RPC 轮询、Yellowstone gRPC、Webhook 和数据仓库集成。在选择技术栈之前,评估数据新鲜度、吞吐量和运营开销。...

RPC 提供商选择

Which RPC providers offer enhanced APIs specifically tailored for NFT data?

Several RPC providers now offer enhanced APIs that simplify NFT data access—including metadata, ownership, transfers, and spam filtering—without requi...

RPC 提供商选择

Chainstack vs Other RPC Providers: What to Evaluate Before Choosing

A practical comparison guide for developers evaluating Chainstack against other RPC providers. Covers key criteria including pricing models, network s...

永远不用担心基础设施

OnFinality 消除了 DevOps 的繁重工作,让您能够更聪明、更快地构建。

开始