Как работает проверка транзакций по дереву Меркла?

Из того, что я прочитал, предположим, что B отправляет 1 биткойн к C. C хочет проверить платеж B и запрашивает у C номер блока (местоположение), в котором находится входная транзакция. (Правильно ли это понимание/процедура?) Затем C проверяет, действительно ли транзакция находится в упомянутом блоке, используя дерево Меркла.

И на этом мое понимание обрывается. Я знаю, что у дерева Меркла есть замечательное свойство: если у вас есть сама транзакция и несколько хэшей trde, вам не нужно проверять хэши всех поддеревьев, чтобы проверить действительность транзакции в блоке. Но для этого по-прежнему требуется получение хэшей от полной ноды, которая знает, какие транзакции находятся в блоке. Если C знает только номер блока плюс транзакцию, чем это отличается от простого получения ответа «да» от всего узла? Полному узлу по-прежнему нужно будет искать, где находится транзакция в дереве merkle, чтобы отправлять хэши поддерева. Я просто не понимаю, как дерево Меркла помогает эффективно проверять.

Но, учитывая мой уровень замешательства, я думаю, что было бы лучше ответить, подробно описав, что происходит, когда B отправляет биткойн к С.

Исходная ссылка

Source