Базовою складовою блокчейна є блок - одинична порція пов'язаних в ланцюжок даних (інформації).
Як ми вже знаємо, блокчейн біткоіни # 8202; - # 8202; це якась бухгалтерська книга (ledger), в якій записані абсолютно всі транзакції, вчинені з монетами біткоіни.
І якщо блокчейн # 8202; - # 8202; це бухгалтерська книга, то окремі сторінки цієї книги # 8202; - # 8202; це і є блоки блокчейна, в яких записуються фінансові транзакції і які пов'язані між собою за допомогою хеш так, що в заголовку кожного наступного блоку зберігається хеш-код попереднього.
Таким чином, всі блоки, записані в блокчейн, змінити вже неможливо. Взагалі, будь-яке редагування записаної в блокчейн інформації (транзакцій) заборонено. Можна тільки дописувати нові блоки.
Це важлива властивість блокчейна, як розподіленого реєстру фінансових транзакцій. Також, як неможливо виправити записи або видалити пронумеровані сторінки в прошитої і скріпленим печаткою бухгалтерської книзі, так і неможливо це зробити в блокчейне.
При цьому блокчейн набагато надійніше будь-якої бухгалтерської книги або будь-якого банківського реєстру операцій, оскільки копії блокчейна зберігаються на безлічі комп'ютерів (серверів) в розподіленої тимчасової мережі.
Але, повернемося до блокам блокчейна біткоіни.
Кожен блок складається з заголовка (Head), в якому зберігається службова інформація, і корисної інформації (Payload) - # 8202; власне записи транзакцій.
У заголовку блоку міститься наступна інформація:
Для розуміння нам важливі хеші в заголовку.
Сам хеш-код заголовка блоку # 8202; - # 8202; це і є те, що пов'язує попередній блок з подальшим в ланцюжку блокчейна. Він записується як хеш-код попереднього блоку в заголовок наступного.
Також в заголовку зберігається хеш-код транзакцій поточного блоку. Він підраховується з використанням алгоритму, відомого, як дерево Мёркла (Merkle tree) або бінарне дерево хеш.
Працює це так:
- Спочатку вважаються хеші всіх транзакцій в блоці.
- Потім вважаються хеші від суми хеш пар транзакцій.
- Далі вважаються хеші від суми одержані пар хеш і далі за такою ж схемою, поки не вийде один єдиний хеш-код # 8202; - # 8202; він і буде хешем транзакцій в блоці.
Тут слід врахувати, що оскільки дерево бінарне (підрахунок йде парами), то на кажом кроці має бути парне число елементів. Тому якщо, на якомусь етапі виходить непарна кількість хеш, то останній просто дублюється для отримання пари.
Саме заголовки дозволяють відслідковувати цілісність вмісту самих блоків.
Тепер перейдемо до власне вмісту (Payload) блоку ...
Як вже говорилося раніше, в блокчейн біткоіни записуються транзакції. Власне сама транзакція має вигляд:
Насправді транзакція, записана в блок блокчейна, складніше, оскільки протокол біткоіни оперує такими поняттями, як Входи (Inputs або In) і Виходи (Outputs або Out).
Тому в біткоіни нова транзакція через Входи (один або кілька) посилається на Виходи (один або кілька) попередніх транзакцій і формує Виходи (також один або кілька) для використання в наступних транзакціях.
Власне структура записи транзакцій в блокчейне біткоіни містить:
- кількість використовуваних входів;
- хеш-код і індекс кожного Входу, а також службова інформація;
- кількість використовуваних Виходів;
- суми Виходів, а також службова інформація;
- мітка часу транзакції.
Можливість вказати відразу кілька Виходів в транзакції # 8202; - # 8202; це дуже важлива річ, тому що транзакцію (точніше # 8202; - # 8202; її Вихід) можна використовувати як Вхід тільки один раз і тільки цілком.
Попередні статті за темою «біткоіни за 5 хвилин»: