Как цепочка блоков защищает от изменения данных?

Меня смущает цепочка блоков, так как я знаю, что заголовок блока содержит ссылку на предыдущий хэш заголовка блока с корнем merkle и другими полями. Этот хэш заголовка связан (вычисляется) с заголовком и не включает блок транзакций, поэтому, если заголовок подделан, цепочка выйдет из строя. Я так понял, но если транзакции в блоке редактируются, то он не изменит хэш заголовка, только если пересчитать корень меркла.

Мой вопрос: когда узел получает блок, как он его проверяет (просто перефразируя заголовок или сначала пересчитывая корень Меркла, а затем перефразируя заголовок)?

Ответы (1)

Корень Merkle является частью заголовка блока и рассчитывается на основе транзакций, включенных в блок. Если транзакции в блоке будут изменены, это изменит корень merkle в заголовке. Если корень merkle изменен, заголовок блока изменится, и хэш заголовка, который был рассчитан изначально, больше не будет действительным.

Когда узел получает блок, как он его проверяет (просто перефразируя заголовок или сначала пересчитывая корень Меркла, а затем перефразируя заголовок)?

Когда полный узел получает блок, он выполняет различные проверки, чтобы убедиться, что блок соответствует правилам консенсуса. Это включает в себя проверку того, что все транзакции в блоке действительны. Если какая-либо конкретная транзакция недействительна, весь блок будет отклонен полным узлом. После проверки транзакций полный узел будет проверять хэш Меркла. Затем полный узел просмотрит заголовок блока и проверит правило отметки времени, хэш предыдущего блока и другие компоненты, а затем вычислит хеш заголовка блока и проверит, меньше ли он целевого. Если одно из правил проверки не сработает, узел отклонит блок. Вы можете найти полный список правил проверки блокировки здесь.

хорошо, я понял, мне не хватало этих правил проверки. Вы говорили о полных узлах, а как насчет других простых узлов, они тоже выполняют эти проверки?
Узлы Simple Payment Verification (SPV), которые используют многие легкие кошельки, загружают только заголовки блоков, а не транзакции, включенные в каждый блок. Узлы SPV полагаются на несколько иной метод проверки и банки на одноранговых узлах, чтобы по запросу предоставлять частичные представления о соответствующих частях блокчейна. Узлы SPV связывают транзакцию и блок, содержащий ее, с помощью пути Меркла. Таким образом, он не имеет полной видимости блокчейна, но, тем не менее, его нельзя обмануть, предположив, что транзакция включена в блок, хотя на самом деле это не так.