摘要
Solana Devnet API 是一个公共 RPC 端点,用于在不使用真实 SOL 的情况下测试 Solana 程序和 dApp。它支持完整的验证器模拟、程序部署以及与 Solana 并行运行时的集成。本指南涵盖官方端点、速率限制、获取 Devnet SOL 以及常见调试技术。
Solana Devnet API 决策清单
在开始基于 Solana Devnet 构建之前,请先检查此清单以避免常见陷阱:
- 确认端点:使用
https://api.devnet.solana.com作为 HTTP,使用wss://api.devnet.solana.com作为 WebSocket。仔细检查您没有指向主网。 - 了解速率限制:公共 Devnet 端点是共享的并且有速率限制。如果您遇到 429 错误,请考虑使用专用的 RPC 提供商。
- 获取 Devnet SOL:使用官方 Solana 水龙头请求测试代币。您需要它们来支付交易费用和租金。
- 设置正确的承诺级别:根据您的用例选择
processed、confirmed或finalized。对于大多数测试,confirmed是一个不错的默认值。 - 使用本地验证器进行大量测试:为了快速迭代,请在本地运行
solana-test-validator,而不是依赖公共 Devnet。 - 为生产环境做规划:Devnet 仅用于测试。当您迁移到主网时,您将需要可靠的 RPC 基础设施。
什么是 Solana Devnet API?
Solana Devnet API 是一组 JSON-RPC 和 WebSocket 端点,允许您与 Solana Devnet 集群交互。Devnet 是一个公共测试环境,镜像了主网的功能,允许开发人员部署程序、发送交易和测试 dApp,而无需冒真实资金的风险。
与本地验证器不同,Devnet 是一个共享集群,包含多个验证器和 API 节点。这使得它对于测试您的应用程序在分布式环境中的行为(包括交易确认和状态同步)非常有用。
Solana Devnet 端点
官方 Solana Devnet 端点为:
| 接口 | URL |
|---|---|
| HTTP RPC | https://api.devnet.solana.com |
| WebSocket | wss://api.devnet.solana.com |
这些端点由 Solana Labs 运营,免费使用,但有速率限制。具体限制可能会变化,请查看官方文档以获取最新信息。
对于生产环境或高流量测试,您可能需要使用专用的 RPC 提供商,如 OnFinality,它提供 Solana Devnet RPC,具有更高的速率限制和更可靠的性能。
获取 Devnet SOL
要与 Devnet 交互,您需要 Devnet SOL 来支付交易费用和账户租金。您可以从官方 Solana 水龙头获取免费的 Devnet SOL:
- 访问 Solana 水龙头。
- 输入您的钱包地址(例如 Phantom 或 Solflare 地址)。
- 点击“请求 SOL”并等待代币到账。
水龙头请求有速率限制,因此如果您需要大量代币,请考虑运行本地验证器或使用支持更大请求的水龙头。
发起您的第一个 RPC 调用
以下是一个简单的 curl 命令,用于检查 Devnet 上的当前区块高度:
curl https://api.devnet.solana.com -X POST -H "Content-Type: application/json" -d '
{
"jsonrpc": "2.0",
"id": 1,
"method": "getBlockHeight",
"params": [{"commitment": "confirmed"}]
}
'
您应该会收到类似以下的响应:
{
"jsonrpc": "2.0",
"result": 123456789,
"id": 1
}
使用 WebSocket 订阅
对于实时更新,您可以使用 WebSocket 订阅。例如,订阅账户变更:
const webSocket = new WebSocket('wss://api.devnet.solana.com');
webSocket.onopen = () => {
webSocket.send(JSON.stringify({
jsonrpc: '2.0',
id: 1,
method: 'accountSubscribe',
params: [
'YOUR_ACCOUNT_ADDRESS',
{
commitment: 'confirmed',
encoding: 'base64'
}
]
}));
};
webSocket.onmessage = (event) => {
console.log(JSON.parse(event.data));
};
Devnet 常用的 RPC 方法
以下是在 Devnet 上工作时经常使用的一些 RPC 方法:
getBalance– 检查账户的 SOL 余额。getLatestBlockhash– 获取用于交易签名的最新区块哈希。sendTransaction– 提交已签名的交易。getSignatureStatuses– 检查交易的状态。getProgramAccounts– 获取程序拥有的所有账户。simulateTransaction– 模拟交易而不提交。
调试常见问题
429 请求过多
如果您看到 HTTP 429 错误,说明您已达到速率限制。解决方案:
- 降低请求频率并添加缓存。
- 使用具有更高限制的专用 RPC 提供商。
- 为开发运行本地验证器。
403 禁止
如果您的 IP 因滥用而被阻止,可能会发生这种情况。请稍后重试或使用其他网络。
交易未确认
如果交易未确认,请检查:
- 您使用的承诺级别。
- 区块哈希是否是最新的。
- 您是否有足够的 SOL 支付费用。
何时使用专用 RPC 提供商
虽然公共 Devnet 端点适合小型测试,但它有局限性:
- 速率限制:共享基础设施可能会限制您的请求。
- 可靠性:公共端点可能会宕机或变慢。
- 无支持:如果出现问题,您只能靠自己。
对于严肃的开发,请考虑使用像 OnFinality 这样的专用 RPC 提供商。他们提供 Solana Devnet RPC,具有更高的速率限制、更好的正常运行时间和支持。您还可以查看 RPC 定价 以找到适合您需求的计划。
关键要点
- Solana Devnet API 为构建和测试 Solana 应用程序提供了公共测试环境。
- 使用
https://api.devnet.solana.com作为 HTTP,使用wss://api.devnet.solana.com作为 WebSocket。 - 从官方水龙头获取免费的 Devnet SOL 以支付交易费用。
- 公共端点有速率限制;对于生产级测试,请考虑使用专用提供商。
- 始终使用正确的承诺级别进行测试,并优化您的 RPC 调用。
常见问题解答
什么是 Solana Devnet API?
Solana Devnet API 是一组用于与 Solana Devnet 集群交互的 RPC 端点,该集群是面向开发人员的公共测试环境。
如何获取 Devnet SOL?
使用 faucet.solana.com 上的官方 Solana 水龙头请求免费的 Devnet SOL。
公共 Devnet 端点的速率限制是多少?
速率限制未公开记录,并且可能会变化。如果您需要更高的限制,请使用专用的 RPC 提供商。
我可以将 Devnet 用于生产环境吗?
不可以,Devnet 仅用于测试。生产应用程序请使用主网。
如何使用 WebSocket 连接到 Devnet?
使用 wss://api.devnet.solana.com 进行 WebSocket 连接。
Devnet 和 Testnet 有什么区别?
Devnet 用于开发人员测试,而 Testnet 用于压力测试网络升级和验证器性能。
如何为 Devnet 选择 RPC 提供商?
寻找提供高速率限制、可靠正常运行时间和支持的提供商。查看 如何选择 RPC 提供商 以获取更多指导。
使用 Devnet API 的最佳实践是什么?
缓存 RPC 响应,使用适当的承诺级别,并避免不必要的调用。对于生产环境,请使用专用基础设施。
如何将程序部署到 Devnet?
在将集群设置为 Devnet 后,使用 Solana CLI 的 solana program deploy 命令。
我可以使用哪些工具与 Devnet API 配合使用?
您可以使用 Solana CLI、web3.js 和各种 SDK。有关受支持网络的完整列表,请参阅 受支持的 RPC 网络。