Почему вам нужно перехэшировать каждый блок после измененного блока при изменении данных в блокчейне?

Может мой вопрос глупый, но зачем перехешировать каждый блок после измененного блока при изменении данных в блокчейне?

Каждый блок содержит хэш своих данных и хеш предыдущего блока. Если я изменю данные в блоке №9000, то блок №9001 будет ссылаться на несуществующий блок. Цепь будет разорвана. В каждой статье, которую я читал, говорится что-то вроде:

Чтобы это работало, вам нужно будет перестроить и повторно хешировать каждый блок, следующий за подделанным блоком, заменив содержимое указателей хеширования предыдущего блока.

Но, если блок содержит только хэш предыдущего блока, почему я не могу просто изменить значение хэша предыдущего блока в блоке № 9001, если я изменяю данные в блоке № 9000? Разве это не восстановит цепь?

Ответы (3)

Хеш блока — это хэш, который включает предыдущий хеш блока в качестве входных данных.

Предположим, вы пытаетесь изменить данные в блоке 9000. Вы изменяете их так, как вам нравится, а затем успешно добываете измененный блок (находите хэш, соответствующий порогу сложности на этой высоте). Теперь у вас есть блок 9000 с новым хешем, поэтому блок 9001 имеет неправильное значение в предыдущем блоке.

Ваша теория заключается в том, что вы можете просто обновить хэш предыдущего блока в блоке 9001, но, поскольку это поле является частью ввода хэша блока 9001, изменение его меняет хэш блока. Теперь вам нужно успешно добыть блок 9001 с модификацией, и как только вы это сделаете, блок 9002 нужно будет изменить, чтобы получить новый хеш предыдущего блока, относящийся к новому хэшу блока для блока 9001, а затем его также нужно будет добыть, и так далее. и так далее.

О, спасибо за это простое объяснение. Итак, если я майню блок 9001, хэш этого блока изменится?

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

Поэтому, как вы сказали, когда вы "измените данные в блоке № 9000, то блок № 9001 будет ссылаться на несуществующий блок". Но когда вы измените ссылку в № 9001, чтобы она указывала на ваш измененный № 9000, измененный № 9001 больше не будет соответствовать ссылке в № 9002! Следовательно, вам нужно будет изменить каждый отдельный блок, начиная с № 9000, чтобы изменить № 9000.

Кроме того, новый заголовок блока, полученный в результате ваших изменений, больше не будет соответствовать требованиям сложности! Это означает, что вам нужно будет не только изменить все блоки, начиная с № 9000, но и для каждого отдельного блока создать новое доказательство работы, чтобы найти блоки-кандидаты, которые удовлетворяют сложности!

В заключение, чтобы изменить № 9000, вы должны переделать всю работу сети с момента этого блока и быть в состоянии сделать это достаточно быстро, чтобы обогнать установленный цепной конец сети, чтобы ваша модификация была принята сетью.

Остальные ответы правильные. Но визуальные эффекты могут быть проще для понимания.

Это лучшее видео, которое я видел, которое показывает, как хеширование и доказательство работы используются для защиты блокчейна.

https://anders.com/blockchain/?ref=producthunt