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

Solana Devnet RPC:端点设置、空投与调试

摘要

Solana devnet 是测试集群,您可以在接触主网之前验证程序、交易和客户端代码。本页介绍如何连接 Solana devnet RPC 端点、如何获取测试 SOL,以及如何调试开发过程中最常出现的故障。

它还涵盖了何时公共 devnet 端点就足够,以及何时托管或专用 RPC 服务(如 OnFinality)更适合 CI 流水线、集成测试和发布前预演。

Solana devnet 是与 mainnet-beta 和 testnet 分离的集群。它运行与主网相同的运行时,但账本是可丢弃的,代币没有价值,并且网络明确允许重置。这使其成为部署程序、运行集成测试以及在发布前重现错误的理想场所。

查询“solana rpc devnet”通常来自需要以下三件事之一的开发者:可用的端点 URL、用于支付交易的测试 SOL,或诊断失败请求的方法。本页回答了所有这三个问题,然后解释了何时公共 devnet 端点不再足够。

您应该使用哪个 devnet 端点?

根据您正在做的事情选择端点,而不是凭习惯。大多数开发者从公共端点开始,当测试成为流水线的一部分时,转向托管或专用端点。

您的情况合理的端点选择原因
学习 Solana,运行少量脚本公共 devnet RPC免费,无需设置,适合低请求量
部署程序并迭代公共 devnet RPC 或托管 RPC 计划您需要可靠的 sendTransactiongetSignatureStatuses
每次提交都运行的 CI 流水线带专用 API 密钥的托管 RPC可预测的访问和按项目密钥
负载或延迟测试专用节点您控制机器,可以在没有嘈杂邻居的情况下进行测量
测试 WebSocket 驱动的 UI支持 ws 的端点订阅行为与轮询不同

如果您只需要读取账户并偶尔发送交易,公共 devnet 端点就足够了。如果您的测试间歇性失败,并且您无法判断原因是您的代码还是端点,那就是转向托管服务的信号。

OnFinality 将 Solana devnet 作为受支持的网络与 Solana 主网一起提供。您可以查看 Solana Devnet 网络页面 获取连接详情,如果需要用于 CI 的带密钥端点,可以在 RPC 定价 页面比较计划。

Solana devnet 链设置一览

当您配置钱包、SDK 或框架时,您是在选择集群和 RPC URL。Solana 不像以太坊那样为 devnet 使用 EVM 风格的数值链 ID;集群身份才是关键。

设置Devnet 值
集群名称devnet
原生货币SOL(devnet,无价值)
小数位9
典型 RPC 传输HTTP JSON-RPC
订阅传输支持时的 WebSocket (ws)
区块浏览器选择 devnet 集群的 Solana Explorer
主网等效mainnet-beta

将 devnet 和主网配置保存在单独的文件或环境变量中。很大一部分“本地运行正常”的事件源于构建时静默指向了错误的集群。

使用 curl 和 JavaScript 连接

一个最小的 JSON-RPC 调用可以确认端点可达并返回当前 slot。

curl https://your-devnet-endpoint.example \
  -X POST -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getSlot",
    "params": []
  }'

在 JavaScript 中,常见模式是创建一个连接对象并传入集群或显式端点。

import { Connection, clusterApiUrl, LAMPORTS_PER_SOL } from "@solana/web3.js";

// 选项 A:使用内置的 devnet 集群 URL
const connection = new Connection(clusterApiUrl("devnet"), "confirmed");

// 选项 B:使用您自己的托管 devnet 端点
// const connection = new Connection(process.env.SOLANA_DEVNET_RPC, "confirmed");

const slot = await connection.getSlot();
console.log("current devnet slot:", slot);

const balance = await connection.getBalance(connection.publicKey ?? undefined);

对于 WebSocket 订阅,使用 ws 端点构造连接,并使用 onAccountChangeonLogs

const wsConnection = new Connection(process.env.SOLANA_DEVNET_WS, {
  commitment: "confirmed",
  wsEndpoint: process.env.SOLANA_DEVNET_WS,
});

const subId = wsConnection.onLogs(programId, (logs) => {
  console.log(logs.signature, logs.logs);
});

如果订阅静默断开,请记录订阅 ID 并在出错时重新订阅,而不是假设端点已损坏。

从 devnet 水龙头获取测试 SOL

水龙头有速率限制且是共享的。将其视为便利,而非保证。

  • 先请求少量金额,在运行大型测试前确认余额。
  • 如果请求失败,请等待并重试,而不是猛击端点。
  • 对于可重复的测试,一次性为已知密钥对提供资金并重复使用,或运行本地验证器,在那里您可以自由铸造 SOL。
  • 切勿在主网上重复使用 devnet 密钥对。为任何持有真实价值的东西生成新的密钥对。

当水龙头请求似乎成功但余额没有变化时,请在浏览器上检查交易签名,并确认您查询的是与请求相同的集群。

常见的 devnet 故障及其解读

大多数 devnet 错误属于少数几类。下表将症状映射到可能的原因。

症状可能原因首先检查的事项
AccountNotFound账户尚未创建,或集群错误确认集群以及账户已初始化
Blockhash not found发送前 blockhash 已过期获取新的 blockhash 并快速重试
交易已确认但状态未变程序 ID 错误或客户端过时重新检查程序 ID,必要时重新部署
429 或限流公共端点速率限制降低请求速率或迁移到带密钥端点
WebSocket 停止传递空闲超时或网络断开添加重连逻辑并重新订阅
Slot 跳跃或数据重置Devnet 账本重置重新创建账户并重新运行设置

Devnet 重置是正常的。如果您的测试依赖于预先存在的状态,请构建一个重新创建它的设置步骤,而不是假设它会持续存在。

当公共 devnet 端点不够用时

公共端点是共享的,devnet 流量不可预测。有两件事往往促使团队转向托管基础设施。

首先是 CI。如果每次提交都触发发送交易的测试套件,您需要一个稳定的端点及其自己的凭据,这样嘈杂的任务不会影响另一个。其次是可观测性。当测试失败时,您需要知道请求是否到达节点、节点返回了什么以及花费了多长时间。托管 RPC 服务为您提供按密钥的使用情况和更清晰的错误响应。

OnFinality 在许多网络(包括 Solana)上提供 RPC API 访问和专用节点选项。如果您的 devnet 使用量较轻,共享服务通常就足够了。如果您正在运行持续负载或需要隔离,专用节点 消除了嘈杂邻居问题。您可以在 支持的 RPC 网络 页面查看支持链的完整列表。

实用的 devnet 工作流程

可重复的工作流程比任何单一优化节省更多时间。

  1. 将集群配置保存在环境变量中,切勿硬编码。
  2. 在您控制账本的单元测试中运行本地验证器。
  3. 使用 devnet 进行需要真实网络条件的集成测试。
  4. 为专用测试密钥对提供资金并在运行中重复使用。
  5. 记录请求 ID、签名和 slot 编号,以便故障可重现。
  6. 在测试套件启动前添加调用 getSlot 的健康检查。
  7. 一旦测试在 CI 中运行,迁移到带密钥的托管端点。

这个顺序将廉价、快速的反馈循环保持在本地,并将网络访问保留给真正需要的情况。

关键要点

  • Solana devnet 是一个独立的集群,使用无价值的 SOL,用于在主网之前测试程序和客户端。
  • 集群名称是 devnet;将其保存在环境变量中,切勿与 mainnet-beta 混合。
  • devnet 水龙头有速率限制,因此为可重复使用的测试密钥对提供资金,而不是反复请求。
  • 大多数 devnet 错误是 blockhash 过期、集群错误或速率限制,而不是节点故障。
  • Devnet 重置是预期的;构建重新创建状态的设置步骤。
  • 当测试在 CI 中运行或需要隔离时,从公共端点迁移到托管或专用 RPC 服务。

常见问题解答

什么是 Solana devnet RPC URL?

没有单一的规范 URL。您可以使用 SDK 提供的集群 URL,或提供商的托管端点。OnFinality 将 Solana devnet 列为受支持的网络;请参阅 Solana Devnet 网络页面 获取连接详情。

Solana devnet 与 testnet 相同吗?

不相同。Devnet 和 testnet 是独立的集群。Devnet 是更常用的测试环境,也更可能被重置。始终确认您的端点指向哪个集群。

为什么我的 devnet 交易失败并显示“blockhash not found”?

blockhash 在交易处理之前过期了。在发送前立即获取新的 blockhash 并重试。在繁忙或限流的端点上,这种情况更常发生。

我可以在生产环境中使用公共 devnet 端点吗?

Devnet 用于测试,而非生产。对于生产工作负载,您应该使用主网和托管或专用 RPC 服务。请参阅 RPC 定价 了解计划选项。

OnFinality 支持 Solana devnet 吗?

是的。Solana devnet 被列为 OnFinality 支持的网络之一。请查看 Solana Devnet 网络页面RPC API 服务 页面了解当前详情。

如何在 devnet 上测试 WebSocket 订阅?

使用 ws 端点,通过 onLogsonAccountChange 订阅,并添加重连逻辑。公共端点可能会断开空闲连接,因此请显式处理重新订阅。

RPC 知识库

相关 RPC 内容

网络 RPCBittensor

如何在 Bittensor 上挖掘 TAO:面向开发者的实用指南

在 Bittensor 上挖掘 TAO 意味着在子网上运行一个矿工,该矿工产生数字商品(如推理、计算或存储),并获得 TAO 奖励。本指南解释了矿工、验证者和子网的角色,如何选择子网,以及注册和运行矿工的实际步骤,包括与 Finney 网络交互所需的 RPC 端点。...

网络 RPCMoonriver

Moonriver RPC:端点、配置与最佳实践

Moonriver 是 Kusama 上兼容以太坊的金丝雀网络,适合在部署到 Moonbeam 之前测试 dApp。本指南涵盖 Moonriver RPC 端点、如何配置钱包和工具,以及如何为生产环境选择可靠的 RPC 提供商。...

网络 RPCBNB Chain

什么是BNB智能链RPC URL,如何使用?

BNB智能链(BSC)RPC URL是您的dApp、钱包或脚本用来向BSC网络发送JSON-RPC请求的端点。OnFinality官方公共端点是https://bnb.api.onfinality.io/public。本文解释了如何配置它、选择RPC提供商时需要注意什么,以及如何调试常见问题。...

区块链基础设施

什么是节点基础设施,如何为Web3项目评估它?

节点基础设施是指运行区块链节点以支持去中心化应用的硬件、软件和网络组件。本指南解释了核心概念,提供了选择自托管和托管解决方案的决策清单,并为开发者和基础设施采购者提供了实用的评估标准。...

网络 RPCArbitrum

Arbitrum 公共 RPC:端点、链设置和提供商选择

Arbitrum One 和 Arbitrum Sepolia 的公共 RPC 端点让开发者无需运行节点即可连接钱包和 dApp。本文涵盖官方端点、链设置,以及如何评估公共与托管 RPC 提供商以用于生产工作负载。...

RPC 提供商选择

Dwellir 与其他 RPC 提供商:应比较什么?

Dwellir 是一个多链 RPC 基础设施提供商,宣称可访问超过 150 个区块链网络。开发者在比较 API 提供商或为 Ethereum、Polkadot、Base 等链寻找可靠的 HTTPS 和 WebSocket 端点时,通常会搜索到它。本页面可帮助你根据真实生产需求评估 Dwellir 的...

永远不用担心基础设施

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

开始