Blockchain (блокчейн Біткоїну) – розподілена база даних, яка містить інформацію про всі транзакції в системі Біткоїн з початку її запуску 03.01.2009.
Блокчейн знаходиться в певній папці програми Bitcoin Core, тобто утримують блокчейн звичайні люди в різних куточках планети. Блокчейн, як база даних, розподілений по файлах. Якщо змінити інформацію в будь-якому файлі, базу даних буде пошкоджено, в наслідок чого виникне необхідність оновити або всю базу даних або файли зі зміненою інформацією. В протилежному випадку вузли мережі Біткоїн будуть ігнорувати вузел блокчейн якого змінено.
Блокчейн займає обсяг пам’яті близько 140 гігабайт станом на 10.08.2017. Розмір блокчейну постійно зростає, тому, що до нього постійно під’єднуються нові блоки з транзакціями.
Особливістю блокчейна є його структура. Блокчейн можна представити у вигляді ланцюга з пов’язаних один з одним блоків. Блоки містять інформацію транзакцій. Основна властивість цієї структури полягає в тому, що для зміни інформації в блокчейні необхідно виконати колосальну обчислювальну роботу. Зміна інформації в одному блоці, тягне за собою зміну інформації у всіх наступних блоках. А так як створення і додавання кожного блоку до блокчейну вимагає витрат обчислювальної потужності, необхідно перерахувати всі блоки після блоку зі зміненою інформацією, для чого буде потрібно обчислювальна потужність, що перевершує поточну потужність мережі (хешрейт). Якщо блокчейн не відповідає вимогам системи, він відкидається, і вузол завантажує правильну версію блокчейна, яка прийнята більшістю інших вузлів. Завантаження правильної версії блокчейна відбувається з активних вузлів, на зразок системи торрент.
Як формується блокчейн?
Хеш-функція – функція, яка перетворює вихідний рядок довільної довжини і змісту в унікальний рядок певної довжини який складається з цифр і літер латинського алфавіту. Кожному унікальному рядку, відповідає свій унікальний хеш.
В системі Біткоїн використовується хеш-функція SHA-256.
Хеш (хеш-значення) – результат виконання хеш-функції, тобто рядок з цифр і літер певної довжини.
Наприклад, вихідний рядок: Bitcoin
Хеш за SHA-256:
B4056DF6691F8DC72E56302DDAD345D65FEAD3EAD9299609A826E2344EB63AA4
Вихідний рядок: Bitcoen
Хеш за SHA-256:
2090B43C0C9C020DD2395D0C1D486FAAA4564A921F6ED615E718FDC0C7398616
Як бачите, ми змінили в даній стрічці всього лише одну літеру, і хеш рядка істотно змінився.
Вихідний рядок: Bitcoin it’s digital gold
Хеш за SHA-256:
18F46695933E1E1B260EACF891CEF3857833549E70A40000B972E4A8303A05A0
За хешем неможливо відновити зміст початкового рядка. Наприклад, неможливо дізнатися зміст рядка хеш якого:
67D7B5D9C5AD47C23553208CC270B02D08D56874D8458A67C0FCCE216293573E
Блоки, які складають блокчейн, обмежені за обсягом пам’яті з метою забезпечення безпеки системи. Розмір одного блоку має бути не більше 1 мегабайту, з певною долею похибки.
Кожен блок має кілька секцій з даними:
- #1 – номер блоку по порядку;
- Nonce – випадкове ціле число від 1 та більше;
- Data – дані транзакцій які містить блок;
- Хеш попереднього блоку (#0);
- Хеш поточного блоку (#1).
Хеш поточного блоку за SHA-256 обчислюється з таких даних: номер блоку по порядку, випадкове число Nonce, дані транзакцій, хеш попереднього блоку і з деяких інших даних.
Система біткоїн перевіряє, щоб хеш поточного блоку починався з певної кількості нулів. Змінюючи число Nonce по порядку від 1 і далі шляхом перебору, необхідно підібрати таке число, з яким вся інша інформація поточного блоку дасть хеш який починатиметься з певної кількості нулів. Як тільки таке число Nonce знайдено, блок відправляється в мережу Біткоїн, вузлам, які перевіряють його на відповідність вимозі “числа нулів” в поточному хеші, легітимність транзакцій та деякі інші параметри, а також синхронізуються з іншими вузлами системи, щоб перевірити, чи входить даний блок в більшість версій блокчейн інших вузлів. В разі успішної перевірки вузли приєднують блок до власної копії блокчейну. Якщо блок не відповідає навіть одній з вимог, він ігнорується вузлом, а версія блокчейн оновлюється до версії блокчейн яку містить більшість вузлів.
Блоки в блокчейні пов’язані один з одним через хеш попереднього блоку. Хеш поточного блоку – стане частиною даних наступного блоку і так далі за принципом ланцюга.
А тепер уявімо, що хтось змінив інформацію про транзакції з метою шахрайства. Наприклад, змінено суму, яку передано одержувачу з 1 біткоїну на 0,1 біткоїн, або адреса одержувача, або інші дані. Зміна інформації в одному блоці, тягне за собою зміну хеш-значення цього блоку і вимагає підбору числа Nonce, щоб хеш блоку починався з певного числа нулів. Оскільки старий хеш зміненого блоку входив до складу даних наступного за ним блоку, інформація в цьому наступному блоці також зміниться, і так само необхідно буде заново підбирати нове число Nonce вже для наступного блоку, і так далі до останнього актуального блоку. Обчислювальної потужності шахрая необхідні для підбору вірного числа Nonce, для зміненого блоку і всіх наступних блоків повинні перевершувати обчислювальну потужність всіх пристроїв залучених в пошук числа Nonce і формування нового блоку з транзакціями. Тому жоден шахрай не зможе внести зміни в блокчейн системи біткоїнів, бо не зможе перевершити обчислювальну потужність всіх майнерів які працюють над формуванням ланцюга блоків.
Блокчейн є відкритою базою даних, тобто будь-хто може прочитати інформацію про будь-які транзакції записані в блокчейн. Для цього достатньо мати номер біткоїн-рахунків (адресу) або хеш транзакції (не блоку).
Вище ми говорили про блокчейн як про розподілену по файлах базу даних, локалізовану в певній папці програми Bitcoin Core. Копію блокчейну містить кожен вузол системи Біткоїн. Вузли взаємодіють один з одним і синхронізуються, перевіряючи актуальність копій блокчейну. Таким чином сукупність актуальних копій блокчейна, прийнятих більшістю вузлів, складає незалежну, хмарну базу даних – хмарний Блокчейн. Втрата одного або кількох вузлів не знищить цей хмарний Блокчейн. Тому можна говорити про те, що Блокчейн неможливо знищити або внести зміни з метою шахрайства. Маючи доступ до інтернет, ви в будь-який момент зможете скористатися вашими коштами, достатньо мати пристрій зі встановленою на ньому програмою-гаманцем і приватний ключ від вашої біткоїн-адреси.