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

Устранение неполадок

warning

Эта страница переведена сообществом на русский язык, но нуждается в улучшениях. Если вы хотите принять участие в переводе свяжитесь с @alexgton.

В этом разделе содержатся ответы на наиболее часто задаваемые вопросы о работе узлов.

Не удалось получить состояние учетной записи

Failed to get account state

Эта ошибка указывает на то, что при поиске этой учетной записи в состоянии шарда возникли проблемы. Скорее всего, это означает, что узел liteserver синхронизируется слишком медленно, а синхронизация Masterchain обгоняет синхронизацию shardchain (Basechain). В этом случае узел знает последний блок Masterchain, но не может проверить состояние учетной записи в последнем блоке shardchain, что приводит к ошибке "Failed to get account state".

Не удалось распаковать состояние учетной записи

Failed to unpack account state

Эта ошибка означает, что запрошенная учетная запись не существует в текущем состоянии. Это означает, что эта учетная запись одновременно не развернута и имеет нулевой баланс

Отсутствие прогресса в синхронизации узла в течение 3 часов

Попробуйте выполнить следующие проверки:

  1. Запущен ли процесс без сбоев? (Проверьте статус процесса systemd)
  2. Есть ли брандмауэр между узлом и интернетом, если да, будет ли он передавать входящий трафик UDP на порт, указанный в поле addrs[0].port файла /var/ton-work/db/config.json?
  3. Есть ли 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

Перенос валидатора на новый сервер

к сведению

Перенесите все ключи и конфигурации со старого узла на рабочий узел и запустите его. В случае, если на новом сервере что-то пойдет не так, все равно будет источник, где все уже настроено.

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

  1. Выполните чистую установку на новом сервере с помощью mytonctrl и дождитесь, пока все синхронизируется.

  2. Остановите службы 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
  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. На новом сервере запустите службы mytoncore и validator. Убедитесь, что узел синхронизируется и выполняет валидацию

  4. Создайте резервную копию:

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 с вашего компьютера и установите его снова, убедитесь в решении всех ранее возникших ошибок.

См. также