Столкнулся с новой проблемой. Стала отваливаться нода. Сначала теряет соединение с сетью, потом происходит проверка блокчейна и после того как дойдет до 99% пытается соединиться опять и после этого краш. Посмотрел в лог пишет fatalErrorMessage = "fromCompactAddress: Impossible: DecoderErrorDeserilizationFailure" и дальше какая-то хрень. Перезапуск кошелька не помагает. Есть ли выход из этого?
Выход из всего можно найти.
Когда нода останавливается нормальным путем, то она сначала завершает все I/O операции, а потом обрывает соединения. Этим достигается целостность записей в ее базе данных. Если же связь с сетью рвется в момент совершения I/O операций, то возможно искажение этих данных. И тогда при повторной попытке запуска ноды возникает ошибка десерилизации данных.
Если у вас возникла такая ошибка то рецепт, чтобы она вас больше не торкнула , следующий:
1) Удаляете полностью папку Daedalus Mainnet. (Но сначала убедитесь, что вы знаете свою SEED фрвзу).
2) Создаете новую папку Daedalus Mainnet в той же директории, где была старая папка.
3) Запускаете Daedalus. Он вам предложит восстановить ваши кошельки. Восстанавливаете через SEED фразу Daedalus или путем подключения аппаратника , если используется именно такой тип кошелька. Начнется синхронизация с сетью. Но вы н
е должны ждать пока она полностью завершится. Закройте Daedalus когда процент синхронизации достигнет какого-то значения икс, например 5 или 8
4) Сделайте бэкап папки Daedalus Mainnet.
5) Запустите опять Daedalus и опять ждите пока синхронизации достигнет следующего значения Х .
6) Скопируйте папку Daedalus Mainnet и замените свой старый бэкап новым.
7) Повторяете пункты 5 и 6 до тех пор пока сихронизация не будет 100%.
Если на каком-то из шагов нода сама оборвет соединение таким образом, что ошибка десериализации возобновится, тогда удаляете папку Daedalus Mainnet и на ее место ставите свой бэкап. Нода запустится уже не с нуля, а с того места, который соответствует этому бэкапу.
Мораль всей басни такова - иметь под рукой бэкап рабочей папки Daedalus Mainnet, чтобы в случае отказа запуска ноды из-за ошибки десериализации, подсунуть ей этот бэкап.