Перейти к основному содержимому

Узел Liteserver

к сведению

Прочитайте о Полном узле перед этой статьей

Когда конечная точка активирована в полном узле, узел принимает на себя роль Liteserver. Этот тип узла может отправлять запросы от Легких клиентов и отвечать на них, обеспечивая бесперебойное взаимодействие с блокчейном TON.

Требования к оборудованию

По сравнению с validator, режим liteserver требует меньше ресурсов. Тем не менее, для запуска liteserver по-прежнему рекомендуется использовать мощный компьютер.

  • не менее 16 ядер процессора
  • не менее 128 ГБ оперативной памяти
  • твердотельный накопитель объемом 1 ТБ или Оборудованное хранилище с более 64 000 операций ввода/вывода в секунду (IOPS)
  • Подключение к сети со скоростью 1 Гбит/с
  • 16 ТБ/месяц трафика при пиковой нагрузке
  • общедоступный IP-адрес (фиксированный IP-адрес)

Рекомендованные провайдеры

Не стесняйтесь использовать облачных провайдеров, перечисленных в разделе Рекомендуемые провайдеры.

На Hetzner и OVH запрещено запускать валидатора, но Вы можете использовать их для запуска liteserver:

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

Установка liteserver

Если у Вас нет mytonctrl, установите его с флагом -m liteserver:

wget https://raw.githubusercontent.com/ton-blockchain/mytonctrl/master/scripts/install.sh
sudo bash ./install.sh -m liteserver
  • -d - mytonctrl загрузит дамп последнего состояния блокчейна. Это сократит время синхронизации в несколько раз.
  • -c <path> - если вы хотите использовать не общедоступные liteservers для синхронизации. (не обязательно)
  • -i - Игнорировать минимальные требования. Используйте только для проверки процесса компиляции без реального использования узла.
  • -m - Режим, может быть validator или liteserver.

Чтобы использовать testnet, флагу -c должно быть присвоено значение https://ton.org/testnet-global.config.json.

Значение по умолчанию для флага -c равно https://ton-blockchain.github.io/global.config.json, что является конфигурацией по умолчанию для основной сети (mainnet).

Если у вас уже установлен mytonctrl, запустите:

user@system:~# mytonctrl
MyTonCtrl> enable_mode liteserver

Проверьте настройки брандмауэра

Сначала убедитесь, что указан правильный порт Liteserver в файле/var/ton-work/db/config.json. Этот порт меняется при каждой новой установке MyTonCtrl. Он находится в поле port:

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

Если вы используете облачный провайдер, вам нужно открыть этот порт в настройках брандмауэра. Например, если вы используете AWS, вам нужно открыть порт в группе безопасности.

Вот пример открытия порта в брандмауэре сервера без виртуальной машины.

Открытие порта в брандмауэре

Мы будем использовать утилиту ufw (cheatsheet). Вы можете использовать ту, которая вам больше нравится.

  1. Установите ufw, если он не установлен:
sudo apt update
sudo apt install ufw
  1. Разрешите ssh-соединение:
sudo ufw allow ssh
  1. Разрешите порт, указанный в файле config.json:
sudo ufw allow <port>
  1. Включите брандмауэр:
sudo ufw enable
  1. Проверьте состояние брандмауэра:
sudo ufw status

Таким образом, вы можете открыть порт в настройках брандмауэра вашего сервера.

Взаимодействие с Liteserver (lite-client)

  1. Создайте пустой проект на своем компьютере и вставьте config.json в каталог проекта. Эту конфигурацию можно получить, выполнив команду:
installer clcf # in mytonctrl

Это создаст /usr/bin/ton/local.config.json на вашем компьютере, где установлен mytonctrl. Проверьте [документацию по mytonctrl для получения дополнительной информации] (/v3/documentation/infra/nodes/mytonctrl/mytonctrl-overview#clcf).

  1. Установите библиотеки.
npm i --save ton-core ton-lite-
  1. Инициализируйте и запросите информацию о masterchain, чтобы убедиться, что liteserver работает.

Измените тип проекта на module в файле package.json:

{
"type": "module"
}

Создайте файл index.js со следующим содержимым:

import { LiteSingleEngine } from 'ton-lite-/dist/engines/single.js'
import { LiteRoundRobinEngine } from 'ton-lite-/dist/engines/roundRobin.js'
import { Lite } from 'ton-lite-/dist/.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 = new Lite({ engine });
const master = await .getMasterchainInfo()
console.log('master', master)

}

main()

  1. Теперь вы можете взаимодействовать со своим собственным liteserver.

См. также