摘要
TON全节点存储完整的区块链状态并验证The Open Network的交易。运行一个全节点可以让您直接访问TON数据,无需中间人,但需要大量的硬件、存储和持续的维护。本文解释了TON全节点的功能、运行与租用基础设施的权衡,以及如何决定哪种方法适合您的项目。
快速决策指南:运行自己的TON节点还是使用托管基础设施?
在深入技术细节之前,了解运行TON全节点是否适合您的项目会有所帮助。答案取决于您的工作负载、团队资源和可靠性要求。
如果以下情况,请考虑运行自己的TON全节点:
- 您需要低延迟访问TON数据,用于高频交易或实时分析。
- 您希望完全控制节点的配置和数据保留。
- 您拥有处理升级、监控和事件响应的DevOps专业知识。
- 您的应用程序产生大量读取流量,可能超出共享RPC速率限制。
如果以下情况,请考虑使用像OnFinality这样的托管RPC服务:
- 您希望专注于产品而不是节点操作。
- 您需要高可用性,而无需运行冗余节点集群的开销。
- 您的流量是尖峰或不可预测的,您希望无需配置硬件即可扩展。
- 您更愿意按使用量付费,而不是承诺固定的基础设施成本。
如果您仍然不确定,请先使用托管的RPC端点验证您的应用程序,然后在了解实际负载后重新考虑决策。OnFinality提供TOn RPC端点和专用节点,可以作为可靠的基线。
什么是TON全节点?
TON全节点是维护The Open Network区块链完整副本的服务器。它验证所有交易和区块,存储完整状态,并参与网络的gossip协议。与仅下载区块头并向全节点请求特定数据的轻客户端不同,全节点独立验证整个历史。
TON的架构是分片的,这意味着网络被分成多个分片链以并行处理交易。TON中的全节点通常跟踪主链和一个或多个分片链。主链协调验证者并存储网络配置,而分片链处理用户交易。这种设计使TON能够水平扩展,但也意味着运行全节点需要仔细配置以跟上您想要监控的所有链。
为什么运行TON全节点?
开发人员或基础设施团队可能选择运行TON全节点有几个原因:
- 数据主权:您可以直接访问原始区块链数据,而无需依赖第三方API。
- 自定义查询:您可以对完整状态运行复杂查询,这在公共RPC服务上可能受到限制或昂贵。
- 性能:对于延迟敏感的应用程序,本地节点消除了到远程RPC提供商的网络往返。
- 学习:运行节点是理解TON内部机制的绝佳方式,可以为智能合约开发和调试提供信息。
然而,这些好处伴随着实际成本。TON全节点需要大量的硬件、持续的维护和仔细的监控。对于许多团队来说,运营负担超过了优势,尤其是当托管服务可以提供相当的性能而开销更少时。
硬件和存储要求
运行TON全节点并非易事。根据社区指导和网络增长,您应该计划以下最低规格:
| 资源 | 最低建议 | 备注 |
|---|---|---|
| CPU | 8核以上 | TON的验证和区块处理是CPU密集型的。 |
| 内存 | 32 GB | 更多内存有助于缓存并减少磁盘I/O。 |
| 存储 | 1 TB以上SSD | 区块链随时间增长;请规划扩展。 |
| 网络 | 100 Mbps以上 | 您需要同步区块并向对等方提供数据。 |
这些是粗略估计。实际要求取决于您跟踪的分片链数量以及查询模式。您应该监控磁盘使用情况,并在磁盘满之前升级存储。
设置TON全节点
TON提供官方节点软件,但设置过程很复杂。以下是步骤的高级概述:
- 安装依赖:您需要最新的Linux发行版、构建工具和TON源代码。
- 构建节点:从源代码编译
ton二进制文件,或者如果可用,使用预构建的包。 - 配置节点:创建配置文件,指定要跟随的网络(主网、测试网)和分片链。
- 同步区块链:初始同步可能需要几天,具体取决于您的硬件和网络速度。
- 运行节点:使用像
systemd这样的进程管理器来保持节点运行。 - 监控:设置日志和警报,以应对同步滞后或磁盘空间等常见问题。
以下是TON节点的基本systemd服务文件示例:
[Unit]
Description=TON Full Node
After=network.target
[Service]
User=ton
ExecStart=/usr/local/bin/ton-node --config /etc/ton/ton-global.config.json
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
这是一个简化的示例。实际命令和配置将取决于您使用的特定节点软件。请始终参考官方TON文档以获取最新说明。
常见陷阱及如何避免
运行TON全节点会带来几个挑战,即使是经验丰富的开发人员也可能遇到:
- 同步问题:如果您的节点落后于网络,可能需要很长时间才能赶上。定期监控同步状态,并确保您的硬件能够跟上。
- 存储耗尽:区块链持续增长。设置磁盘使用警报,并计划添加存储或尽可能修剪旧数据。
- 网络连接:TON节点需要维护与对等方的连接。防火墙或NAT配置可能导致连接问题。
- 软件更新:TON协议不断发展,您需要更新节点软件以保持兼容。订阅发布公告,并先在测试网上测试升级。
托管RPC与运行自己的节点
对于许多生产应用程序,使用托管RPC服务比运行自己的全节点更实用。以下比较可帮助您决定:
| 因素 | 运行自己的节点 | 托管RPC(例如OnFinality) |
|---|---|---|
| 设置时间 | 数天到数周 | 几分钟 |
| 维护 | 您处理升级、监控和修复 | 提供商处理 |
| 成本 | 硬件+电力+DevOps时间 | 基于使用量的订阅 |
| 可扩展性 | 手动容量规划 | 按需扩展 |
| 可靠性 | 取决于您的设置 | 提供商的SLA和冗余 |
| 控制 | 完全控制 | 限于提供商的API |
像OnFinality这样的托管服务提供TON RPC端点,支持HTTP和WebSocket,开箱即用。如果您需要私有、隔离的实例而无需运营开销,他们还提供专用节点。
如何连接到TON全节点或RPC端点
一旦您运行了TON节点(或使用托管端点),您可以使用TON的HTTP API与之交互。以下是使用curl获取最新主链区块的简单示例:
curl -X POST https://ton.access.onfinality.io/api/v1/ton/mainnet -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"ton.getMasterchainInfo","params":[]}'
如果您运行自己的节点,请将URL替换为您自己的节点端点。响应将包括最新区块号、哈希和其他链信息。
对于JavaScript开发人员,您可以使用像ton或ton-core这样的库与节点交互。以下是使用ton npm包的简单示例:
import { TonClient } from "ton";
const client = new TonClient({
endpoint: "https://ton.access.onfinality.io/api/v1/ton/mainnet",
});
async function getLatestBlock() {
const masterchainInfo = await client.getMasterchainInfo();
console.log(masterchainInfo);
}
getLatestBlock();
此代码连接到TON端点并获取最新的主链信息。然后您可以使用客户端查询账户、发送交易等。
监控和维护您的节点
如果您决定运行自己的节点,您需要设置监控以确保其保持健康。要跟踪的关键指标包括:
- 同步状态:您的节点落后于网络多少?
- CPU和内存使用情况:资源是否耗尽?
- 磁盘空间:存储是否不足?
- 网络流量:您是否有效地接收和发送区块?
您可以使用Prometheus和Grafana等工具来收集和可视化这些指标。设置警报以在出现问题时通知您,例如当同步滞后超过阈值或磁盘使用量超过警告级别时。
关键要点
- TON全节点让您完全控制并直接访问区块链数据,但它需要大量的硬件和维护。
- 对于许多应用程序,托管RPC服务更具成本效益和可靠性,尤其是在您缺乏DevOps资源的情况下。
- 如果您运行自己的节点,请规划存储增长,监控同步状态,并保持软件更新。
- OnFinality提供TON RPC端点和专用节点以支持您的基础设施需求。
常见问题解答
TON全节点和验证者有什么区别?
全节点存储并验证区块链,但不产生新区块。验证者是参与共识并因提议和验证区块而获得奖励的全节点。运行验证者需要质押TON并承担额外责任。
同步TON全节点需要多长时间?
初始同步可能需要几个小时到几天,具体取决于您的硬件、网络速度以及您跟踪的分片链数量。使用快速的SSD和良好的互联网连接将加快该过程。
我可以在云服务器上运行TON全节点吗?
是的,您可以在云VPS上运行TON节点,但您需要确保实例具有足够的CPU、内存和存储。云提供商通常对高性能SSD收取额外费用,因此请将其计入成本分析。
运行TON全节点的成本是多少?
成本因硬件和托管而异。具有推荐规格的专用服务器每月可能花费100-300美元,如果自托管则加上电费。托管RPC服务提供基于使用量的可预测定价,对于较小的项目可能更经济。
如何在共享RPC端点和专用节点之间选择?
共享端点适用于开发和低流量应用程序。如果您需要一致的性能、更高的速率限制或自定义配置,专用节点是更好的选择。OnFinality提供这两种选项,因此您可以从共享端点开始,随着需求增长而升级。