Архив, восстановленный на нужной высоте блока, всё равно может не пройти проверку: мне на самом деле нужен тот самый sidecar.
Транзакции с blob публикуют в сети хэш blob в версии KZG, но полезная нагрузка извлекается отдельно через Rusk по хэшу blob или по commitment. Это означает, что запись в цепочке и тело blob не разделяют одинаковые предположения о восстановлении.
Инструменты архива делают этот разрыв явным. Объекты blob хранятся отдельно, покрытие доказывается для непрерывных диапазонов блоков, а checkpoint архива считается завершённым только тогда, когда совпадают его соответствующее состояние, архивные данные и покрытие blob.
Поэтому если я сделаю резервную копию состояния цепочки и архивных индексов, но буду относиться к blob-хранилищу как к одноразовому кэшу, восстановление может выглядеть благополучно. Блоки на месте. Хэши транзакций на месте. А моё приложение запрашивает старый sidecar и получает пустоту.
Вот такую ошибку я бы тестировал, прежде чем считать восстановление Dusk архива успешным. Возьмите финализированный исторический blob, разрешите его хэш, который сообщает цепочка, загрузите sidecar, затем проверьте его commitment и доказательство.
Для меня «блок восстановлен» — это не то же самое, что «данные восстановлены», когда приложение зависит от payload’ов blob в Dusk.
#dusk $DUSK @Dusk
Транзакции с blob публикуют в сети хэш blob в версии KZG, но полезная нагрузка извлекается отдельно через Rusk по хэшу blob или по commitment. Это означает, что запись в цепочке и тело blob не разделяют одинаковые предположения о восстановлении.
Инструменты архива делают этот разрыв явным. Объекты blob хранятся отдельно, покрытие доказывается для непрерывных диапазонов блоков, а checkpoint архива считается завершённым только тогда, когда совпадают его соответствующее состояние, архивные данные и покрытие blob.
Поэтому если я сделаю резервную копию состояния цепочки и архивных индексов, но буду относиться к blob-хранилищу как к одноразовому кэшу, восстановление может выглядеть благополучно. Блоки на месте. Хэши транзакций на месте. А моё приложение запрашивает старый sidecar и получает пустоту.
Вот такую ошибку я бы тестировал, прежде чем считать восстановление Dusk архива успешным. Возьмите финализированный исторический blob, разрешите его хэш, который сообщает цепочка, загрузите sidecar, затем проверьте его commitment и доказательство.
Для меня «блок восстановлен» — это не то же самое, что «данные восстановлены», когда приложение зависит от payload’ов blob в Dusk.
#dusk $DUSK @Dusk


