Доказательства Меркла — одна из основных причин, по которой люди приписывают Биткойну использование деревьев Меркла. Но я изо всех сил пытаюсь понять, как они работают на практике. Пожалуйста, объясните как теоретически, так и практически.
Учитывая, что Легкие узлы хранят только заголовки блоков, чтобы ограничить объем памяти, необходимый для их копий BlockChain, узлы не имеют доступа к транзакциям в блоке; по определению заголовка блока единственная информация, которую они имеют о транзакциях, — это Merkle Root.
Но Merkle Root недостаточно, чтобы доказать, что транзакция находится в блоке. Необходимы все значения братьев и сестер в Дереве Меркла. Откуда берутся эти значения, если они еще не сохранены?
Пример. У узла 1 есть блок в блокчейне с Merkle Root = H_ABC...P
. Он хочет видеть, находится ли H_K
он в блоке. Для этого ему нужны значения H_L; H_IJK; H_MNOP; H_ABC..H
. Где и как он их получает?
Но Merkle Root недостаточно, чтобы доказать, что транзакция находится в блоке. Необходимы все значения братьев и сестер в Дереве Меркла. Откуда берутся эти значения, если они еще не сохранены?
Любой полный узел, у которого есть полная копия блока, может построить доказательство меркла , которое доказывает, что запрошенный идентификатор транзакции (txid) подключается к корню меркла в заголовке блока. Вот анимированный рисунок, показывающий, как Bitcoin Core строит доказательство Меркла:
Для txid (H5) для транзакции 5 создается список хэшей, необходимых для создания доказательства плюс, а также список флагов, сообщающих программному обеспечению, оценивающему доказательство, на какой стороне каждой ветви будет найден хэш.
Облегченный клиент, оценивающий доказательство, использует эти флаги и хэши, чтобы доказать, что txid подключается к корню merkle следующим образом:
Для получения дополнительной информации вы можете прочитать о сообщении протокола одноранговой сети merkleblock
в Справочнике разработчика BtcInformation.org , который включает эти иллюстрации.
Рагхав Суд
Given that Nodes only store Block Headers to limit the storage needed for their copies of the BlockChain
Это неправильно. Узлы хранят весь блок.3мрш
Lightweight Nodes
Рагхав Суд