Как воспроизвести деление Arweave на фрагменты при коротком остатке

Загрузчик, который всегда режет файлы строго по 256 КиБ, может получить другой корень данных, чем arweave-js, если файл ненамного больше этой границы.

Примените корректировку последней пары

Для файла 260 КиБ первый полный фрагмент оставил бы только 4 КиБ. Эталонный алгоритм замечает положительный остаток меньше 32 КиБ и делит оставшиеся данные на две почти равные части. Здесь обе части содержат ровно 133 120 байтов. Сохраните их границы при построении листьев дерева.

input = 266240 bytes (260 KiB)
naive split = 262144 + 4096
reference split = 133120 + 133120

Сопоставьте корень данных

Создайте одинаковый тестовый файл для обеих реализаций и сравните границы до сравнения корней. При совпадении границ и расхождении корней проверьте хеширование листьев и кодировку смещений. Пример охватывает короткий остаток; для пустого файла и точных кратных нужны отдельные примеры.

Источники