«Tree Hash» - это концепция, подобная дереву хребта Merkle Tree/Tiger, используемому ледником Амазонки, для проверки целостности данных подмножеств заданного потока данных.Дерево Хеш: как проверить, если диапазон выровнен по дереву?
Для получения хешей-хешей из ледника Амазонки при получении данных указанный диапазон байтов должен быть «выровнен по дереву».
The concept of "tree hash aligned" is described here.
Цитируя документации разработчика:
в диапазоне [A, B] является дерево-хэш выровнен по отношению к архиву тогда и только тогда, когда новое дерево хэш построен на [A, B], корень хэша дерева этого диапазона эквивалентен узлу в хеше дерева всего архива. [...]
Рассмотрите [P, Q), поскольку запрос диапазона для архива из N мегабайт (МБ) и P и Q кратно одному мегабайту. Обратите внимание, что фактический инклюзивный диапазон - [P MB, Q MB - 1 байт], но для простоты мы показываем его как [P, Q). С учетом этих соображений,
- Если P - нечетное число, существует только один возможный диапазон с вырезом по дереву, т.е. [P, P + 1 MB).
- Если P - четное число, а k - максимальное число, где P может быть записано как 2k * X, то не более k выровненных по дереву диапазонов, начинающихся с P. X, является целым числом больше 0. это дерево-хэш выравненные диапазоны относятся к следующим категориям:
- Для каждого я, где (0 < = я < = к) и где Р + 2i < Н, то [Р, Q + 2i) является деревом -высокий диапазон.
- P = 0 является частным случаем, где А = 2 [ЛГН] * 0
Теперь вопрос: Как я могу проверить программным способом, если данный диапазон [StartByte-величина, endByte] является дерево -hash выровнен? Язык программирования не имеет значения.
Тестовые:
[0,0) => true
[0,1) => true
[0,2) => false
[0,3) => true
[1,2) => false
[4,5) => true
Megabyte выравнивание * есть * требуется. * «P и Q кратны одному МБ» * (таким образом, P представляет собой целочисленное смещение от начала файла в MiB). Невозможно иметь выравнивание по дереву, а не выравнивание по мегабайту; набор всех возможных блоков, выровненных по дереву, является подмножеством всех возможных блоков с выравниванием по мегабайту с явным исключением, которое позволяет блоку выравниваться по мегабайту с конечной точкой, находящейся за фактическим концом файла, хэш-выровнены. –
@ Michael-sqlbot Вы правы. Я редактировал вопрос. – seb