Об этом спрашивали уже несколько раз, так что отвечу здесь.
В блоке Bitcoin может содержаться несколько тысяч транзакций, но заголовок блока занимает всего 80 байт. Именно дерево Меркла позволяет с помощью столь небольшого объёма данных «запереть» все транзакции в блоке.
В заголовке каждого блока $BTC записан корень Меркла, который соответствует всем транзакциям в этом блоке. Сейчас 83,316.01 (за 24 ч: +2.19%).
📌 Что это за дерево?
Дерево Меркла — это древовидная структура, в которой большие объёмы данных хешируются попарно и объединяются слой за слоем. На самом нижнем уровне находятся хеши отдельных транзакций. Два соседних хеша объединяются и хешируются ещё раз, образуя следующий уровень. Этот процесс продолжается, пока не останется один хеш — корень Меркла.
Эта структура названа в честь криптографа Ральфа Меркла (Ralph Merkle). Её предложили ещё в конце 1970-х годов — задолго до появления блокчейна.
📌 Почему её нельзя изменить
В заголовке блока Bitcoin хранится корень Меркла. Если изменить любую транзакцию в блоке, её хэш изменится. Это изменение распространится вверх по дереву до корня Меркла, а вместе с ним изменится и хэш блока. В результате все последующие блоки перестанут совпадать.
Поэтому достаточно следить за одним хэшем в заголовке блока — и тем самым контролировать все транзакции в блоке.
📌 Как лёгкий кошелёк проверяет транзакцию
Чтобы доказать, что транзакция находится в определённом блоке, не нужен весь блок — достаточно небольшого числа хэшей на пути от этой транзакции до корня Меркла. Если количество транзакций удвоится, потребуется всего на один хэш больше. Для блока с тысячами транзакций достаточно десятка с небольшим хэшей.
Именно так работает упрощённая проверка платежей (SPV), описанная в разделе 8 документа Bitcoin: лёгкий клиент хранит только заголовки блоков, а затем запрашивает у узла путь Меркла и может убедиться, что транзакция включена в блок.
📌 Применение в доказательстве резервов
Доказательство резервов биржи также использует дерево Меркла: платформа объединяет балансы всех пользователей в дерево Меркла и публикует корневой хэш. Каждый пользователь получает свой путь и может самостоятельно проверить, учтён ли его баланс, без раскрытия данных об остальных пользователях.
📌 В двух словах
Идея дерева Меркла проста: один короткий корневой хэш представляет большой объём данных. Именно благодаря этому стали возможны такие приложения, как мобильные кошельки и доказательство резервов. Вкладывать лучше только те средства, потерю которых вы сможете перенести.
А вы раньше тоже неправильно это понимали?