跳到主要内容

运行全节点

要安装和管理您自己的节点,请使用TON基金会开发的MyTonCtrl开源工具。大多数TON节点都通过MyTonCtrl进行了可靠和测试。

MyTonCtrl是一个控制台应用程序,它是fift、lite-client和validator-engine-console的方便包装器。它专门开发用于简化在Linux操作系统上的钱包、域和验证者管理任务。

我们正在积极寻求关于安装过程的反馈。如果您有任何问题或建议,请联系我们

必要条件

我们强烈建议使用支持的操作系统安装MyTonCtrl:

  • Ubuntu 20.04
  • Ubuntu 22.04
  • Debian 11

请使用具有sudo权限的非root用户来安装和运行MyTonCtrl。

硬件要求

这些要求适用于带验证者的全节点。如果您想运行没有验证者的全节点(例如liteserver),您可以使用较低配置的机器。

  • 16核CPU
  • 64 GB RAM
  • 1TB NVME SSD 或者 预置64+k IOPS存储
  • 1 Gbit/s 网络连接
  • 固定公网IP地址
  • 高峰期每月16TB流量

您需要一台具有固定IP地址高带宽网络连接的机器来运行TON区块链全节点。

通常,您需要在数据中心使用至少1 Gbit/s的连接的功能强大的服务器,以可靠地适应高峰负载(预计平均负载约为100 Mbit/s)。

推荐供应商

TON基金会推荐以下供应商运行验证者:

AWS

  • 实例类型: m5.4xlarge
  • CPU: 16 vCPUs
  • RAM: 64 GB
  • 存储: 1 TB NVMe SSD
  • 网络: 高达10 Gbps
  • 公网IP: 关联一个弹性IP以获得固定IP地址。
  • 流量: 每月16 TB

GCP (谷歌云平台)

  • 机器类型: n2-standard-16
  • CPU: 16 vCPUs
  • RAM: 64 GB
  • 存储: 1 TB NVMe SSD持久性磁盘
  • 网络: 16 Gbps
  • 公网IP: 预留一个静态外部IP地址。
  • 流量: 每月16 TB

阿里巴巴云

  • 实例类型: ecs.g6.4xlarge
  • CPU: 16 vCPUs
  • RAM: 64 GB
  • 存储: 1 TB NVMe SSD磁盘
  • 网络: 高达10 Gbps
  • 公网IP: 绑定一个弹性IP以获得固定IP地址。
  • 流量: 每月16 TB

腾讯云

  • 实例类型: M5.4XLARGE
  • CPU: 16 vCPUs
  • RAM: 64 GB
  • 存储: 1 TB NVMe SSD云磁盘
  • 网络: 高达10 Gbps
  • 公网IP: 关联一个弹性IP以获得固定IP地址。
  • 流量: 每月16 TB

Vultr

  • 实例类型: 裸金属 Intel E-2388G

  • CPU: `8

    核心 / 16 线程`

  • RAM: 128 GB

  • 存储: 1.92TB NVMe SSD

  • 网络: 10 Gbps

  • 公网IP: 实例包含固定IP地址。

  • 流量: 每月16 TB

DigitalOcean

  • 实例类型: 通用型高级 Intel
  • CPU: 16 vCPUs
  • RAM: 64 GB
  • 存储: 1TB NVMe SSD
  • 网络: 10 Gbps
  • 公网IP: 实例包含固定IP地址。
  • 流量: 每月16 TB

Latitude

  • 实例类型: c3.medium.x86
  • CPU: 16 核心 / 32 线程
  • RAM: 128 GB
  • 存储: 1.9TB NVMe SSD
  • 网络: 10 Gbps
  • 公网IP: 实例包含固定IP地址。
  • 流量: 每月16 TB
信息

注意: 价格、配置和可用性可能会有所变化。在做出任何决定之前,建议始终检查相应云提供商的官方文档和定价页面。

如何运行节点?(视频)

请查看此视频逐步教程,以快速开始:

逐步指导

必要条件

  1. 以具有sudo权限的非root用户身份登录您的服务器。

  2. 如果您没有非root用户,请以root身份登录并创建一个:

sudo adduser <username>
  1. 将您的用户添加到sudo组:
sudo usermod -aG sudo <username>
  1. 切换到您的非root用户:
su - <username>

安装MyTonCtrl

从具有sudo权限的非root用户帐户下载并运行安装脚本。选择您的Linux发行版:

wget https://raw.githubusercontent.com/ton-blockchain/mytonctrl/master/scripts/install.sh
sudo bash install.sh -m full -d
  • -m full - 全节点安装模式。
  • -d - mytonctrl 将下载最新区块链状态的转储。 这将减少同步时间数倍。
  • -c <path> - 如果您想使用非公共liteservers进行同步。(不是必需的)

运行mytonctrl

  1. 从第1步中用于安装的本地用户账户运行MyTonCtrl控制台:

    sudo mytonctrl
  2. 使用status命令检查MyTonCtrl状态:

    status

以下状态应该显示:

  • mytoncore状态:应为绿色。
  • 本地验证者状态:也应为绿色。
  • 本地验证者未同步:最初显示一个大数字。一旦新创建的验证者与其他验证者连接,数字将在250k左右。随着同步的进行,这个数字会减少。当它降至20以下时,验证者已同步。

status命令输出的示例:

status

确保状态输出相同

对于所有类型的节点,Local Validator status部分应该显示。 如果没有显示,请查看故障排除部分检查节点日志

等到Local validator out of sync变为少于20秒。

成为验证者

查看钱包列表

使用wl命令在MyTonCtrl控制台中查看可用钱包的列表:

wl

在安装mytonctrl期间,将创建validator_wallet_001钱包:

wallet list

激活钱包

  1. 向钱包发送必要数量的coins并激活它。

最近(在2023年底),大致数字为最低质押代币约340K TON,最高约1M TON

查看tonscan.com以了解所需coins数量。

阅读更多关于如何计算最大和最小质押代币

  1. 使用vas命令显示转账历史:
vas
  1. 使用aw命令激活钱包
aw [wallet name]

account history

您的验证者现已准备就绪

mytoncore 将自动加入选举。它将钱包余额分为两部分,并使用它们作为质押代币参加选举。您也可以手动设置质押代币大小:

set stake 50000

set stake 50000 — 这将质押代币大小设置为50k coins。如果质押代币被接受并且我们的节点成为验证者,那么质押代币只能在第二次选举中提取(根据选民的规则)。

setting stake

启用Liteserver模式

在全节点中激活端点时,节点将承担Liteserver的角色。这种节点类型可以处理并响应来自轻客户端的请求,允许与TON区块链无缝互动。

硬件要求

验证者相比,liteserver模式需要较少的资源。然而,仍建议使用功能强大的机器运行liteserver。

  • 至少16核CPU
  • 至少64 GB RAM
  • 至少1TB GB NVMe SSD 或者 预置32+k IOPS存储
  • 1 Gbit/s网络连接
  • 高峰期每月16 TB流量
  • 固定公网IP地址

推荐供应商

请随意使用推荐供应商部分中列出的云提供商。

Hetzner和OVH被禁止运行验证者,但您可以使用它们运行liteserver:

  • Hetzner:EX101, AX102
  • OVH:RISE-4

安装liteserver

  1. 完成前面的步骤以安装MyTonCtrl

  2. 创建配置文件

MyTonCtrl> installer clcf

本地配置文件已创建:/usr/bin/ton/local.config.json
  1. 这个文件将帮助您连接到您的liteserver。将位于指定路径的配置文件复制到您的目录以保存它。
cp /usr/bin/ton/local.config.json ~/config.json
  1. 在您的本地机器上创建一个空的config.json文件。
  1. 将控制台中的内容复制到您本地机器的config.json文件。
cat ~/config.json

检查防火墙设置

首先,验证您config.json文件中指定的Liteserver端口。这个端口会随着每次新安装MyTonCtrl而改变。它位于port字段:

{
...
"liteservers": [
{
"ip": 1605600994,
"port": LITESERVER_PORT
...
}
]
}

如果您使用的是云提供商,您需要在防火墙设置中打开此端口。例如,如果您使用的是AWS,您需要在安全组中打开端口。

以下是在裸机服务器防火墙中打开端口的示例。

在防火墙中打开端口

我们将使用ufw实用程序(速查表)。您可以使用您喜欢的一个。

  1. 如果未安装ufw,请安装:
sudo apt update
sudo apt install ufw
  1. 允许ssh连接:
sudo ufw allow ssh
  1. 允许config.json文件中指定的端口:
sudo ufw allow <port>
  1. 检查防火墙状态。运行此命令后,您可以通过检查UFW状态来验证规则是否已成功添加:
sudo ufw status
  1. 启用防火墙:
sudo ufw enable

这样,您就可以在服务器的防火墙设置中打开端口。

与Liteserver互动

  1. 在您的机器上创建一个空项目,并将config.js粘贴到项目目录中。

  2. 安装库。

npm i --save ton-core ton-lite-client
  1. 初始化客户端并请求主链信息以确保liteserver正在运行。

将项目类型更改为module在您的package.json文件:

import { LiteSingleEngine } from 'ton-lite-client/dist/engines/single.js'
import { LiteRoundRobinEngine } from 'ton-lite-client/dist/engines/roundRobin.js'
import { LiteClient } from 'ton-lite-client/dist/client.js'
import config from './config.json' assert {type: 'json'};


function intToIP(int ) {
var part1 = int & 255;
var part2 = ((int >> 8) & 255);
var part3 = ((int >> 16) & 255);
var part4 = ((int >> 24) & 255);

return part4 + "." + part3 + "." + part2 + "." + part1;
}

let server = config.liteservers[0];

async function main() {
const engines = [];
engines.push(new LiteSingleEngine({
host: `tcp://${intToIP(server.ip)}:${server.port}`,
publicKey: Buffer.from(server.id.key, 'base64'),
}));

const engine = new LiteRoundRobinEngine(engines);
const client = new LiteClient({ engine });
const master = await client.getMasterchainInfo()
console.log('master', master)

}

main()

  1. 现在您可以与您自己的liteserver互动。

参阅

小贴士和技巧

可用命令列表

  • 您可以使用help获取可用命令列表:

Help command

检查日志

  • 要检查mytoncrl日志,请打开本地用户的~/.local/share/mytoncore/mytoncore.log,或者Root的/usr/local/bin/mytoncore/mytoncore.log

logs

故障排除

本节包含有关运行节点的最常见问题的答案。

Error 651是什么意思?

[Error : 651 : no nodes]表示您的节点无法在TON区块链内找到另一个节点。

有时,这个过程可能需要长达24小时。但是,如果您已经连续几天收到此错误,这意味着您的节点无法通过当前网络连接进行同步。

解决方案

您需要检查防火墙设置,包括任何NAT设置(如果存在)。

它应该允许在一个特定端口上的传入连接和从任何端口的传出连接。

验证者控制台未设置

如果您遇到 Validator console is not settings 错误,这表示您正在以一个非安装时使用的用户身份运行 MyTonCtrl

解决方案

以您安装它的用户(非root sudo用户)运行MyTonCtrl

sudo mytonctrl

"block is not applied"是什么意思?

问: 有时我们对各种请求得到block is not appliedblock is not ready的回应 - 这正常吗?

答: 这是正常的,通常这意味着您试图检索尚未到达您请求的节点的区块。

问: 如果比较频繁出现,是否意味着某处存在问题?

答: 不。您需要检查mytonctrl中的“Local validator out of sync”值。如果它少于60秒,那么一切正常。

但是您需要记住,节点不断同步。有时,您可能会试图接收尚未到达您请求的节点的区块。

您需要稍作延迟重复请求。

使用-d标志的同步问题

如果您在使用-d标志下载MyTonCtrl后遇到out of sync等于时间戳的问题,可能是转储没有正确安装(或已经过时)。

解决方案

推荐的解决方案是再次使用新转储重新安装MyTonCtrl

如果同步花费异常长的时间,可能是转储出现了问题。请联系我们寻求帮助。

请以您安装的用户身份运行mytonctrl

命令<...>在3秒后超时的错误

此错误意味着本地节点尚未同步(out of sync小于20秒)并且正在使用公共节点。 公共节点不总是响应,并最终导致超时错误。

解决方案

解决问题的办法是等待本地节点同步或多次执行相同命令。

Status命令未显示本地节点部分

如果节点状态中没有本地节点部分,通常意味着安装过程中出了问题,跳过了创建/分配验证者钱包的步骤。 还要检查是否指定了验证者钱包。

直接检查以下内容:

mytonctrl> get validatorWalletName

如果validatorWalletName为空,则执行以下操作:

mytonctrl> set validatorWalletName validator_wallet_001

在新服务器上转移验证者

信息

将所有密钥和配置从旧节点转移到工作节点并启动它。如果新节点出现问题,原来的节点仍然保留着所有已设置的内容。

最好的方法(当暂时不验证的罚款很小时,可以不间断地进行):

  1. 在新服务器上使用mytonctrl进行干净的安装,并等待一切同步。

  2. 在两台机器上停止mytoncore和验证者服务,在源和新的上进行备份:

  • 2.1 /usr/local/bin/mytoncore/...
  • 2.2 /home/${user}/.local/share/mytoncore/...
  • 2.3 /var/ton-work/db/config.json
  • 2.4 /var/ton-work/db/config.json.backup
  • 2.5 /var/ton-work/db/keyring
  • 2.6 /var/ton-work/keys
  1. 从源头转移到新的(替换内容):
  • 3.1 /usr/local/bin/mytoncore/...
  • 3.2 /home/${user}/.local/share/mytoncore/...
  • 3.3 /var/ton-work/db/config.json
  • 3.4 /var/ton-work/db/keyring
  • 3.5 /var/ton-work/keys
  1. /var/ton-work/db/config.json中编辑addrs[0].ip为当前的IP地址,安装后可在备份/ton-work/db/config.json.backup中看到

  2. 检查所有替换文件的权限

  3. 在新的服务器上启动mytoncorevalidator服务,检查节点是否同步并验证

  4. 在新的服务器上进行备份:

cp var/ton-work/db/config.json var/ton-work/db/config.json.backup