Устранение неполадок
Эта страница переведена сообществом на русский язык, но нуждается в улучшениях. Если вы хотите принять участие в переводе свяжитесь с @alexgton.
В этом разделе содержатся ответы на наиболее часто задаваемые вопросы о работе узлов.
Не удалось получить состояние учетной записи
Failed to get account state
Эта ошибка указывает на то, что при поиске этой учетной записи в состоянии шарда возникли проблемы. Скорее всего, это означает, что узел liteserver синхронизируется слишком медленно, а синхронизация Masterchain обгоняет синхронизацию shardchain (Basechain). В этом случае узел знает последний блок Masterchain, но не может проверить состояние учетной записи в последнем блоке shardchain, что приводит к ошибке "Failed to get account state".
Не удалось распаковать состояние учетной записи
Failed to unpack account state
Эта ошибка означает, что запрошенная учетная запись не существует в текущем состоянии. Это означает, что эта учетная запись одновременно не развернута и имеет нулевой баланс
Отсутствие прогресса в синхронизации узла в течение 3 часов
Попробуйте выполнить следующие проверки:
- Запущен ли процесс без сбоев? (Проверьте статус процесса systemd)
- Есть ли брандмауэр между узлом и интернетом, если да, будет ли он передавать входящий трафик UDP на порт, указанный в поле
addrs[0].port
файла/var/ton-work/db/config.json
? - Есть ли NAT между машиной и Интернетом? Если да, убедитесь, что IP-адрес, указанный в поле
addrs[0].ip
файла/var/ton-work/db/config.json
, соответствует реальному публичному IP машины. Обратите внимание, что значение этого поля з адается в виде подписанного INT. Для выполнения преобразований можно использовать скриптыip2dec
иdec2ip
, расположенные в ton-tools/node.
Архивный узел не синхронизирован даже через 5 дней после процесса синхронизации
Пройдитесь по контрольному списку из этого раздела.
Возможные причины медленной синхронизации
Диск относительно слабый. Рекомендуется проверить IOPS диска (иногда хостинг-провайдеры преувеличивают эти цифры).
Не удалось применить внешнее сообщение к текущему состоянию: Внешнее сообщение было отклонено
Cannot apply external message to current state : External message was not accepted
Эта ошибка означает, что контракт не принял внешнее сообщение. Вам нужно найти exitcode в трассировке. -13 означает, что у аккаунта недостаточно TON для принятия сообщения (или требуется больше, чем gas_credit). В случае контрактов кошельков код выхода=33 означает неверный seqno (вероятно, данные seqno, которые вы используете, устарели), код выхода=34 означает неверный subwallet_id (для старых кошельков v1/v2 это означает неверную подпись), код выхода=35 означает, что либо сообщение устарело, либо подпись неверна.
Что означает ошибка 651?
[Error : 651 : no nodes]
указывает на то, что ваш узел не может найти другой узел в блокчейне TON.
Иногда этот процесс может занять до 24 часов. Однако, если вы получали эту ошибку в течение нескольких дней, это означает, что ваш узел не может синхронизироваться через текущее сетевое соединение.
Оно должно разрешать входящие соединения на одном определенном порту и исходящие соединения с любого порта.
Консоль валидатора не настроена
Если Вы столкнулись с ошибкой Validator console is not settings
, это означает, что вы запускаете MyTonCtrl от имени пользователя, отличного от того, которого вы использовали для установки.
mytonctrl
###Запуск MyTonCtrl от имени другого пользователя
Запуск MyTonCtrl от имени другого пользователя может вызвать следующую ошибку:
Error: expected str, bytes or os.PathLike object, not NoneType
Чтобы устранить эту ошибку, вы должны запустить MyTonCtrl от имени пользователя, который установил его.
Что означает "block is not applied"?
Вопрос: Иногда мы получаем ошибку block is not applied
или block is not ready
для различных запросов - это нормально?
Ответ: Это нормально, обычно это означает, что вы пытались получить блок, который не достигает указанного вами узла.
Вопрос: Если появляется сравнительная частота, означает ли это, что где-то есть проблема?
Ответ: Нет. Вам нужно проверить значение "Local validator out of sync"" в mytonctrl. Если оно меньше 20 секунд, то все в порядке.
Но вам нужно помнить, что узел постоянно синхронизируется. Иногда вы можете попытаться получить блок, который не достиг указанного вами узла.
Вам нужно повторить запрос с небольшой задержкой.
Проблема Out of Sync с флагом -d
Если вы столкнулись с проблемой, когда рассинхронизация равна временной метке после загрузки MyTonCtrl
с флагом -d
, возможно, дамп был установлен неправильно (или он уже устарел).
Рекомендуемое решение - переустановить MyTonCtrl
заново с новым дампом.
Если синхронизация занимает слишком много времени, возможно, возникли проблемы с дампом. Пожалуйста, свяжитесь с нами для получения помощи.
Пожалуйста, запустите mytonctrl
от имени пользователя, под которым вы его установили.
Error command... timed out after 3 seconds
Эта ошибка означает, что локальный узел еще не синхронизирован (разрыв синхронизации меньше 20 секунд) и используются публичные узлы. Публичные узлы не всегда отвечают и заканчиваются ошибкой превышения времени ожидания.
Решение проблемы — дождаться синхронизации локального узла или выполнить одну и ту же команду несколько раз перед выполнением.
Команда Status отображается без раздела локального узла
Если в статусе узла нет раздела локального узла, обычно это означает, что что-то пошло не так во время установки и шаг создания/назначения кошелька валидатора был пропущен. Также проверьте, указан ли кошелек валидатора.
Проверьте следующее:
mytonctrl> get validatorWalletName
Если validatorWalletName равен null, выполните следующее:
mytonctrl> set validatorWalletName validator_wallet_001
Перенос валидатора на новый сервер
Перенесите все ключи и конфигурации со старого узла на рабочий узел и запустите его. В случае, если на новом сервере что-то пойдет не так, все равно будет источник, где все уже настроено.
Лучший способ (хотя штраф за временное отсутствие валидации невелик, это можно сделать без перерыва):
-
Выполните чистую установку на новом сервере с помощью
mytonctrl
и дождитесь, пока все синхронизируется. -
Остановите службы
mytoncore
и валидатораservices
на обеих машинах, сделайте резервные копии на исходной машине и на новой:
- 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
- Перенесите исходное содержимое на новый узел (замените содержимое):
- 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
-
В файле
/var/ton-work/db/config.json
заменитеaddrs[0].ip
на текущий IP-адрес, который был после установки (его можно увидеть в резервной копии/ton-work/db/config.json.backup
) -
Проверьте права доступа ко всем замененным файлам
-
На новом сервере запустите службы mytoncore и validator. Убедитесь, что узел синхронизируется и выполняет валидацию
-
Создайте резервную копию:
cp var/ton-work/db/config.json var/ton-work/db/config.json.backup
Mytonctrl был установлен другим пользователем. Возможно, вам нужно запустить mtc с помощью пользователя ...
Запустите MyTonCtrl под пользователем, который использовался для его установки.
Например, наиболее распространенным случаем является попытка запуска MyTonCtrl от имени пользователя root, хотя он был установлен другим пользователем. В этом случае вам нужно войти в аккаунт пользователя, который установил Mytonctrl, и запустить MyTonCtrl от этого пользователя.
Mytonctrl was installed by another user. Probably you need to launch mtc with validator
user
Выполните команду sudo chown <user_name>:<user_name> /var/ton-work/keys/*
, где <user_name>
- это имя пользователя, который установил mytonctrl.
Mytonctrl was installed by another user. Probably you need to launch mtc with ubuntu
user
Кроме того, из- за этой ошибки mytonctrl
может работать неправильно. Например, команда status
может возвращать пустой результат.
Проверьте владельца mytonctrl
:
ls -lh /var/ton-work/keys/
Если владелец — пользователь root
, удалите mytonctrl
и установите его снова используя пользователя без прав root.
Иначе выйдите из текущего пользователя (если используется ssh-соединение, разорвите его) и войдите в систему под правильным пользователем.
Сообщение должно исчезнуть.
Запуск консоли MyTonCtrl прерывается после сообщения "Found new version of mytonctrl! Migrating!"
Известны два случая, когда эта ошибка появляется:
Ошибка после обновления MytonCtrl
- Если MyTonCtrl был установлен пользователем root: удалите файл
/usr/local/bin/mytonctrl/VERSION
. - Если MyTonCtrl был установлен не пользователем root: удалите файл
~/.local/share/mytonctrl/VERSION
.
Ошибка во время установки MytonCtrl
MytonCtrl
может запускаться, но узел будет работать неправильно. Пожалуйста, удалите MytonCtrl
с вашего компьютера и установите его снова, убедитесь в решении всех ранее возникших ошибок.