Меня смущает цепочка блоков, так как я знаю, что заголовок блока содержит ссылку на предыдущий хэш заголовка блока с корнем merkle и другими полями. Этот хэш заголовка связан (вычисляется) с заголовком и не включает блок транзакций, поэтому, если заголовок подделан, цепочка выйдет из строя. Я так понял, но если транзакции в блоке редактируются, то он не изменит хэш заголовка, только если пересчитать корень меркла.
Мой вопрос: когда узел получает блок, как он его проверяет (просто перефразируя заголовок или сначала пересчитывая корень Меркла, а затем перефразируя заголовок)?
Корень Merkle является частью заголовка блока и рассчитывается на основе транзакций, включенных в блок. Если транзакции в блоке будут изменены, это изменит корень merkle в заголовке. Если корень merkle изменен, заголовок блока изменится, и хэш заголовка, который был рассчитан изначально, больше не будет действительным.
Когда узел получает блок, как он его проверяет (просто перефразируя заголовок или сначала пересчитывая корень Меркла, а затем перефразируя заголовок)?
Когда полный узел получает блок, он выполняет различные проверки, чтобы убедиться, что блок соответствует правилам консенсуса. Это включает в себя проверку того, что все транзакции в блоке действительны. Если какая-либо конкретная транзакция недействительна, весь блок будет отклонен полным узлом. После проверки транзакций полный узел будет проверять хэш Меркла. Затем полный узел просмотрит заголовок блока и проверит правило отметки времени, хэш предыдущего блока и другие компоненты, а затем вычислит хеш заголовка блока и проверит, меньше ли он целевого. Если одно из правил проверки не сработает, узел отклонит блок. Вы можете найти полный список правил проверки блокировки здесь.
Анис Хербаджи
Угам Камат