Logo
新用户订阅 RPC,首月享 6.5 折优惠查看优惠
RPC Assistant

TON JSON-RPC:端点、方法及使用方法

摘要

TON JSON-RPC 是通往开放网络(The Open Network)的 JSON-RPC 2.0 接口,让您可以通过单个 HTTPS 端点查询账户状态、运行智能合约 get 方法以及发送交易。本文解释了端点结构、常用方法、身份验证,以及如何在公共、托管和专用 TON RPC 基础设施之间进行选择。

快速决策指南:哪种 TON RPC 设置适合您的应用?

在连接客户端之前,请决定哪种 TON RPC 访问模式符合您的工作负载。选择会影响延迟、速率限制以及您需要管理的基础设施量。

工作负载推荐访问方式原因
原型、黑客松、低流量机器人带 API 密钥的公共端点免费、快速启动,但有速率限制
生产环境 dApp、钱包或索引器托管 RPC 服务可靠的端点、扩展和支持
高吞吐量、自定义查询或合规要求专用节点完全控制、无共享速率限制、自定义配置

如果您需要具有可预测性能的托管端点,OnFinality 提供 TON RPC 端点 和 TON 测试网 RPC,支持 HTTPS JSON-RPC。对于生产工作负载,托管服务可消除运行自己节点的运维负担。有关详细信息,请参阅 RPC 定价。

什么是 TON JSON-RPC?

TON JSON-RPC 是通往开放网络(TON)的 JSON-RPC 2.0 接口,TON 是一个非 EVM 的第一层区块链。与以太坊的 JSON-RPC 不同,TON 的接口不兼容 EVM,并使用自己的一套方法。它提供了一个单一的 HTTPS 端点,您可以在其中调用方法读取区块链数据、运行智能合约 get 方法以及发送交易。

TON 节点内部使用二进制 ADNL 协议进行通信,该协议无法从 Web 应用程序直接访问。TON JSON-RPC 充当桥梁,将标准 HTTP JSON-RPC 请求转换为节点调用,并以熟悉的格式返回结果。

TON JSON-RPC 端点和身份验证

主要的 TON JSON-RPC 端点由 TON Center 提供:

  • 主网:https://toncenter.com/api/v2/jsonRPC
  • 测试网:https://testnet.toncenter.com/api/v2/jsonRPC

所有 API 方法都可通过此单一端点使用。您通过在 X-API-Key 标头中发送 API 密钥进行身份验证。没有密钥时,请求限制为每秒 1 次。有密钥时,限制更高,但仍适用。

示例请求:

curl -X POST "https://toncenter.com/api/v2/jsonRPC" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "getMasterchainInfo",
    "params": {}
  }'

响应:

{
  "ok": true,
  "result": {
    "last": {
      "workchain": -1,
      "shard": "-9223372036854775808",
      "seqno": 123456,
      "root_hash": "...",
      "file_hash": "..."
    },
    "state_root_hash": "...",
    "init": {
      "workchain": -1,
      "shard": "-9223372036854775808",
      "seqno": 0,
      "root_hash": "...",
      "file_hash": "..."
    }
  },
  "@extra": "...",
  "jsonrpc": "2.0",
  "id": "1"
}

常用 TON JSON-RPC 方法

TON JSON-RPC 公开了一组映射到 TON Center API v2 的方法。以下是最常用的方法:

方法描述
getMasterchainInfo返回最新的主链区块信息
getAddressBalance返回地址的余额(以 nanoTON 为单位)
getAddressInformation返回账户状态、余额、代码和数据
getWalletInformation返回钱包特定信息
runGetMethod在智能合约上执行 GET 方法
sendBoc向网络发送序列化消息(cell 包)
getTransactions返回地址的交易历史

有关完整列表,请参阅官方 TON 文档。

使用 JavaScript 调用 TON JSON-RPC

您可以使用任何语言调用 TON JSON-RPC。以下是使用 fetch 的 JavaScript 示例:

const endpoint = "https://toncenter.com/api/v2/jsonRPC";
const apiKey = "YOUR_API_KEY";

async function callTonRpc(method, params = {}) {
  const response = await fetch(endpoint, {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "X-API-Key": apiKey
    },
    body: JSON.stringify({
      jsonrpc: "2.0",
      id: "1",
      method,
      params
    })
  });
  return response.json();
}

// 获取地址余额
const balance = await callTonRpc("getAddressBalance", {
  address: "EQD..."
});
console.log(balance.result);

TON JSON-RPC 与 REST API 对比

TON Center 同时提供 REST 和 JSON-RPC 端点。REST API 为每个方法使用单独的 URL(例如 /getAddressBalance),而 JSON-RPC 使用带有 method 字段的单一端点。当您想要批量调用多个请求或更喜欢一致的接口时,JSON-RPC 非常有用。

公共、托管与专用 TON RPC 对比

使用 TON JSON-RPC 时,您有三个主要选项:

  1. 公共端点 – 免费但有速率限制(无密钥时 1 RPS)。适合测试和低流量应用。
  2. 托管 RPC 服务 – 提供具有更高速率限制、监控和支持的可靠端点。OnFinality 提供 TON RPC 作为托管服务。
  3. 专用节点 – 您拥有自己的 TON 节点,完全控制配置,无共享速率限制。这非常适合高吞吐量或自定义用例。

常见 TON JSON-RPC 问题排查

  • 401 Unauthorized:检查您的 API 密钥并确保其有效。
  • 403 Forbidden:您的 API 密钥可能没有请求方法的权限。
  • 429 Too Many Requests:您已超出速率限制。请等待或升级您的计划。
  • 422 Unprocessable Entity:您的请求参数无效。请检查方法签名。
  • 500 Internal Server Error:节点可能遇到问题。请稍后重试。
  • 504 Gateway Timeout:请求耗时过长。对于繁重查询,请考虑使用专用节点。

关键要点

  • TON JSON-RPC 是通往开放网络的 JSON-RPC 2.0 接口,使用单一 HTTPS 端点。
  • 通过 X-API-Key 标头进行身份验证;没有密钥时,限制为 1 RPS。
  • 常用方法包括 getMasterchainInfo、getAddressBalance 和 runGetMethod。
  • 根据您的工作负载和可靠性需求选择公共、托管或专用 RPC。
  • 对于生产环境,请考虑使用托管服务(如 OnFinality 的 TON RPC)以避免速率限制和运维开销。

常见问题解答

TON JSON-RPC 是否与以太坊 JSON-RPC 兼容? 不。TON 是非 EVM 区块链,因此其 JSON-RPC 方法不同。您不能使用 eth_getBalance 或其他 EVM 方法。

如何获取 TON API 密钥? 您可以通过在 TON Center 注册您的应用程序来获取密钥。像 OnFinality 这样的托管提供商也提供带有其端点的 API 密钥。

我可以将 WebSocket 与 TON JSON-RPC 一起使用吗? TON JSON-RPC 基于 HTTP。对于实时更新,TON 提供了单独的流式 API,支持 WebSocket。

TON JSON-RPC 的速率限制是多少? 没有 API 密钥时,限制为每秒 1 个请求。有密钥时,限制更高,但因提供商而异。

如何使用 TON JSON-RPC 发送交易? 您需要将交易序列化为 cell 包,并使用 sendBoc 方法。这比 EVM 交易更复杂。

有关更多详细信息,请探索 支持的 RPC 网络 和 RPC 定价。

RPC 知识库

相关 RPC 内容

网络 RPCAsset Hub

Kusama 迁移:发生了什么变化以及如何更新您的 RPC 端点

Kusama 迁移将核心功能从中继链转移到 Asset Hub,改变了开发者连接网络的方式。本指南解释了发生了什么变化、如何更新您的 RPC 端点,以及如何避免常见的迁移陷阱。...

网络 RPCSolana

在生产环境中,你实际需要哪些 Solana RPC 方法?

Solana 提供了一套 JSON-RPC 接口,包含大量用于读取账户、提交交易和订阅实时更新的方法。你需要启用哪些方法取决于你的工作负载:钱包需要 blockhash 和 sendTransaction,索引器需要 getProgramAccounts 和 getSignaturesForAddr...

RPC 提供商选择Solana

Solana RPC 提供商应提供哪些高级分析 API?

Solana 上的高级分析需要能够处理高吞吐量数据提取、历史查询和实时流而不会降低应用程序性能的 RPC 基础设施。本文概述了评估 Solana RPC 提供商时需要考察的关键 API 能力,从 getSignaturesForAddress 和 getTransaction 到 WebSocket...

网络 RPCPolygon

Polygon区块链API:方法、SDK和最佳实践

Polygon区块链API包括用于直接节点交互的JSON-RPC端点、用于支付的REST API(如Open Money Stack)以及客户端SDK(如Matic.js和ethers.js)。选择合适的API取决于你的用例——是需要底层链访问、稳定币支付还是智能合约交互。本文涵盖了可用的API类型...

网络 RPCArbitrum

什么是 Arbitrum RPC 端点,如何使用它?

Arbitrum RPC 端点允许钱包和 dApp 在 Arbitrum One、Arbitrum Nova 和 Arbitrum Sepolia 上读写数据。本指南涵盖官方公共端点、链设置、如何使用 curl 或 ethers 连接,以及如何为生产环境选择可靠的提供商。...

网络 RPCEth Sepolia

什么是以太坊公共 RPC,以及何时应该使用它?

以太坊公共 RPC 是一个共享的、无需认证的 JSON-RPC 端点,允许任何开发者读取以太坊数据并广播交易,而无需运行节点。它非常适合原型设计、钱包配置和低流量脚本,但共享容量和速率限制使其不适合需要稳定吞吐量、归档数据或 WebSocket 订阅的生产工作负载。 本页解释了如何连接到以太坊公共 ...

永远不用担心基础设施

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

开始