Как Биткойн использует криптографию и алгоритм безопасного хэширования (SHA) для связывания записей в блокчейне? - Биткойнер
Купить гитару в Москве
2 голосов
/

Мне интересно, как Биткойн использует криптографию и алгоритм безопасного хэширования, такой как SHA256, для связывания записей в блокчейне. И, если возможно, я думаю, что это даст мне лучшее понимание, если будет демонстрация фигуры блокчейнов.

1 Ответ

2 голосов
/

Биткойн-блок - это структура данных контейнера, которая объединяет все транзакции. Блок состоит из заголовка (содержащего метаданные), за которым следует длинный список транзакций, включенных в блок. Заголовок блока состоит из корня дерева Merkle, хеша предыдущего заголовка блока, метки времени среди других метаданных.

Корень дерева Merkle в более простых терминах включает в себя сводку всех транзакций в блоке с использованием дерева Merkle. Каждая транзакция в блоке сериализуется и дважды хешируется с помощью SHA256 для получения идентификатора транзакции или txid. Эти txid s всех транзакций в блоке затем попарно удваиваются, с SHA256, пока не будет только один узел наверху, называемый корнем Merkle. Поскольку этот корень merkle создается из всех транзакций в самом блоке, корень можно рассматривать как содержащий сводку всех включенных транзакций. Ниже приведен иллюстративный пример вычисления корня Меркле:

enter image description here

Часть заголовка блока хешируется дважды с помощью SHA256, чтобы получить заголовок блокахеш (в процессе майнинга). На этот хеш заголовка блока всегда ссылаются в следующем блоке в поле previousblockhash. Таким образом, каждый блок связан с предыдущим блоком, используя свой хэш заголовка, образуя ссылку, которая ведет обратно к генезисному блоку, как показано на рисунке ниже:

enter image description here

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

Итак, если сторона хочет изменить некоторые данные в транзакции, которая включена в блок где-то в цепочке блоков, она изменит корень Merkle этого блока. ,Так как корень merkle формирует часть заголовка блока, изменение корня merkle полностью изменит хеш заголовка блока. Поскольку на этот хеш ссылаются в следующем блоке, текущий хеш будет несовместим с хешем, на который ссылались, и, следовательно, этот блок не будет принят.

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

Кроме того, я хотел бы отметить, что вы не можете изменять данные транзакций. структура по вашим прихотям и фантазиям. Каждая транзакция подписывается закрытым ключом, который включает в себя все данные транзакции в виде сообщения. Таким образом, небольшое изменение данных транзакции сделает транзакцию недействительной, а включение таких недопустимых транзакций в блок сделает блок недействительным. Итак, в двух словах, все, что вы можете сделать, это включить / исключить определенную транзакцию из предыдущих блоков или внести небольшие косметические изменения (например, изменчивость подписи ECDSA).

Добро пожаловать на сайт Биткойнер, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...