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

Пользовательские оверлеи

Узлы TON взаимодействуют друг с другом, формируя подсети, называемые оверлеями. Существует несколько общих оверлеев, в которых участвуют узлы, например: публичные оверлеи для каждого шарда, валидаторы также участвуют в общем оверлее валидаторов и оверлеях для конкретных наборов валидаторов.

Узлы также могут быть настроены для присоединения к пользовательским оверлеям. В настоящее время эти оверлеи используются для двух целей:

  • трансляция внешних сообщений
  • трансляция кандидатов на блоки.

Участие в пользовательских оверлеях позволяет избежать неопределенности публичных оверлеев и повысить надежность доставки и сократить задержки.

Каждый пользовательский оверлей имеет строго определенный список участников с заранее заданными правами, в частности право на отправку внешних сообщений и блоков. Конфигурация оверлея должна быть одинаковой на всех участвующих узлах.

Если у вас под контролем несколько узлов, целесообразно объединить их в пользовательский оверлей, где все валидаторы смогут отправлять кандидатов на блок, а все LS смогут отправлять внешние сообщения. Таким образом, LS будет синхронизироваться быстрее, в то время как скорость доставки внешних сообщений будет выше (и доставка в целом более надежной). Обратите внимание, что дополнительный оверлей вызывает дополнительную нагрузку на трафик сети.

Пользовательские оверлеи по умолчанию

Mytonctrl использует пользовательские оверлеи по умолчанию, доступные по адресу https://ton-blockchain.github.io/fallback_custom_overlays.json. Этот оверлей используется нечасто и предназначен для экстренной ситуации при проблемах с подключением к публичному оверлею. Чтобы прекратить участие в пользовательских оверлеях по умолчанию, выполните команды

MyTonCtrl> set useDefaultCustomOverlays false
MyTonCtrl> delete_custom_overlay default

Создание пользовательского оверлея

Сборка adnl адреса

Чтобы добавить валидаторы в пользовательский оверлей, вы можете использовать либо их fullnode adnl id, доступный с помощью validator-console -c getconfig, либо validator adnl id, который можно найти в статусе mytonctrl. Чтобы добавить liteservers в пользовательский оверлей, вы должны использовать их fullnode adnl id.

Создание файла конфигурации

Создайте файл конфигурации в формате:

{
"adnl_address_hex_1": {
"msg_sender": true,
"msg_sender_priority": 1
},
"adnl_address_hex_2": {
"msg_sender": false
},

"adnl_address_hex_2": {
"block_sender": true
},
...
}

msg_sender_priority определяет порядок включения внешних сообщений в блоки: сначала обрабатываются сообщения из источников более высокого приоритета. Сообщения из публичного оверлея и локального LS имеют приоритет 0.

Обратите внимание, что все узлы, перечисленные в конфигурации, должны участвовать в оверлее (другими словами, им нужно добавить оверлей с точно такой же конфигурацией), в противном случае связь будет плохой, а трансляции прекратятся

Существует специальное слово @validators для создания динамического пользовательского оверлея, который mytonctrl будет автоматически генерировать в каждом раунде, добавляя всех текущих валидаторов.

Добавление пользовательского оверлея

Используйте команду mytonctrl для добавления пользовательского оверлея:

MyTonCtrl> add_custom_overlay <name> <path_to_config>

Обратите внимание, что имя и файл конфигурации должны быть одинаковыми для всех участников оверлея. Проверьте, что оверлей был создан с помощью команды mytonctrl list_custom_overlays.

Режим отладки

Вы можете установить уровень детализации узла равным 4 и отфильтровать логи с помощью ключевого слова "CustomOverlay".

Удаление пользовательского оверлея

Чтобы удалить пользовательский оверлей с узла, используйте команду mytonctrl delete_custom_overlay <name>. Если оверлей является динамическим (т. е. в конфигурации есть слово @validators), он будет удален через минуту, иначе удаление произойдет немедленно. Чтобы убедиться, что узел удалил пользовательский оверлей, выполните команды list_custom_overlays mytonctrl и showcustomoverlays validator-console.

Низкоуровневые операции

Список команд validator-console для работы с пользовательскими оверлеями:

  • addcustomoverlay <path_to_config> - добавить пользовательский оверлей на локальный узел. Обратите внимание, что эта конфигурация должна быть в формате отличном от конфигурации для mytonctrl:
    {
    "name": "OverlayName",
    "nodes": [
    {
    "adnl_id": "adnl_address_b64_1",
    "msg_sender": true,
    "msg_sender_priority": 1
    },
    {
    "adnl_id": "adnl_address_b64_2",
    "msg_sender": false
    }, ...
    ]
    }
  • delcustomoverlay <name> - удалить пользовательский оверлей из узла.
  • showcustomoverlays - показать список пользовательских оверлеев, о которых знает узел.