Архив, восстановленный на нужной высоте блока, всё равно может не пройти проверку: мне на самом деле нужен тот самый sidecar.

Транзакции с blob публикуют в сети хэш blob в версии KZG, но полезная нагрузка извлекается отдельно через Rusk по хэшу blob или по commitment. Это означает, что запись в цепочке и тело blob не разделяют одинаковые предположения о восстановлении.

Инструменты архива делают этот разрыв явным. Объекты blob хранятся отдельно, покрытие доказывается для непрерывных диапазонов блоков, а checkpoint архива считается завершённым только тогда, когда совпадают его соответствующее состояние, архивные данные и покрытие blob.

Поэтому если я сделаю резервную копию состояния цепочки и архивных индексов, но буду относиться к blob-хранилищу как к одноразовому кэшу, восстановление может выглядеть благополучно. Блоки на месте. Хэши транзакций на месте. А моё приложение запрашивает старый sidecar и получает пустоту.

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

Для меня «блок восстановлен» — это не то же самое, что «данные восстановлены», когда приложение зависит от payload’ов blob в Dusk.

#dusk $DUSK @Dusk