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

什么是 Solana Devnet 地址以及如何使用?

摘要

Solana Devnet 地址是 Solana Devnet 集群上的公钥,这是一个测试网络,模拟主网行为但不使用真实的 SOL。您可以使用它来空投测试 SOL、部署程序并在发布到主网之前运行交易。地址格式与主网完全相同,因此唯一变化的是您的工具所指向的 RPC 端点。

本文解释了 Devnet 地址与主网地址的区别、如何生成和资助一个地址、如何配置钱包和 RPC 客户端,以及如何调试当 Devnet 地址未获得资金或指向错误集群时出现的错误。

Solana Devnet 地址是存在于 Solana Devnet 集群而非主网上的公钥。它看起来与主网地址完全相同——一个 base58 字符串,例如 9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin——但它仅持有测试 SOL,并且仅针对 Devnet RPC 节点进行解析。开发者使用 Devnet 地址来部署程序、模拟交易和运行集成测试,而无需花费真实资金。

如果您已经了解主网地址的工作原理,那么心智模型很简单:相同的密钥格式、相同的 JSON-RPC 方法、不同的集群。困惑通常始于钱包、CLI 或 SDK 在您期望 Devnet 时静默指向主网,或者当地址没有测试 SOL 且每笔交易都失败时。本页将引导您生成地址、为其提供资金、将其接入您的工具,并修复随之而来的错误。

快速推荐:哪种 Devnet 设置适合您的工作流程?

在复制端点之前,请确定您实际要测试的内容。正确的 Devnet 地址设置取决于您是需要一次性密钥对、持久资助账户,还是团队的共享环境。

您的情况推荐方法原因
一次性脚本或教程在代码中生成新密钥对,空投少量资金,用后丢弃无需密钥管理开销
本地应用开发持久密钥对文件加上配置中的 Devnet RPC 端点可重复使用的余额,稳定的程序 ID
CI 或自动化测试每次运行使用临时密钥对,通过水龙头或预资助账户提供资金可重现,无共享状态
团队预发布环境专用或共享的 Devnet RPC 端点,并记录配置跨机器行为一致
主网上线前演练Devnet 地址加上主网风格的承诺设置更接近生产语义

如果您要从公共端点迁移到更稳定的端点以进行重复测试运行,OnFinality 的 Solana Devnet RPC 是一个选择,您可以在 RPC 定价页面 上比较计划。

Devnet 地址与主网地址有何不同

地址本身没有不同。Solana 使用 Ed25519 密钥对,公钥就是每个集群上的地址。变化的是您的客户端所通信的集群以及该集群所持有的状态。

  • 集群身份。 Devnet 是一个独立的账本。在 Devnet 上部署的程序在主网上不存在,即使地址匹配。
  • 代币价值。 Devnet SOL 没有市场价值。它的存在是为了让您在测试期间支付交易费用和租金。
  • 状态重置。 Devnet 可能会重置或出现不稳定。不要将 Devnet 状态视为永久存储。
  • 程序可用性。 一些主网程序未在 Devnet 上部署,而一些仅限 Devnet 的程序不在主网上。

这就是为什么在一个项目中完美运行的 Devnet 地址在另一个项目中可能显示为“空”:第二个项目正在查询不同的集群。

生成 Solana Devnet 地址

您可以使用 Solana CLI、JavaScript 或在钱包中创建地址。密钥对与集群无关;您通过将客户端指向 Devnet 端点来选择 Devnet。

使用 Solana CLI

# 创建一个新的密钥对文件
solana-keygen new --outfile ~/.config/solana/devnet.json

# 将 CLI 指向 Devnet
solana config set --url https://api.devnet.solana.com

# 显示地址
solana-keygen pubkey ~/.config/solana/devnet.json

使用 JavaScript

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

const keypair = Keypair.generate();
const address = keypair.publicKey.toBase58();
console.log("Devnet address:", address);

// 将连接指向 Devnet RPC 端点
const connection = new Connection("https://api.devnet.solana.com", "confirmed");
const balance = await connection.getBalance(keypair.publicKey);
console.log("Balance in lamports:", balance);

请注意,除了端点 URL 之外,代码从未提及“Devnet”。地址只是一个公钥;端点决定它针对哪个集群进行解析。

为 Devnet 地址提供资金

新的 Devnet 地址没有 SOL,因此无法支付费用或创建账户。您可以通过空投为其提供资金,这是 Devnet 相当于水龙头的机制。

# 向您的 Devnet 地址请求 2 SOL
solana airdrop 2

# 检查余额
solana balance

在 JavaScript 中:

const signature = await connection.requestAirdrop(
  keypair.publicKey,
  2 * LAMPORTS_PER_SOL
);
await connection.confirmTransaction(signature, "confirmed");

空投限制由集群强制执行,并且可能会变化。如果请求失败,请等待并重试,或使用提供 Devnet 水龙头的钱包。对于更繁重或重复的测试,托管 Devnet 端点可以减少公共速率限制的摩擦——请参阅 Solana Devnet RPC 选项

为 Devnet 配置钱包和客户端

大多数 Devnet 问题都是配置问题。每当地址行为异常时,请检查以下三个地方。

工具需要更改的内容常见错误
Solana CLIsolana config set --url <devnet endpoint>保留默认主网 URL
web3.js / AnchorConnection 端点和 AnchorProvider 集群在共享配置中硬编码主网端点
浏览器钱包网络选择器设置为 Devnet钱包在主网上而应用期望 Devnet
.env 文件RPC_URLCLUSTER 变量从另一个项目复制过时的端点
程序部署--url devnet 标志意外部署到主网

一个有用的习惯是在启动时记录集群。获取创世哈希并将其与已知的 Devnet 值进行比较,可以立即告诉您所在的集群。

const genesisHash = await connection.getGenesisHash();
console.log("Cluster genesis hash:", genesisHash);

调试常见的 Devnet 地址错误

当 Devnet 地址“不工作”时,症状通常指向特定原因。将消息与修复方法匹配。

症状可能原因修复
Account not found地址从未获得资金或集群错误空投测试 SOL;验证端点
Insufficient funds for rent余额过低无法创建账户为地址提供更多 SOL
Blockhash not found端点滞后或集群不匹配重试;确认您在 Devnet 上
429 Too Many Requests公共端点速率限制退避、批量调用或使用托管端点
交易在本地成功,在 CI 中失败不同的 RPC 端点或未资助的密钥对标准化端点并预资助测试密钥
找不到程序 ID程序部署在不同的集群上重新部署到 Devnet

如果您反复看到速率限制或连接错误,问题通常是端点而不是地址。专用或共享的 RPC 服务可以为您提供稳定的 Devnet 目标;如果您的测试套件频繁运行,OnFinality 的 API 服务专用节点 选项值得考虑。

Devnet 与主网与测试网

Solana 有多个非生产集群,混淆它们是常见的困惑来源。

集群目的典型用途
主网具有真实 SOL 的生产账本实时应用
Devnet带有水龙头的主要测试集群应用开发、程序部署
测试网独立的测试集群,通常用于验证者和网络测试协议级测试

对于大多数应用开发者来说,Devnet 是正确的默认选择。当您测试验证者行为或网络级更改时,更常使用测试网。如果您需要主网风格的端点进行比较,请参阅 Solana RPC

发布到主网前的操作检查清单

Devnet 地址是排练,不是保证。在迁移到主网之前,请确认以下内容:

  1. 程序已部署到主网,地址与您的应用期望的一致。
  2. 密钥管理是生产级的。 切勿将 Devnet 密钥对重用于主网资金。
  3. 端点是环境驱动的,而非硬编码,以便您可以安全地切换集群。
  4. 承诺级别与您的风险承受能力匹配。 confirmedfinalized 在负载下表现不同。
  5. 错误处理涵盖速率限制和超时,因为公共端点可能会限流。
  6. 监控已到位,用于余额、交易成功率和 RPC 延迟。

如果您不想为生产运行自己的 Solana 节点,OnFinality 在 许多支持的网络 上提供 RPC API 和专用节点基础设施,包括 Solana 和 Solana Devnet。

关键要点

  • Solana Devnet 地址是普通的 Ed25519 公钥;集群由 RPC 端点决定,而不是地址格式。
  • 使用 Solana CLI 或 web3.js 生成地址,然后在发送交易前通过 Devnet 空投为其提供资金。
  • 大多数“地址损坏”问题实际上是集群不匹配、未资助账户或公共端点速率限制。
  • 在启动时记录创世哈希以确认您的客户端使用的集群。
  • 对于重复或团队测试,托管 Devnet 端点减少了公共水龙头和速率限制的摩擦。

常见问题

Solana Devnet 地址与主网地址不同吗?

不。地址格式相同。不同之处在于您的 RPC 客户端连接的集群以及该集群持有的状态。Devnet 地址持有测试 SOL,并且仅针对 Devnet 节点进行解析。

如何将测试 SOL 获取到 Devnet 地址?

使用 Solana CLI solana airdrop、web3.js requestAirdrop 方法或支持 Devnet 水龙头的钱包。空投限制由集群设置,并且可能会随时间变化。

为什么我的 Devnet 地址显示零余额?

要么它从未获得资金,要么您的客户端指向不同的集群。确认端点并检查创世哈希,然后请求空投。

我可以在 Devnet 和主网上使用相同的密钥对吗?

技术上可以,但您不应将 Devnet 密钥对重用于主网资金。将 Devnet 密钥视为一次性使用,并为生产使用单独的、安全管理的密钥。

我应该为 Devnet 使用什么 RPC 端点?

您可以从公共 Devnet 端点开始进行轻量测试。对于重复运行、CI 或团队环境,托管 Devnet RPC 服务(如 OnFinality 的 Solana Devnet RPC)为您提供更稳定的目标。在 RPC 定价页面 上比较选项。

RPC 知识库

相关 RPC 内容

RPC 提供商选择Solana

Triton One Solana RPC:在生产级应用中表现如何?

Triton One 是一个专注于 Solana 的 RPC 提供商,许多团队在寻找专用 Solana 端点时会遇到它。如果你正在评估它,实际的问题不仅仅是“它能用吗”,而是它的端点模型、传输支持以及运维适配性是否匹配你的工作负载。本文分析了在你做出承诺之前需要检查哪些方面,以及 OnFinalit...

网络 RPCPichiu

How to Connect to Pichiu Network RPC for Oracle Data

Pichiu Network provides decentralized oracle services on Kusama. This article explains how developers can integrate with Pichiu using RPC endpoints, c...

RPC 提供商选择Arbitrum

什么是Arbitrum RPC,如何选择合适的端点?

Arbitrum RPC端点是dApp、钱包和索引器与Arbitrum One、Nova或测试网通信的网关。本文涵盖链设置、公共与私有端点、排序器行为以及为生产环境选择可靠RPC提供商的标准。...

网络 RPCSolana

Solana RPC Access: Authentication, Rate Limits & Common Errors

Solana RPC access uses JSON-RPC over HTTP and WebSocket. Public endpoints such as https://api.mainnet-beta.solana.com require no key but enforce chang...

网络 RPCAvalanche

什么是 Avalanche 归档节点,何时应该使用?

Avalanche 归档节点存储 C 链、X 链和 P 链的完整历史状态,能够回答修剪节点无法回答的查询。本文解释了归档节点、修剪节点和状态同步节点之间的区别,并帮助您决定是自己运行节点还是使用托管的 RPC 提供商。...

RPC 提供商选择

Dedicated vs Shared Node Access: A Practical Comparison for Web3 Developers

Dedicated node access gives you an exclusive blockchain node with guaranteed resources and clear rate limits. Shared node access pools multiple users ...

永远不用担心基础设施

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

开始