Одно интересное обязательство совершить корень дерева Merkle, который содержит все блочные хэши как листья.
Это поможет с начальной синхронизации. Вы можете выбрать самые низкие N блоков хэш и доказать, что они являются частью одной и той же цепи.
Начиная с последнего блока в наборе, каждый корень Merkle можно проверить, чтобы убедиться, что все соответствует.
Код:
/ \
/ \
/ \
/ \
/ \
/ \
/ \
ДО НАШЕЙ ЭРЫ
/ \ / \
/ \ / \
/ \ / |
D E F G
/ \ / \ / \ |
З И Й К Л М Н
Для того, чтобы доказать, что блок Ь в блок-цепи, путь к блоку М может быть отправлено, и предыдущая ссылка используется, чтобы получить блокировать M. Это имеет то преимущество, что совершенное значение корня Merkle в том числе блок-L содержится в блоке M ,
Это означало бы, посылая хэши для B, G и L.
Корень Меркл для блока L может быть пересчитан.
Код:
A *
/ \
/ \
/ \
/ \
/ \
/ \
/ \
ДО НАШЕЙ ЭРЫ*
/ \ /
/ \ /
/ \ /
D E F *
/ \ / \ /
З И Й К Л
F * = Hash (L | L) // L известно
C * = Hash (F * | F *) // F * вычисляется
А * = Хеш (В * | С *) // С * вычисляется
А * новый корень Merkle и может быть по сравнению с зафиксированным значением.
Если в блоке К было посылается, то по ветви к L будет послана (B, G и М). B становится новым корнем Merkle, так что на самом деле проще.
Это дает аналогичный (журнал (блоки) * N) производительность как большое хэш шоссе, но проще объяснить. Проверка всех корней Merkle, вероятно, слишком хотя.
С 1 миллион блоков, пути будут 20 уровней. Если 16 лучших хэш были отправлены, то есть 20 * 16 * 32 = 10kB дать довольно точное доказательство военнопленных на главной цепи.
С заголовками первых, доказательство длина 80MB на 1 млн блоков.
Если это обязательство было использовано, хэш-блока, что она начинается с может быть трудно закодированы, поэтому узлы не проверить вспомогательный заголовок до этого.