Logo
RPC Assistant

Ethereum API: 方法、端点及如何开始构建

摘要

以太坊API允许您的应用程序通过JSON-RPC与以太坊区块链交互。本文介绍常见方法、如何连接端点以及为生产应用选择RPC提供商的准则。

以太坊API决策清单

在开始使用以太坊API进行构建之前,请考虑以下决策点:

标准检查项重要性
API方法覆盖范围您的用例只需要标准JSON-RPC还是也需要自定义端点(例如debug、trace)?某些应用需要存档数据或trace调用。
端点类型公共、免费层还是专用私有端点?公共端点有速率限制且可靠性较低。
网络支持主网、测试网(Sepolia、Holesky)或两者?测试网对于预发布环境至关重要。
WebSocket支持提供商是否提供WSS用于实时订阅?事件监听所需。
存档数据是否需要访问历史状态?需要存档节点。
速率限制每秒请求数和每日调用限制是多少?生产应用需要可预测的限制。
延迟和正常运行时间检查历史性能和SLA(如有承诺)。高延迟可能破坏用户体验。
定价模式按量付费、月度订阅还是定制?成本随使用量增加。

什么是以太坊API?

以太坊API是一组JSON-RPC方法,允许应用程序与以太坊节点通信。每个以太坊客户端(例如Geth、Erigon、Nethermind)都通过HTTP、WebSocket或IPC暴露这些方法。该API支持读取区块链数据(余额、交易、日志)、写入状态(发送交易)以及与智能合约交互。

常见以太坊API方法

以下是最常用的JSON-RPC方法:

方法参数描述
eth_blockNumber返回最新区块号。
eth_getBalanceaddress, block返回地址的余额。
eth_getTransactionCountaddress, block返回地址的nonce。
eth_calltransaction, block执行只读合约调用。
eth_sendRawTransactionsigned transaction提交已签名的交易。
eth_getLogsfilter object检索匹配过滤器的事件日志。
eth_gasPrice返回当前gas价格。
eth_estimateGastransaction估算交易的gas。

完整列表请参阅官方以太坊JSON-RPC规范

如何连接以太坊API

您需要一个端点URL。以下是使用curl从公共端点获取最新区块号的示例(替换为您的提供商URL):

curl -X POST -H "Content-Type: application/json" \
  --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' \
  https://eth-mainnet.g.alchemy.com/v2/YOUR_API_KEY

使用 JavaScript 库 viem

import { createPublicClient, http } from 'viem';
import { mainnet } from 'viem/chains';

const client = createPublicClient({
  chain: mainnet,
  transport: http('https://eth-mainnet.g.alchemy.com/v2/YOUR_API_KEY'),
});

const blockNumber = await client.getBlockNumber();
console.log('Block number:', blockNumber);

公共端点与私有端点

  • 公共端点(免费、速率限制)适用于测试和低用量场景。
  • 来自提供商的免费层端点比公共端点提供更高的限制,但仍然有上限。
  • 专用节点提供独占访问、明确的速率限制和完全控制权。它们是生产环境的理想选择。

对于生产应用,建议使用专用节点或性能一致的托管RPC服务。OnFinality提供跨多条链(包括以太坊)的共享和专用节点基础设施。

如何选择以太坊API提供商

在评估提供商时,请考虑:

  • 网络支持:提供商是否支持以太坊主网和您所需的测试网(Sepolia、Holesky)?
  • 方法覆盖范围:一些提供商会限制debug或trace方法。如果您需要存档数据,请确认存档节点的可用性。
  • WebSocket (WSS) 支持:对于实时订阅(例如待处理交易、新区块)至关重要。
  • 定价:比较不同提供商的RPC定价。寻找透明且可预测的费用。
  • 正常运行时间和延迟:检查历史状态。虽然没有一个提供商能保证100%的正常运行时间,但请选择具有良好记录的提供商。
  • 开发者体验:寻求易于设置的API密钥、仪表板和文档。

深入了解请参阅我们的选择RPC提供商指南

常见陷阱与故障排除

  • 速率限制:如果遇到 429 Too Many Requests,考虑升级计划或添加负载均衡。
  • Nonce错误:发送交易时,确保使用正确的nonce(请参阅我们的nonce指南)。
  • Gas估算失败:发送前使用 eth_estimateGas。对于复杂合约,增加gas限制。
  • 连接超时:对于高流量应用,使用WebSocket而非HTTP以保持持久连接。
  • 存档节点缺失:如果在查询历史状态时遇到错误,切换到存档端点。

关键要点

  • 以太坊API是标准的JSON-RPC。任何兼容的客户端都可以跨提供商工作。
  • 根据工作负载选择端点:测试用公共端点,小型应用用免费层,生产用专用。
  • 在主网部署前始终先在测试网上测试。
  • 监控API使用情况和延迟以避免意外。
  • OnFinality提供灵活的以太坊RPC端点计划。查看支持的网络列表和定价以开始使用。

常见问题

问:以太坊API和RPC端点有什么区别? 答:以太坊API指的是JSON-RPC方法。RPC端点是发送请求的URL。它们经常可以互换使用。

问:我可以在主网和测试网上使用同一个API密钥吗? 答:大多数提供商会为每个网络提供单独的端点,但使用相同的API密钥。有些要求您创建单独的项目。

问:我需要为以太坊使用专用节点吗? 答:不一定。对于低流量应用,托管服务的共享端点可能就足够了。对于高吞吐量、低延迟或自定义配置,专用节点更好。

问:如何获取存档数据? 答:选择明确提供存档端点的提供商。OnFinality可按请求提供存档节点访问。

问:使用以太坊API的最佳库是什么? 答:流行的选项包括 ethers.jsweb3.jsviem。选择取决于您的语言和偏好。它们都抽象化了JSON-RPC调用。

RPC 知识库

相关 RPC 内容

Rpc Provider Selection

Sui RPC 节点:端点设置、提供商选择与最佳实践

Sui RPC 节点是一个 API 端点,允许您的应用程序在不运行自己的全节点的情况下读取和写入 Sui 区块链。本文介绍如何连接到 Sui RPC 端点、选择提供商时需要注意的事项,以及生产环境中应避免的常见陷阱。...

Blockchain Infrastructure

什么是区块链API服务以及如何选择?

区块链API服务让开发者无需运行自己的节点即可与区块链网络交互。它们主要有三种形式:RPC(用于发送交易和查询状态)、REST(用于结构化数据如余额和交易历史)和WebSocket(用于实时事件)。选择合适的提供商取决于工作负载类型、延迟需求和网络覆盖。本文解释了每种类型、关键评估标准以及如何将服务...

Network Rpc

什么是 Moonbeam RPC,如何使用?

# 什么是 Moonbeam RPC,如何使用? Moonbeam 是 Polkadot 网络上一条兼容以太坊的智能合约平行链。Moonbeam RPC(远程过程调用)端点允许钱包、dApp 和其他 Web3 应用通过发送 JSON-RPC 请求与 Moonbeam 区块链交互。本指南介绍 Moon...

Network Rpc

什么是 Gnosis Chain RPC,如何选择合适的端点?

Gnosis Chain RPC 端点允许开发者通过 JSON-RPC 调用与 Gnosis Chain 网络交互。本文介绍了链设置、如何评估提供商以及在生产 dApp 中选择基础设施时应避免的常见陷阱。...

Testnet Rpc

什么是 Sui 测试网 RPC,如何使用?

# Sui 测试网 RPC:开发者指南 Sui 测试网 RPC 端点允许开发者在不运行自己节点的情况下与 Sui 区块链测试网交互。本指南涵盖可用的端点、连接方式以及测试 dApp 的最佳实践。无论您是首次在 Sui 上构建,还是从主网迁移,使用像 OnFinality 这样可靠的测试网 RPC 提...

Network Rpc

什么是 HydraDX,如何通过 RPC 连接到它?

# 什么是 HydraDX,如何通过 RPC 连接到它? HydraDX(现已更名为 Hydration)是一个构建在 Polkadot 上的下一代 DeFi 协议,作为平行链运行。其旗舰产品是 Omnipool,一种创新的自动做市商(AMM),将所有资产整合到一个单一交易池中,从而实现资本高效的兑...

永远不用担心基础设施

OnFinality 消除了 DevOps 的繁重工作,让您能够更聪明、更快地构建。

开始