摘要
Solana Devnet 是一个免费的公共测试网络,开发者可以在其中部署程序、测试交易,并模拟主网行为,而无需使用真实的 SOL。它紧密模拟 Solana 运行时,使其成为在主网启动前构建和调试 dApp 的标准环境。
本指南涵盖如何连接 Devnet、从水龙头获取免费 SOL,以及选择可靠的 RPC 端点。您还将学习如何调试交易,以及何时 Devnet 是适合您项目的环境。
快速决策指南:Devnet 是否适合您?
在深入设置之前,最好先确认 Devnet 是否是您实际需要的环境。Solana 运行三个公共集群,每个集群服务于不同的目的:
| 集群 | 用途 | SOL 价值 | 使用者 |
|---|---|---|---|
| Devnet | 应用程序开发和测试 | 免费(假) | dApp 开发者、QA 团队 |
| Testnet | 协议和验证者测试 | 免费(假) | 验证者、核心贡献者 |
| Mainnet-beta | 生产流量 | 真实资金 | 终端用户、生产 dApp |
如果您正在构建 dApp、编写智能合约或运行集成测试,Devnet 是正确的选择。如果您正在测试验证者行为或协议升级,Testnet 更合适。如果您准备发布,您将需要主网。
一旦确认 Devnet 适合,下一步是决定如何连接。您可以使用公共端点、运行自己的节点,或使用托管 RPC 服务。对于大多数开发工作,托管端点消除了同步和维护节点的开销,让您专注于代码。OnFinality 提供了一个 Solana Devnet RPC 端点,您可以在开发期间免费使用。
什么是 Solana Devnet?
Solana Devnet 是一个公共测试网络,模拟 Solana 主网运行时。它使用相同的软件、相同的账户模型和相同的交易处理管道,但使用没有货币价值的假 SOL。这使其成为一个安全的沙盒,用于部署程序、测试代币转移和调试边缘情况,而无需承担财务风险。
Devnet 会定期重置,因此您不应将其视为持久环境。重置时间表由 Solana 团队宣布,重置后所有账户和余额都会被清除。这也是为什么您应该将部署脚本和配置保存在版本控制中的原因之一。
Devnet 与 Testnet 与 Mainnet:使用哪一个
Solana 的三个集群经常被混淆,但它们扮演着不同的角色:
- Devnet 面向应用程序开发者。它在运行时行为方面最接近主网,是您端到端测试 dApp 的地方。
- Testnet 面向验证者操作员和协议开发者。它运行最新的协议更改,用于测试共识和网络升级。
- Mainnet-beta 是生产网络。它使用真实的 SOL,是您的用户与您部署的应用程序交互的地方。
对于大多数 Web3 开发者来说,Devnet 是起点。它为您提供了一个真实的环境,而无需承担主网的成本或风险。
如何连接 Solana Devnet
根据您的工具,有几种方式可以连接到 Devnet。最常见的是 Solana CLI、JavaScript 库(如 @solana/web3.js)和钱包配置。
使用 Solana CLI
Solana CLI 允许您使用一条命令将活动集群切换到 Devnet:
solana config set --url devnet
您可以使用以下命令验证配置:
solana config get
输出应显示 RPC URL: https://api.devnet.solana.com(默认公共端点)。如果您更喜欢使用托管端点,可以显式设置 URL:
solana config set --url https://solana-devnet.api.onfinality.io/public
将 URL 替换为您要使用的端点。OnFinality 的 Solana Devnet 网络页面 列出了当前的公共端点。
使用 JavaScript (web3.js)
如果您正在使用 JavaScript 构建 dApp,您可以创建一个指向 Devnet 的 Connection 对象:
import { Connection, clusterApiUrl } from '@solana/web3.js';
const connection = new Connection(clusterApiUrl('devnet'), 'confirmed');
对于自定义端点,直接传递 URL:
const connection = new Connection('https://solana-devnet.api.onfinality.io/public', 'confirmed');
使用钱包(Phantom、Solflare)
大多数 Solana 钱包在其开发者设置中支持 Devnet。例如,在 Phantom 中:
- 打开设置 → 开发者设置。
- 启用测试网模式。
- 选择 Devnet。
您的钱包地址在所有集群中保持不变,但余额是分开的。您需要向您的地址空投 Devnet SOL,然后才能支付交易费用。
从 Devnet 水龙头获取免费 SOL
Devnet 交易需要 SOL 作为费用,但 SOL 是免费的。官方 Solana Devnet 水龙头 是最可靠的来源。它允许每个 IP 地址有限数量的请求,您可以通过连接 GitHub 账户来增加限制。
您也可以直接从 CLI 请求空投:
solana airdrop 1 <YOUR_WALLET_ADDRESS> --url devnet
CLI 空投很方便,但可能受到速率限制。如果您需要更多数量用于测试,网络水龙头通常是更好的选择。
选择 Devnet RPC 端点
您的 RPC 端点是您的 dApp 与 Devnet 集群之间的网关。默认公共端点 (https://api.devnet.solana.com) 适用于轻度使用,但在高峰时段可能会变得拥堵。对于严肃的开发,请考虑托管 RPC 提供商。
在评估 Devnet 的 RPC 提供商时,请比较以下因素:
| 因素 | 检查什么 | 为什么重要 |
|---|---|---|
| 速率限制 | 每秒请求数和每日配额 | 防止您的应用在测试期间被限流 |
| 正常运行时间 | 历史可用性 | 确保您的 CI/CD 管道不会因端点停机而失败 |
| WebSocket 支持 | 实时订阅支持 | 账户和程序订阅需要 |
| 存档数据 | 访问历史状态 | 对调试和分析有用 |
| 专用选项 | 私有端点或专用节点 | 将您的流量与嘈杂的邻居隔离 |
OnFinality 为 Solana Devnet 提供共享和 专用节点 选项。您可以从免费公共端点开始,随着测试需求的增长进行升级。有关详细信息,请参阅我们的 RPC 定价。
调试常见的 Devnet 问题
即使使用可靠的端点,您也会遇到问题。以下是最常见的问题及其解决方法:
交易模拟错误
如果交易在模拟期间失败,错误消息通常指向失败的指令。使用 Solana Explorer 检查交易并查找特定的错误代码。
余额不足
如果您看到 insufficient funds,您的钱包没有足够的 Devnet SOL。使用水龙头向您的地址空投更多 SOL。
速率限制
如果您收到 429 Too Many Requests,您正在达到 RPC 端点的速率限制。降低请求频率或切换到具有更高限制的提供商。
WebSocket 断开
如果端点过载,WebSocket 连接可能会断开。在您的客户端中实现重连逻辑以优雅地处理此问题。
关键要点
- Solana Devnet 是一个免费的测试网络,用于构建和测试 dApp,无需真实 SOL。
- 使用 Devnet 进行应用程序开发,Testnet 进行协议测试,Mainnet 用于生产。
- 通过 CLI、JavaScript 或钱包设置连接;选择适合您工作负载的 RPC 端点。
- 从官方水龙头或通过 CLI 空投获取免费 SOL。
- 根据速率限制、正常运行时间、WebSocket 支持和专用选项评估 RPC 提供商。
- 使用 Solana Explorer 调试交易失败,并检查常见问题,如余额不足或速率限制。
常见问题解答
Solana Devnet 和 Testnet 有什么区别?
Devnet 供应用程序开发者测试 dApp 和智能合约。Testnet 供验证者操作员和核心开发者测试协议升级和网络行为。
如何在 Devnet 上获取免费 SOL?
使用官方 Solana Devnet 水龙头 或从 CLI 运行 solana airdrop。两种方法都提供免费 SOL 用于测试。
我可以在 Devnet 和 Mainnet 上使用相同的钱包地址吗?
可以,您的钱包地址在所有 Solana 集群中相同,但余额是分开的。您需要向您的地址空投 Devnet SOL 以进行 Devnet 交易。
Devnet 会重置吗?
是的,Solana 团队会定期重置 Devnet。所有账户和余额都会被清除,因此不要依赖 Devnet 来持久化状态。
我应该为 Devnet 使用哪个 RPC 端点?
默认公共端点适用于轻度测试,但对于生产级开发,请考虑像 OnFinality 这样的托管 RPC 提供商。查看 Solana Devnet 网络页面 以获取当前公共端点和选项。