摘要
Solana devnet 是一个公共测试集群,开发者可以在其中部署和测试程序、运行交易以及验证客户端逻辑,而无需冒真实资金的风险。连接到可靠的 devnet RPC API 是构建和调试 Solana 应用程序的第一步。
本指南将说明如何为 devnet 配置 Solana 工具、从水龙头获取测试 SOL,以及选择符合您开发工作流程的 RPC 端点。无论您使用的是 Solana CLI、web3.js 还是自定义后端,都可以在这里找到实用的设置步骤和故障排除技巧。
快速建议:应该使用哪个 devnet 端点?
对于大多数开发工作,公共 Solana devnet 端点 https://api.devnet.solana.com 足以入门。它由 Solana 基金会运营,是 Solana CLI 和 web3.js 的默认端点。然而,公共端点在测试高峰期可能会变得拥堵,并且由许多开发者共享。如果您正在运行集成测试、负载测试或持续集成管道,您可能需要一个更可靠的端点。
OnFinality 提供了一个托管的 Solana devnet RPC 端点,您可以将其与现有工具一起使用。它专为需要一致性能和比典型公共端点更高速率限制的开发者而设计。您可以在 Solana Devnet 网络页面 找到端点详细信息。对于生产环境的主网工作负载,请参阅 Solana 主网 RPC 选项。
决策指南:
- 只是试验? 使用公共 devnet 端点或提供商的免费层。
- 构建需要可靠正常运行时间的 dApp 或机器人? 考虑使用像 OnFinality 这样的托管 RPC 服务,以避免速率限制和停机。
- 运行验证器或需要完全控制? 您可以运行自己的 devnet 节点,但这会增加运营开销。
什么是 Solana devnet API?
Solana devnet 是一个模拟主网环境的测试集群。它运行相同的软件并使用相同的 JSON-RPC API,但使用没有真实价值的测试代币(devnet SOL)。开发者使用 devnet API 来:
- 部署和测试 Solana 程序(智能合约)
- 发送交易并测试钱包集成
- 验证客户端逻辑和错误处理
- 运行自动化测试而无需花费真实的 SOL
该 API 基于 JSON-RPC,类似于以太坊的 JSON-RPC,但具有 Solana 特定的方法。您可以使用 Solana CLI、web3.js 或任何可以发送 JSON-RPC 请求的 HTTP 客户端与之交互。
Solana devnet 链设置一览
| 设置 | 值 |
|---|---|
| 网络名称 | Solana Devnet |
| 集群 | Devnet |
| 默认 RPC URL | https://api.devnet.solana.com |
| OnFinality RPC URL | 参见 Solana Devnet 网络页面 |
| WebSocket URL | wss://api.devnet.solana.com/ |
| 链 ID | 不适用(Solana 使用不同的寻址方案) |
| 原生代币 | SOL (devnet) |
| 代币小数位 | 9 |
| 浏览器 | https://explorer.solana.com/?cluster=devnet |
| 水龙头 | https://faucet.solana.com |
注意:Solana 不像 EVM 链那样使用链 ID。相反,您在配置中指定集群(devnet、testnet、mainnet-beta)。
为 devnet 设置 Solana CLI
如果您使用 Solana CLI,可以通过一条命令切换到 devnet:
solana config set --url https://api.devnet.solana.com
要验证配置,请运行:
solana config get
您应该看到 RPC URL 设置为 devnet 端点。现在您可以创建钱包并获取测试 SOL:
solana-keygen new --outfile ~/.config/solana/devnet.json
solana config set --keypair ~/.config/solana/devnet.json
solana airdrop 1
solana airdrop 命令从水龙头请求 devnet SOL。如果您需要更多,可以使用 Solana 水龙头 或使用 solana airdrop 命令请求更大的数量(受速率限制)。
使用 web3.js 连接
对于 JavaScript 开发者,@solana/web3.js 库是与 Solana 交互的标准方式。以下是一个连接到 devnet 并检查余额的基本示例:
import { Connection, LAMPORTS_PER_SOL, PublicKey } from '@solana/web3.js';
// 使用公共 devnet 端点或您的 OnFinality 端点
const connection = new Connection('https://api.devnet.solana.com', 'confirmed');
// 替换为您的 devnet 钱包地址
const address = new PublicKey('YOUR_DEVNET_WALLET_ADDRESS');
const balance = await connection.getBalance(address);
console.log(`Balance: ${balance / LAMPORTS_PER_SOL} SOL`);
如果您使用自定义 RPC 提供商,请将 URL 替换为 OnFinality 提供的 URL。对于 WebSocket 支持,您可以使用 wss:// 端点进行订阅。
直接使用 JSON-RPC API
您还可以使用原始 JSON-RPC 请求与 Solana devnet API 交互。这对于调试或没有原生 SDK 的语言很有用。以下是一个使用 curl 获取最新区块哈希的示例:
curl https://api.devnet.solana.com -X POST -H "Content-Type: application/json" -d '
{
"jsonrpc": "2.0",
"id": 1,
"method": "getLatestBlockhash"
}
'
响应将包含一个 blockhash,您可以使用它来构建交易。有关方法的完整列表,请参阅 Solana RPC 文档。
从 devnet 水龙头获取测试 SOL
要测试交易,您需要 devnet SOL。官方水龙头位于 https://faucet.solana.com。您可以通过输入钱包地址来请求 SOL。也有社区水龙头,但请谨慎使用,只使用可信来源。
如果您使用 CLI,solana airdrop 命令很方便,但它有速率限制。对于自动化测试,请考虑一次性请求较大数量并重复使用该钱包。
常见的 devnet API 问题及调试方法
即使使用可靠的端点,您也可能会遇到问题。以下是常见问题及其修复方法:
| 症状 | 可能原因 | 修复 |
|---|---|---|
429 Too Many Requests | 公共端点上的速率限制 | 使用托管 RPC 提供商或降低请求频率 |
Transaction simulation failed | 无效交易或资金不足 | 检查您的钱包余额和交易指令 |
Blockhash not found | 交易太旧 | 使用新的区块哈希重试 |
Connection refused | 端点关闭或无法访问 | 检查您的网络连接并尝试其他端点 |
Unauthorized | 需要 API 密钥 | 如果使用私有端点,请确保您的 API 密钥正确 |
要进行更深入的调试,您可以在 Solana CLI 中启用 RPC 日志记录:
solana config set --url https://api.devnet.solana.com -v
-v 标志启用详细输出,显示 JSON-RPC 请求和响应。
在公共和托管 devnet RPC 之间选择
公共端点是免费的且易于使用,但它们有局限性:
- 速率限制:公共端点通常限制每秒请求数,如果您进行大量调用,可能会中断您的测试。
- 正常运行时间:它们可能会因维护而停机或过载。
- 无支持:如果您遇到问题,没有人可以联系。
像 OnFinality 这样的托管 RPC 提供商提供:
- 更高的速率限制:适用于负载测试和 CI/CD 管道。
- 更好的正常运行时间:冗余基础设施降低了停机风险。
- 支持:如果您遇到问题,可以从提供商处获得帮助。
对于生产主网应用程序,几乎总是建议使用托管 RPC。对于 devnet,这取决于您的需求。如果您只是学习,公共端点就足够了。如果您正在构建严肃的项目,请考虑使用托管服务以避免意外。
如何从 devnet 切换到主网
当您准备好部署到主网时,您需要更改 RPC 端点并使用真实的 SOL。过程类似:
- 更新您的 CLI 配置以指向主网端点:
solana config set --url https://api.mainnet-beta.solana.com - 将您的 web3.js 连接 URL 更新为主网端点。
- 确保您的钱包有真实的 SOL 用于交易费用。
如果您使用 OnFinality,您可以在 devnet 和主网上使用相同的 API 密钥,但您需要在仪表板中切换网络。有关详细信息,请参阅 Solana 主网网络页面。
关键要点
- Solana devnet API 是一个免费的测试环境,镜像主网功能。
- 对于简单测试,使用公共端点
https://api.devnet.solana.com,但考虑使用托管 RPC 以获得可靠的性能。 - 使用 devnet URL 配置您的 CLI 和 web3.js 以开始构建。
- 从水龙头获取测试 SOL 以为您的交易提供资金。
- 使用上述提示调试常见问题,如速率限制和交易失败。
- 当迁移到生产环境时,切换到主网端点并使用真实的 SOL。
常见问题解答
Solana devnet 和 testnet 有什么区别?
Solana 有多个测试集群。Devnet 是主要的开发环境,开发者在此部署和测试程序。Testnet 用于验证器测试和网络升级。Devnet 更稳定,是大多数开发者的推荐选择。
我可以在 devnet 和主网上使用相同的 API 密钥吗?
是的,使用 OnFinality,您可以在不同网络中使用相同的 API 密钥,但您需要在请求中指定网络或使用特定于网络的端点。有关详细信息,请查看 网络文档。
如果水龙头受到速率限制,如何获取更多 devnet SOL?
您可以稍后重试,或使用其他水龙头。一些社区水龙头提供更大的数量,但请谨慎分享您的私钥。
devnet API 与主网 API 相同吗?
是的,JSON-RPC 方法是相同的。唯一的区别是网络状态和代币的价值。这使得通过更改端点 URL 即可轻松在 devnet 和主网之间切换。
公共 devnet 端点的速率限制是多少?
确切的限制未公布,并且可能会更改。如果您遇到速率限制,请考虑使用像 OnFinality 这样的托管 RPC 提供商,它提供更高的限制和更好的可靠性。