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

什么是 TON 公共节点,何时应该使用它?

摘要

TON 公共节点是一个共享的 RPC 端点,允许你读取 TON 区块链数据并提交交易,而无需运行自己的节点。这是让钱包、脚本或原型与 TON 通信的最快方式,但共享端点存在速率限制、延迟波动,且没有运营保证。

本文解释了 TON RPC 与 EVM 链的区别、如何连接到公共端点、何时公共节点足够,以及何时应迁移到托管 RPC API 或专用节点以应对生产工作负载。

TON 公共节点是合适的起点吗?

TON 公共节点是一个共享的 RPC 端点,让你的应用程序无需运行自己的基础设施即可读取 TON 区块链并提交交易。它是大多数开发者的默认入口:复制一个 URL,发送请求,获得响应。无需同步、无需磁盘、无需维护服务器。

问题在于“公共”意味着共享。你是众多调用者之一,同时访问同一个端点,无法控制容量,没有服务级别协议,也无法保证你依赖的方法会一直可用。对于原型、脚本或正在测试的钱包来说,这没问题。但一旦真实用户依赖你的应用,它就会成为问题。

使用本文来判断你处于这条线的哪一侧,以及下一步该怎么做。

快速建议:公共节点、托管 RPC 还是专用节点?

你的情况合理的起点原因
学习 TON、测试钱包、运行一次性脚本公共节点零设置、无成本,对于低请求量足够
流量不可预测的原型或黑客松先用公共节点,然后使用托管 RPC API快速启动,然后在演示日之前消除速率限制风险
有真实用户、后端或机器人的 dApp托管 RPC API可预测的吞吐量、监控和出问题时的支持
高容量索引、分析或交易专用节点隔离的容量和对所查询节点的控制
需要稳定的测试环境TON 测试网 RPC独立的网络、独立的端点,无主网副作用

如果你只需要回答“我的代码能在 TON 上运行吗?”,公共节点是最快的路径。如果你需要回答“我的应用在负载下能保持运行吗?”,那么你已经超越了它。

TON RPC 与 EVM 链的区别

如果你来自以太坊、BNB Chain 或 Polygon,TON 会让你感到陌生。TON 不是 EVM 链,因此你不会调用 eth_getBalanceeth_call。相反,TON 暴露自己的基于 HTTP 的 API 接口,并且你处理账户、发送消息和读取状态的方式不同。

在选择端点时,有几个实际差异很重要:

  • 账户地址格式不同。 TON 使用自己的地址格式,同一个账户可以有多种表示形式。你的工具需要在比较或存储地址之前对其进行规范化。
  • 交易是消息驱动的。 你不能像在 EVM 链上那样简单地“发送交易”。你需要构建并发送消息,网络会生成相应的交易。
  • 方法名称是 TON 特有的。 不是 eth_* 方法,而是使用 TON 自己的端点来处理账户状态、区块、交易和消息提交。
  • 库很重要。 大多数开发者通过 TON SDK 而不是原始 HTTP 进行交互,因为 SDK 会为你处理地址解析、单元格序列化和消息构建。

因此,“我应该使用哪个 TON 公共节点?”实际上是两个问题:哪个端点,以及在其之上使用哪个客户端库。

连接到 TON 端点

OnFinality 通过 HTTP 暴露 TON RPC 端点。你可以在 TON 网络页面 上查看当前的端点详细信息。原始 JSON-RPC 风格调用的模式如下:

curl -s https://ton.api.onfinality.io/public \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getMasterchainInfo",
    "params": []
  }'

对于大多数应用程序代码,你不会直接调用端点。你会将 TON SDK 指向它。典型的配置如下所示:

import { TonClient } from "@ton/ton";

const client = new TonClient({
  endpoint: "https://ton.api.onfinality.io/public",
  apiKey: process.env.ONFINALITY_API_KEY, // required for managed plans
});

const masterchain = await client.getMasterchainInfo();
console.log(masterchain);

有两点需要注意。首先,确切的端点路径以及是否需要 API 密钥取决于你使用的计划,因此请对照 TON 网络页面 进行确认,而不是从旧教程中复制 URL。其次,将端点保存在环境变量中。硬编码会使在公共端点、托管端点和测试网端点之间切换变得痛苦。

切换到 TON 测试网

测试网是一个独立的网络,有自己的端点。当你想要测试消息流而不触及主网余额时,将客户端指向 TON 测试网 RPC 配置。将测试网和主网配置保存在单独的环境文件中,这样你就不会意外地从测试运行中提交主网消息。

公共 TON 节点的不足之处

公共端点并非设计上就有缺陷;它们只是不是为生产流量构建的。故障模式是可预测的:

  • 速率限制。 共享端点会限制调用者以保护资源池。即使你的平均负载很低,来自后端的突发流量也可能被拒绝。
  • 延迟波动。 你与其他所有人共享容量,因此响应时间会随整体需求而变化。
  • 方法缺失。 某些端点只暴露部分方法。如果你需要更深入的历史记录或更重的查询,公共节点可能无法提供。
  • 无支持路径。 当出现故障时,没有人可以升级处理。你只能独自调试。
  • 无可见性。 你无法判断速度变慢是你的代码还是端点的问题。

这些对于原型来说都不是致命的。但对于有用户的产品来说,所有这些都是致命的。

生产就绪检查清单

在任何端点上(包括公共端点)发布 TON 应用之前,请检查以下列表:

  1. 端点可配置。 它存在于环境变量中,而不是源代码中。
  2. 存在故障转移。 你至少有一个备用端点,或者一个为你处理故障转移的提供商。
  3. 重试有界。 你对瞬时错误进行带退避的重试,并在达到限制后停止。
  4. 你能看到错误。 日志记录将端点故障与应用程序错误分开捕获。
  5. 你了解你的请求概况。 大致每秒多少调用,以及哪些方法占主导。
  6. 你有测试网路径。 你可以在 TON 测试网 上重现问题,而不会危及主网资金。
  7. 你知道升级触发条件。 现在就决定什么指标(错误率、延迟或请求量)意味着“迁移到托管 RPC”。

如果你无法勾选大部分选项,那么公共节点仍然是合适的选择。如果你能勾选它们,而端点是薄弱环节,那么是时候迁移了。

何时迁移到托管 RPC 或专用节点

托管 RPC 和专用节点解决不同的问题,将它们分开考虑会有所帮助。

托管 RPC API 为你提供一个带有密钥、监控和支持路径的稳定端点。你不需要运行任何东西。这是大多数生产应用的正确选择:它消除了速率限制的意外,并在查询失败时有人可以沟通。OnFinality 通过 RPC API 服务 在多个网络上提供此服务,包括 TON。

专用节点 为你提供隔离的容量。你不与其他调用者共享吞吐量,这对于高容量索引、分析或具有严格延迟需求的工作负载很重要。当你的请求概况足够重,以至于共享容量成为瓶颈时,这是正确的选择。有关其工作原理,请参阅 专用节点

一个简单的决定方法:

  • 原型、脚本或低容量工具:公共节点。
  • 有用户和后端的应用:托管 RPC API。
  • 繁重、持续或延迟敏感的负载:专用节点。

你可以在 RPC 定价 页面上比较成本和吞吐量预期,并在 支持的 RPC 网络 上查看覆盖的网络。

调试 TON RPC 调用

当 TON 调用失败时,错误通常属于以下几类。在更改代码之前,将症状与可能的原因匹配。

症状可能原因首先检查
请求立即被拒绝速率限制或缺少 API 密钥你的计划以及端点是否需要密钥
账户状态为空或意外地址格式错误在查询前规范化地址
消息已提交但没有交易消息尚未处理轮询交易,而不是假设失败
负载下超时共享容量请求概况以及是否需要专用容量
本地正常,生产失败端点或密钥不同每个环境中的环境变量
调用之间结果不一致读取不同的端点每个环境固定一个端点

一个有用的习惯是在每个错误旁边记录端点 URL。一半的“TON RPC 坏了”的报告最终发现是两个环境指向了不同的端点。

节省时间的运维习惯

一些小的实践可以使从公共节点到生产的过渡更加顺利:

  • 按环境固定端点。 开发、预发布和生产环境应各自有一个明确命名的端点。
  • 分离读写路径。 读取通常可以容忍共享端点;写入通常应使用你最可靠的端点。
  • 关注错误率,而不仅仅是延迟。 一个拒绝 5% 调用的快速端点比一个接受所有调用的较慢端点更糟糕。
  • 保留逃生通道。 知道如果主端点降级你会切换到哪个 URL,并在需要之前测试该切换。
  • 记录你的方法。 列出你的应用实际调用的 TON 方法。这个列表是你在评估计划时提供给提供商的。

这些习惯现在成本很低,并且消除了以后扩展时的大部分痛苦。

关键要点

  • TON 公共节点是一个共享端点,用于读取 TON 数据和提交消息,而无需运行基础设施。
  • TON 不是 EVM 链,因此方法名称、地址处理和交易流程与以太坊风格的 RPC 不同。
  • 公共节点非常适合原型、脚本和低容量工具,但它们是共享的、有速率限制且无支持的。
  • 当你有真实用户时,迁移到托管 RPC API;当共享容量成为瓶颈时,迁移到专用节点。
  • 将端点保存在环境变量中,规划故障转移,并在发布前决定升级触发条件。
  • OnFinality 通过其 RPC API 服务专用节点 提供 TON RPC;有关详细信息,请参阅 RPC 定价支持的 RPC 网络

常见问题

什么是 TON 公共节点?

它是一个共享的 RPC 端点,允许你与 TON 区块链交互,而无需运行自己的节点。你向 URL 发送请求并接收响应,但你与其他用户共享容量,并且没有服务保证。

TON 公共节点是免费的吗?

公共端点通常可以免费使用,这就是它们在测试中受欢迎的原因。免费访问通常伴随着速率限制和无支持,因此不适合生产流量。

我可以在生产中使用 TON 公共节点吗?

可以,但不应该依赖它。共享端点会限制调用者,并且不提供故障转移或支持。对于有真实用户的应用,托管 RPC API 是更安全的选择。

TON 公共节点和专用节点有什么区别?

公共节点与其他调用者共享。专用节点为你的工作负载提供隔离的容量,这对于高容量或延迟敏感的应用很重要。

如何从 JavaScript 连接到 TON?

使用 TON SDK(如 @ton/ton)并将其指向一个端点。将端点和任何 API 密钥保存在环境变量中,以便你可以在公共、托管和测试网配置之间切换。

TON 测试网需要单独的端点吗?

是的。测试网是一个独立的网络,有自己的端点。请参阅 TON 测试网 RPC 页面以获取当前配置。

在哪里可以找到当前的 TON RPC 端点?

请查看 TON 网络页面 以获取适用于你计划的端点详细信息,而不是从旧教程中复制 URL。

何时应该从公共节点迁移?

当你有真实用户、后端或依赖一致响应的机器人时。如果端点错误或速率限制影响了你的应用,那么是时候迁移到托管 RPC 或专用节点了。

RPC 知识库

相关 RPC 内容

网络 RPCAjuna

Ajuna RPC 端点:链设置、连接选项和调试

Ajuna 是一个基于 Polkadot 的网络,专为游戏和链上应用工作负载而设计。本页面涵盖了开发者连接它所需的内容:链设置、如何将钱包或客户端指向 Ajuna RPC 端点,以及如何调试常见的连接故障。 如果您要从公共端点迁移到更可靠的生产环境,OnFinality 为支持的网络提供 RPC A...

网络 RPCBittensor

什么是 Bittensor 网络,如何连接它?

Bittensor 是一个去中心化的机器智能网络,其中独立的子网生产数字商品,如计算、推理和存储,贡献者赚取 TAO。本文解释了网络的架构、如何通过 RPC 端点连接,以及在 Bittensor 上构建时选择基础设施的注意事项。...

网络 RPCSolana

Solana Public RPC Endpoints

Solana public RPC endpoints are free, shared JSON-RPC gateways that let developers read network state, send transactions, and subscribe to updates wit...

区块链基础设施

Dedicated vs Shared Nodes: Performance Insights for Developers

Choosing between dedicated and shared RPC nodes impacts latency, rate limits, and reliability. Dedicated nodes provide exclusive resources, predictabl...

网络 RPCFantom

Fantom 端点:链设置、RPC 配置和调试

本页说明如何通过 RPC 端点连接到 Fantom Opera,包括链设置、公共和私有 RPC 选项以及常见调试步骤。它帮助开发者配置钱包、部署合约,并为生产工作负载选择合适的基础设施。...

网络 RPCOptimism

How do I connect to Optimism RPC and what should I consider when choosing an endpoint?

Optimism RPC endpoints allow applications to read and write data on OP Mainnet and OP Sepolia. This article covers network settings, JSON-RPC methods,...

永远不用担心基础设施

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

开始