Когда Сатоши разработал Bitcoin, он использовал структуру данных, называемую деревом Меркле, для хранения транзакций в каждом блоке.
Гениальное решение
Простая проверка платежа, обычно сокращенно именуемая SPV, представляет собой систему, описанную в первоначальном документе «Bitcoin», которая позволяет легким клиентам (кошелькам, работающим на младших системах) проверять, включена ли транзакция в Биткойн и, следовательно, был ли произведен платеж.
Дерево Merkle не является чем-то необычным, это просто структура, созданная путем группировки всех транзакций в пары и их хеширования, затем продолжения хеширования полученных хэшей и длительность этого процесса до тех пор, пока не останется только один хеш, называемый корнем Merkle.
Это создает дерево, в котором у каждого узла есть два дочерних элемента, которые можно использовать для создания их родительского узла.
Крутая вещь в деревьях Merkle состоит в том, что тот, кто знает только корень (верхний хэш) Merkle, может проверить, является ли операция частью дерева, то есть включена ли она в блок биткойнов. Это делается путем взятия узлов, которые находятся в пути, соединяя корень merkle с одной из нижних транзакций, и объединения их вместе для создания доказательства.
Почему доказательства SPV так важны
SPV-доказательства могут показаться не такими уж сложными, ведь вы можете проверить транзакции Биткойн, запустив полный узел?
Дело в том, что для запуска полного узла требуется загрузка всей цепочки блоков, но если мы используем доказательства SPV, нам нужно знать только корень merkle каждого блока для проверки транзакций, поэтому нам нужно хранить только 80 байтов на блок, вместо 1 МБ.
Это снижение на 99,992% делает возможным выполнение проверки внутри устройства с низким ресурсом или умного контракта, что совершенно невозможно при обычном подходе.