Когда у вас есть дерево Merkle, каково минимальное количество хэшей, необходимых для проверки изменения одного листового узла?Какие хэши нужны в дереве Меркле?
Я правильно понял, что сначала нужен только верхний хеш (корень дерева Merkle или хэш корня дерева Merkle)? И после того, как лист изменен, вам нужно получить хэши каждой «посещенной» строки при спуске к листовому узлу, который был изменен?
Так что, если корень имеет, скажем, десять детей и один великий ребенок, который был изменен, и я хочу проверить, что определенные дети-внуки, мне нужно получить новые хеши харкеля, хэши десяти детей и хэши детей родителя великих детей.
Так что при каждой модификации вам всегда нужно получить, по крайней мере, все хэши из первой строки? (в противном случае, как вы реконструируете и проверите хэш херкеля?)
как вы опускаетесь глубже в дерево, если у вас есть только хэш-корневой файл? – streetlight
@streetlight У вас нет. По определению безопасный хэш показывает только, является ли хеш-сообщение равным или нет. Хэш является односторонней функцией. Он не пропускает никакой другой информации * по определению *. Вам нужны более глубокие узлы, если вы хотите выполнить более глубокий анализ того, что изменилось. Если у вас только хэш-корневой каталог, то разделение узлов считалось важным (например, по причинам производительности или разделению данных), но какой узел отвечает за неправильный хеш. –
Обратите внимание, что деревья Merkle в основном используются по соображениям производительности, т. Е. Вы можете использовать несколько потоков или процессов для вычисления хэшей корневых узлов (или целых ветвей, если дерево имеет промежуточные узлы). –