Структура блока: как упаковываются и связываются данные?
Теперь, когда мы знаем, как сеть достигает консенсуса относительно того, «кто ведет реестр», давайте углубимся в сам «реестр» — «блок» — чтобы понять, как данные искусно упаковываются и связываются, создавая неразрывную цепочку доверия.
1.3 Структура блока: как упаковываются и связываются данные?
Блоки объединяют многочисленные транзакции в «заголовки блоков» и «тела блоков», связывая их от начала до конца хеш-цепочками для формирования неизменяемого реестра.
Представьте, что вы пишете совместную историческую книгу. Каждая страница (блок) записывает все значимые события (транзакции) за последние десять минут. Чтобы эта книга была достоверной и защищенной от подделок, мы разработали сложную структуру для каждой страницы.
Два основных компонента блока
Каждый блок состоит из двух основных частей:
- Заголовок блока Он действует как «карточка-указатель» или «обложка» блока, суммируя метаданные блока. Он не перечисляет конкретные транзакции, но предоставляет компактную версию этой информации. Ключевые поля включают:
previous_hash: Это важнейшее поле содержит хеш-значение предыдущего заголовка блока. Оно действует как цепочка, прочно «связывая» текущий блок с предыдущим.merkle_root: Это «цифровой отпечаток» всех данных транзакций в блоке. Генерируется с помощью алгоритма дерева Меркла, уникально и компактно представляет все транзакции. Любое незначительное изменение в транзакции резко изменяет это корневое значение.timestamp: Отмечает приблизительное время создания блока.difficulty / target: В PoW-цепочках это указывает на сложность «майнинга». Майнеры должны найти хеш-значение ниже этого целевого показателя.nonce: «Счетчик», который майнеры могут регулировать в PoW. Повторно изменяя Nonce, майнеры стремятся вычислить хеш заголовка блока, соответствующий целевой сложности.
- Тело блока Это «текст» блока, содержащий все конкретные данные, упакованные в этот блок, в основном список транзакций. Каждая транзакция представляет собой сложную структуру данных, обычно включающую такие детали, как отправитель, получатель, сумма и цифровая подпись. Тело блока значительно больше заголовка блока.