Node is Disqualified after migrate on docker

Система его дисквалифицирует если обнаружит подряд проваленные аудиты. Так как сателлит использует вероятностную модель при проверке данных, то таким методом нельзя быть уверенным на 100% после дисквалификации, что данные не повреждены. Разумеется, это выяснится, когда клиент захочет загрузить свои данные обратно, но может быть слишком поздно - если количество кусочков снизится до минимального уровня 29 и ваш узел будет содержать как раз последний, 29 кусочек - клиент не сможет больше загрузить файл.
Сателлит никогда не пойдёт на риск потери клиентских данных.

Как я уже говорил, для сети дешевле пометить все ваши данные как потерянные после дисквалификации и восстановить их, когда понадобится (когда количество неповреждённых кусочков снизится до 35). Сателлит должен скачать 35 кусочков, реконструировать 45 кусочков и распределить их по сети. Скачивание этих 35 кусочков должно быть оплачено операторам. Где деньги взять? Из held amount вашего узла (и других узлов, кто тоже потерял кусочки)

Даже если теоретически убрать статус дисквалификации с вашего узла, это означает:

  • репутация должна быть обнулена. Ваш узел должен начать с проверки снова (5% потенциального трафика, пока не пройдёт 100 аудитов ~ месяц)
  • held amount истрачено на восстановление, то есть = 0 и начинать опять собирать held amount, значит начинать с 75% удержаний;
  • так как сеть считает кусочки на вашем узле потерянными, за них сателлит не будет платить, Garbage Collector удалит их с вашего узла, но медленно - недели. Всё это время вы не будете получать выплату за занятое место, так как на сателлите информации о нём больше нет.

Это ровно то же самое, как начать с нового узла, но с медленной очисткой места.

Сейчас разработан новый режим suspension, в него узел помещается, когда отвечает неожиданной ошибкой на запрос аудита. В этом режиме узел перестаёт получать данные и имеющиеся данные помечаются как возможно недоступные, то есть он не выбирается и для скачиваний тоже. Тут почти та же самая вероятность срабатывания триггера восстановления, и практически те же самые последствия для узла - падение репутации, удаление данных, а через неделю (пока столько по дизайну) - дисквалификация.

Однако если узел ответил на аудит известной ошибкой (нет данных, повреждённый кусочек) - аудит считается проваленным сразу же. Если несколько подряд - очень быстро снижается Audit score, и когда падает ниже 0.6 - узел дисквалифицируется.

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

Помещать все проваливающие аудиты узлы в suspension - очень рискованно для клиентских данных и дорого для восстановления - потому что если сработает триггер, деньги будут использоваться из held amount только дисквалифицированных узлов, остальное придётся платить оператору сателлита из своего кармана.

Хотя можете проголосовать тут:

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