2015-11-09 2 views
1

Когда у вас есть дерево Merkle, каково минимальное количество хэшей, необходимых для проверки изменения одного листового узла?Какие хэши нужны в дереве Меркле?

Я правильно понял, что сначала нужен только верхний хеш (корень дерева Merkle или хэш корня дерева Merkle)? И после того, как лист изменен, вам нужно получить хэши каждой «посещенной» строки при спуске к листовому узлу, который был изменен?

Так что, если корень имеет, скажем, десять детей и один великий ребенок, который был изменен, и я хочу проверить, что определенные дети-внуки, мне нужно получить новые хеши харкеля, хэши десяти детей и хэши детей родителя великих детей.

Так что при каждой модификации вам всегда нужно получить, по крайней мере, все хэши из первой строки? (в противном случае, как вы реконструируете и проверите хэш херкеля?)

ответ

0

В целом деревья Merkle не были предназначены для указания того, какое значение хеша действительно неверно. Вместо этого он позволяет получить эффективный хэш над большими структурами данных. Хэш каждого листового узла можно рассчитать отдельно (и, конечно, и каждую ветвь, хотя это просто хеши).

Если вы хотите проверить, какой узел недействителен, вы должны сохранить все дерево Merkle. Если у вас есть другая сторона, выполняющая вычисления, вы действительно можете спуститься в ветвь дерева, чтобы найти измененный листовой узел.

+0

как вы опускаетесь глубже в дерево, если у вас есть только хэш-корневой файл? – streetlight

+1

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

+1

Обратите внимание, что деревья Merkle в основном используются по соображениям производительности, т. Е. Вы можете использовать несколько потоков или процессов для вычисления хэшей корневых узлов (или целых ветвей, если дерево имеет промежуточные узлы). –

Смежные вопросы