摘要
Solana Devnet 是一个测试网,供开发者在不冒真实资金风险的情况下构建和测试 Solana 程序。本页说明如何连接到 Solana Devnet RPC 端点、从水龙头获取 SOL,以及调试常见问题。它还涵盖了如何为你的 devnet 测试选择公共或专用 RPC 基础设施。
快速建议:你应该使用哪个 Solana Devnet RPC?
如果你正在快速编写脚本或测试钱包集成,公共 devnet RPC 端点通常就足够了。公共端点免费且无需注册,但它们被许多用户共享,在高峰时段可能会受到速率限制或变慢。
如果你正在运行持续集成管道、对 dApp 进行负载测试,或构建需要稳定吞吐量的验证器或索引器,请考虑使用专用 RPC 节点。专用节点为你提供私有端点,具有可预测的性能且没有嘈杂的邻居。OnFinality 为 Solana Devnet 提供共享公共端点和专用节点。查看 Solana Devnet 网络页面 了解当前的可用性和选项。
对于大多数开发工作流程,从公共端点开始,当遇到速率限制或需要更高可靠性时切换到专用节点。本文解释了链设置、如何获取测试 SOL,以及如何调试常见问题。
什么是 Solana Devnet?
Solana Devnet 是一个测试网环境,模拟 Solana 主网,但使用没有真实价值的测试代币。它旨在让开发者部署和测试 Solana 程序(智能合约)和客户端应用程序,而无需冒真实 SOL 的风险。
Devnet 不同于 Solana Testnet,后者用于全网测试,并且可能频繁重置。Devnet 更稳定,是应用程序开发的推荐环境。它运行相同的验证器软件,并支持与主网相同的 RPC 方法,因此在 devnet 上运行的代码应该只需很少的更改即可在主网上运行。
链设置一览
以下是连接到 Solana Devnet 的关键详细信息:
| 设置 | 值 |
|---|---|
| 网络名称 | Solana Devnet |
| RPC 端点 | https://api.devnet.solana.com(公共) |
| WebSocket 端点 | wss://api.devnet.solana.com/(公共) |
| 链 ID | 不适用(Solana 使用不同的模型) |
| 原生货币 | SOL(测试代币) |
| 小数位数 | 9 |
| 浏览器 | https://explorer.solana.com/?cluster=devnet |
注意:公共端点 https://api.devnet.solana.com 由 Solana Labs 运营,是大多数工具的默认端点。OnFinality 也为 Solana Devnet 提供公共端点,你可以在 Solana Devnet 网络页面 上找到。当你使用托管提供商时,通常会获得更可靠的连接以及分析、专用支持等附加功能。
从水龙头获取测试 SOL
要与 Solana Devnet 交互,你需要测试 SOL 来支付交易费用和租金。你可以从官方 Solana 水龙头获取测试 SOL,网址为 https://faucet.solana.com。
- 连接你的钱包(例如 Phantom、Solflare)或粘贴你的钱包地址。
- 如果需要,完成验证码。
- 请求 SOL。水龙头通常发送少量 SOL,你可以在冷却期后再次请求。
如果水龙头资金不足或无法使用,你也可以在 Solana Discord 的 #devnet-faucet 频道中请求 SOL,或使用第三方水龙头。一些 RPC 提供商也提供水龙头作为其服务的一部分。
使用常见工具连接到 Solana Devnet
使用 Solana CLI
Solana CLI 是与网络交互的最常见方式。将集群设置为 devnet 并配置你的密钥对:
solana config set --url https://api.devnet.solana.com
solana config get
要创建新的密钥对并空投测试 SOL:
solana-keygen new --outfile ~/.config/solana/devnet.json
solana config set --keypair ~/.config/solana/devnet.json
solana airdrop 1
使用 web3.js
对于 JavaScript 应用程序,使用 @solana/web3.js:
import { Connection, clusterApiUrl } from '@solana/web3.js';
// 使用公共 devnet 端点
const connection = new Connection('https://api.devnet.solana.com', 'confirmed');
// 或使用来自提供商的自定义 RPC 端点
// const connection = new Connection('https://your-provider-endpoint', 'confirmed');
async function getBalance(pubkey) {
const balance = await connection.getBalance(pubkey);
console.log(`Balance: ${balance / 1e9} SOL`);
}
使用钱包
大多数 Solana 钱包(Phantom、Solflare、Backpack)允许你在设置中切换到 Devnet。在 Phantom 中,转到“设置”>“开发者设置”>“更改网络”,然后选择“Devnet”。钱包将自动使用公共 devnet 端点。
调试常见的 Solana Devnet RPC 问题
1. 公共端点上的速率限制
像 api.devnet.solana.com 这样的公共端点是共享的,可能会限制请求速率,尤其是在高流量时期。如果你看到 HTTP 429 错误或超时,请考虑:
- 降低请求频率
- 使用专用 RPC 节点
- 使用指数退避实现重试逻辑
2. 交易模拟失败
当交易失败时,你通常会收到 Transaction simulation failed 错误。使用 simulateTransaction RPC 方法获取更多详细信息:
curl https://api.devnet.solana.com -X POST -H "Content-Type: application/json" -d '
{
"jsonrpc": "2.0",
"id": 1,
"method": "simulateTransaction",
"params": [
"<base58-encoded-transaction>",
{
"encoding": "base58",
"replaceRecentBlockhash": true
}
]
}
'
响应将包含一个 logs 数组,显示程序日志和错误消息。常见问题包括资金不足、账户数据无效或程序错误。
3. 找不到区块哈希
如果你收到 Blockhash not found 错误,则表示你使用的最近区块哈希已过期。在发送交易之前获取新的区块哈希:
const { blockhash } = await connection.getLatestBlockhash('confirmed');
const transaction = new Transaction().recentBlockhash = blockhash;
4. WebSocket 断开连接
WebSocket 连接可能因网络问题或服务器重启而断开。在客户端中实现重新连接逻辑:
function connectWebSocket(url) {
const ws = new WebSocket(url);
ws.onclose = () => {
console.log('WebSocket closed, reconnecting...');
setTimeout(() => connectWebSocket(url), 1000);
};
return ws;
}
用于 devnet 的公共 RPC 与专用 RPC
当你搜索“rpc solana devnet”时,你会找到公共和商业 RPC 端点。以下比较可帮助你决定:
| 特性 | 公共端点(例如 api.devnet.solana.com) | 专用 RPC(例如 OnFinality) |
|---|---|---|
| 成本 | 免费 | 付费(参见 定价) |
| 速率限制 | 有,通常严格 | 更高限制或无限制 |
| 性能 | 共享,可变 | 专用,一致 |
| 可靠性 | 可能宕机或缓慢 | 托管,具有正常运行时间监控 |
| 支持 | 仅社区 | 提供商支持 |
| 附加功能 | 无 | 分析、WebSocket、存档数据 |
对于生产级 dApp,你绝不会依赖公共 devnet 端点。但对于开发,公共端点就足够了,直到你需要更多。如果你正在构建严肃的项目,请考虑使用像 OnFinality 这样的提供商提供的专用节点,以避免意外。
如何选择 Solana Devnet RPC 提供商
如果你决定使用商业 RPC 提供商,请根据以下标准进行评估:
- 网络覆盖:提供商是否支持 Solana Devnet?并非所有提供商都支持。查看 支持的网络 列表。
- 性能:寻找低延迟和高吞吐量的提供商。一些提供商提供专用节点,为你提供私有端点。
- 可靠性:检查提供商的正常运行时间历史以及他们是否提供 SLA。避免做出不切实际保证的提供商。
- 功能:你是否需要 WebSocket 支持、存档数据或特定的 RPC 方法?一些提供商提供增强的 API。
- 定价:比较定价模型。有些按请求收费,有些按节点收费。查看 RPC 定价 了解 OnFinality 的模型。
OnFinality 是一个不错的选择,因为它支持 Solana Devnet,并提供共享和专用节点。你可以从免费公共端点开始,并根据需要升级。
关键要点
- Solana Devnet 是一个测试网,供开发者在不使用真实资金的情况下构建和测试 Solana 程序。
- 默认的公共 RPC 端点是
https://api.devnet.solana.com,但可能会受到速率限制。 - 从官方水龙头或社区渠道获取测试 SOL。
- 使用 Solana CLI、web3.js 或钱包连接到 Devnet。
- 调试常见问题,如速率限制、模拟失败和区块哈希错误。
- 对于严肃的开发,请考虑使用像 OnFinality 这样的提供商提供的专用 RPC 节点,以获得更好的性能和可靠性。
常见问题解答
Solana Devnet 和 Testnet 有什么区别?
Solana Devnet 是用于应用程序开发的稳定测试网,而 Testnet 用于网络级测试,并且可能频繁重置。Devnet 是大多数开发者的推荐选择。
如何在 Solana Devnet 上获取 SOL?
你可以从官方水龙头 https://faucet.solana.com 或社区水龙头获取测试 SOL。你也可以在 Solana Discord 中请求 SOL。
我可以在 Devnet 上使用与主网相同的 RPC 方法吗?
可以,Solana Devnet 支持与主网相同的 JSON-RPC 方法,因此你可以无需更改即可测试代码。
公共 Solana Devnet RPC 有速率限制吗?
有,公共端点有速率限制以防止滥用。如果你需要更高的限制,请考虑使用专用 RPC 节点。
OnFinality 支持 Solana Devnet 吗?
支持,OnFinality 支持 Solana Devnet。访问 Solana Devnet 网络页面 了解更多详情并获取端点。