摘要
以太坊 API 服务为您的 dApp、索引器或后端提供了一种可靠的方式来读写区块链数据,而无需运行自己的节点。这些服务通过 HTTPS 和 WebSocket 暴露 JSON-RPC 端点,并通常提供诸如归档数据、跟踪方法和分析等便利功能。
决策指南:以太坊 API 服务应关注什么
在比较提供商之前,请确定您的以太坊 API 服务必须支持哪些工作负载。简单的钱包前端与区块浏览器或高频交易机器人有不同的需求。问自己以下问题:
- 您需要归档数据吗? 如果您查询默认修剪窗口之外的历史状态,您需要一个归档节点或提供归档数据的 API 服务。
- 您需要跟踪方法吗? 像 debug_traceTransaction 和 trace_block 这样的工具对索引器和分析至关重要,但并非所有提供商都提供它们。
- 您需要 WebSocket 支持吗? 实时 dApp 依赖诸如
eth_subscribe之类的订阅来监听新区块和待处理交易。 - 您的请求量是多少? 估算峰值每秒请求数。公共端点有速率限制,不适合生产环境。
- 您需要专用资源吗? 如果您有严格的延迟或吞吐量要求,专用节点可提供隔离容量。
一旦您回答了这些问题,就可以根据功能集、定价和网络覆盖范围筛选提供商。如需快速入门,OnFinality 提供托管的以太坊 API 服务,包括公共、专用和归档选项。查看支持的网络页面以了解可用的以太坊网络。
什么是以太坊 API 服务?
以太坊 API 服务是一种托管解决方案,通过 JSON-RPC 提供对以太坊节点的访问。您无需运行自己的节点,而是向提供商的端点发送 HTTP 或 WebSocket 请求。提供商管理底层基础设施,包括同步、维护和扩展。
以太坊节点暴露标准的 JSON-RPC 接口。最常见的方法包括:
eth_blockNumber– 获取最新区块号eth_getBalance– 获取地址余额eth_call– 执行只读合约调用eth_sendRawTransaction– 广播已签名的交易eth_subscribe– 通过 WebSocket 订阅事件
API 服务通常在原始节点之上增加价值:
- 可靠性:冗余节点和故障转移
- 性能:负载均衡和缓存
- 数据深度:归档数据、跟踪方法
- 开发者工具:仪表板、分析和密钥管理
以太坊 API 服务与运行自己的节点
运行自己的以太坊节点可让您完全控制,但会带来巨大的运维开销。您需要配置硬件、同步区块链(可能需要数天)、监控正常运行时间并处理升级。对于大多数团队来说,这不是核心竞争力。
以太坊 API 服务减轻了这种复杂性。您无需承担 DevOps 负担即可获得可靠的端点。这对于以下情况尤其有价值:
- 需要快速行动的初创公司
- 基础设施专业知识有限的团队
- 流量变化且需要快速扩展的应用程序
然而,也有权衡。您依赖第三方提供可用性,并且可能需要为使用付费。对于有严格合规或数据主权要求的团队,专用节点可能更合适。
如何评估以太坊 API 提供商
比较以太坊 API 服务时,请考虑以下标准:
| 标准 | 检查内容 | 重要性 |
|---|---|---|
| 网络覆盖 | 主网、测试网(Sepolia、Holesky) | 您需要用于开发和生产的端点 |
| 传输支持 | HTTPS、WebSocket | WebSocket 是实时订阅所必需的 |
| 归档数据 | 历史状态的可用性 | 对索引器和分析至关重要 |
| 跟踪方法 | 支持 debug_traceTransaction、trace_block | 深度交易分析所需 |
| 速率限制 | 每秒请求数、每日配额 | 公共端点通常对生产环境限制过多 |
| 专用选项 | 隔离节点或共享基础设施 | 专用节点提供可预测的性能 |
| 定价模式 | 按量付费、订阅或固定费率 | 与您的预算和使用模式保持一致 |
| 开发者体验 | 文档、SDK、仪表板 | 更快的集成和更轻松的调试 |
例如,OnFinality 提供托管的以太坊 API 服务,包括公共、专用和归档选项。您可以在 RPC 定价 页面找到定价详情。
以太坊 API 服务:公共、托管与专用
以太坊 API 服务主要有三个层级:
公共端点
公共端点免费且对任何人开放。它们非常适合测试和低量开发。但是,它们有速率限制,不适合生产环境。OnFinality 在 https://eth.api.onfinality.io/public 提供公共以太坊端点,供实验使用。
托管 API 服务
托管服务提供可靠、可扩展的 API,而无需您运行节点。它们处理基础设施、监控和故障转移。这是生产 dApp 最常见的选择。您按使用量或订阅付费。
专用节点
专用节点让您独占访问一个节点实例。这提供了最高的性能和隔离性。它非常适合高吞吐量应用、索引器或需要自定义配置的团队。OnFinality 通过其专用节点服务提供专用以太坊节点。
如何连接到以太坊 API 服务
连接到以太坊 API 服务很简单。您通常会获得一个端点 URL 和一个 API 密钥(如果需要)。以下是一个使用 curl 调用 eth_blockNumber 的示例:
curl -X POST https://eth.api.onfinality.io/public \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
对于 WebSocket 订阅,您可以使用像 ethers.js 这样的库:
const { ethers } = require("ethers");
const provider = new ethers.WebSocketProvider("wss://eth.api.onfinality.io/public");
provider.on("block", (blockNumber) => {
console.log("New block:", blockNumber);
});
请记住在生产环境中将公共端点替换为您自己的 API 密钥或专用端点。
常见陷阱和故障排除
即使使用可靠的 API 服务,您也可能会遇到问题。以下是常见陷阱及解决方法:
- 速率限制:如果遇到速率限制,请考虑升级到付费计划或使用专用节点。
- 超时:长时间运行的查询(例如,大范围的
eth_getLogs)可能会超时。优化您的查询或使用归档数据。 - WebSocket 断开:确保您的客户端处理重连逻辑。
- 错误的链 ID:发送交易时,始终设置正确的链 ID(以太坊主网为 1)。
- Nonce 错误:使用
eth_getTransactionCount获取地址的正确 nonce。
有关更详细的故障排除,请参阅我们的 RPC 故障排除指南。
关键要点
- 以太坊 API 服务提供对以太坊数据的可靠访问,而无需运行自己的节点。
- 根据网络覆盖、传输支持、归档数据、跟踪方法和速率限制来评估提供商。
- 公共端点适合测试,但生产应用需要托管或专用服务。
- OnFinality 提供托管的以太坊 API 服务,包括公共、专用和归档选项。
- 始终使用正确的链 ID,并在客户端代码中处理 WebSocket 重连。
常见问题
以太坊 API 服务和 RPC 提供商有什么区别?
以太坊 API 服务本质上就是 RPC 提供商。它们都暴露 JSON-RPC 端点以与以太坊区块链交互。术语“API 服务”可能暗示额外的功能,如分析或数据索引,但核心是相同的。
我可以将公共以太坊端点用于生产吗?
公共端点有速率限制,不适合生产环境。它们仅适用于开发和测试。对于生产,请使用托管 API 服务或专用节点。
OnFinality 支持以太坊归档数据吗?
是的,OnFinality 为以太坊提供归档节点选项。您可以在以太坊网络页面和定价页面找到更多详细信息。
如何获取 OnFinality 以太坊 API 服务的 API 密钥?
您可以在 OnFinality 平台注册并从仪表板创建 API 密钥。该密钥用于验证对您的专用或托管端点的请求。
OnFinality 的公共以太坊端点是什么?
公共端点是 https://eth.api.onfinality.io/public。它用于测试和开发;对于生产,您应该使用带有 API 密钥的专用或托管端点。