July 20, 2024

Пояснення блокчейна за 7 кроків - просто і доступно

У 2017 році, коли після довгих років затишшя дух Біткойна стрімко вирвався з пляшки, ціна на ньогораптово різко підскочила з 1000 до майже 20000 доларів. Багато людей заново відкрили себе як «професійні крипто-трейдери».

Так, за короткий період можна було заробити велику купу грошей. Але давайте подивимося правді у вічі — ця «вечірка» закінчилася.

Графік ціни біткойнов з жовтня 2013 по жовтень 2018 року. : Coinmarketcap.com.

Навіть незважаючи на те, що кров у людей завирувала від надлишку адреналіну в основному через гроші, насправді саме технологія передусім підштовхнула розвиток подій. І ця технологія,блокчейн, Все ще може містити в собі величезнийпотенціал. Можливо, зараз саме час для бізнес-розробників, підприємців і просто цікавляться осіб примкнути до натхненним послідовникам блокчейна і розділити їх ентузіазм. Але для подібного натхнення в першу чергу потрібно краще розуміння того, як ця технологія працює. На жаль, більшість з існуючих на сьогоднішній день пояснень або пересичені складним технічним жаргоном, або в значній мірі поверхневі і не містять вичерпної інформації. Жодне з них не надає нам чіткого і ясного розуміння технології блокчейна. Отже, з чого ж почати? Дозвольте мені запропонувати вам почати прямо з цієї статті. Вона займе десять-п'ятнадцять хвилин вашого часу, але натомість розкриє питання, що ж вважається настільки революційним і фундаментальним в технології блокчейна. Повірте, це буде коштувати витраченого часу. Приємного читання!

Що за штука така цей Блокчейн?

Насамперед, блокчейн (англ. «blockchain», «block» – блок, «chain» – ланцюг) – це концепція зі світу інформаційних технологій, що є способом зберіганняданих. Ці дані надходять в блокчейн у вигляді блоків,тому, уявіть собі блоки цифрових даних. Блоки зв'язуються один з одним на кшталт ланок ланцюжка, тим самим роблячи дані в них захищеними від змін. Коли блок пов'язаний з іншими блоками, дані, що знаходяться в ньому ніколи більше не можуть бути змінені. Цей блок буде у відкритому доступі в тому ж самому вигляді, в якому він був спочатку доданий в блокчейн, якщо раптом хтось захоче його знову коли-небудь переглянути. Це вельми революційно, тому що дозволяє вести облік практично всього, про що тільки можна подумати (ось вам кілька прикладів: права власності, посвідчення особи, баланс грошових коштів, медичні записи), без ризику того, що хтось зможе сфальсифікувати ці записи. Припустимо, якщо прямо зараз я куплю будинок і додам фотографію прав власності на нього в блокчейн, я відтепер і в будь-який момент в майбутньому зможу довести, що в якийсь період часу я володів правами власності на цю нерухомість. Ніхто не може змінити цю інформацію після того, як вона була додана в блокчейн (ладно, будемо відвертими, насправді такий спосіб існує, але це досить просунутий матеріал, тому я пропоную ознайомитися з ним пізніше, наприклад, тут і тут). Отже, блокчейн - це один із способів зберігати дані і захистити їх, зробивши їх незмінними. Звучить чудово, чи не так? Але головне питання, зрозуміло, полягає в наступному - як все це працює?

Крок 1 & # 8212; Дані транзакції

Добре, давайте почнемо з того, що для прикладурозглянемо блокчейн біткойнов. Він є найстарішим існуючим блокчейном. Кожен блок в ньому складається з приблизно 1 мегабайта (Мб) даних. На момент написання цієї статті біткойнов-блокчейн налічував близько 525 тисяч блоків, або іншими словами, що в ньому містилося приблизно 525000 Мб даних. Блоки даних в блокчейне біткойнов складаються виключно з транзакційних даних операцій з біткойнов. Це величезна записана історія всіх коли-небудь зроблених транзакцій з бікойнамі, аж до самої першої угоди. У цій статті ми припустимо, що в блокчейне зберігаються дані транзакцій, за аналогією з блокчейном біткойнов.

Крок 2 & # 8212; Приєднання блоків до ланцюжка (з хешем)

Уявіть собі купу блоків з даними транзакцій.

</ P>

На цьому малюнку ми бачимо три блоки, що містятьдеякі дані різних транзакцій. Поки начебто нічого особливого. Ці блоки можна порівняти з окремими текстовими документами, в яких просто описується, які відбувалися транзакції, і як це відбилося на балансах конкретних рахунків. «Документ 1» буде описувати найперші здійснені транзакції з сумарним об'ємом даних до 1 Мб в хронологічному порядку, в той час як наступні транзакції обсягом від 1 Мб до 2 Мб, будуть записані в «Документ 2», і так далі. Ці документи якраз і є тими самими блоками даних. Потім блоки зв'язуються один з одним (іншими словами - з'єднуються в ланцюжок). Для того, щоб таке з'єднання відбулося, кожен блок отримує унікальну (цифрову) підпис, яка в точності відповідає рядку даних в цьому блоці. Якщо всередині блоку відбуваються які-небудь зміни, навіть якщо змінюється всього лише один символ, цей блок отримає нову цифрову підпис. Як це працює? Це досягається шляхом хешування даних, яке ми докладно розглянемо трохи пізніше в кроці 3.

Припустимо, що в блок 1 записуються двітранзакції, транзакція 1 і транзакція 2. Уявіть, що дані цих транзакцій займають 1 Мб дискового простору (в дійсності, зрозуміло, в 1 Мб можна записати набагато більше транзакцій). Цей блок тепер отримує цифровий підпис для цієї конкретної рядки даних. Нехай таким підписом буде, наприклад, «Х32». І ось як це буде виглядати:

</ P>

Запам'ятайте, що зміна навіть одного символу вблоці 1 викличе присвоєння цього блоку абсолютно інший підписи! Дані з блоку 1 потім приєднуються до блоку 2 через додавання цифрового підпису блоку 1 до даних блоку 2. Тепер підпис блоку 2 частково складається з підпису блоку 1, так як вона включена в рядок даних в блоці 2. Ось як це виглядає:

</ P>

Підписи пов'язують блоки один з одним, утворюючи з них ланцюжок блоків. Давайте уявимо картину додавання нового блоку - блоку 3 - до існуючому ланцюжку блоків. Це виглядає наступним чином:

</ P>

Тепер уявімо, що дані в блоці 1 змінені. Припустимо, що транзакція між Деміеном і Джорджем підроблена, і тепер Деміен нібито відправив Джорджу 500 біткойнов замість 100. Рядок даних в блоці 1 зараз інша, що означає, що цей блок також отримає нову підпис. Цифровий підпис «Х32» більше не відповідає нових даними в блоці 1. Нехай для прикладу нової підписом стане «W10». І ось що ми маємо в результаті:

</ P>

Підпис «W10» більше не відповідає тійпідписи, що була раніше додана в блок 2. Блоки 1 та 2 тепер вважаються не пов'язаними один з одним. Для інших користувачів блокчейна ця подія є сигналом, що якісь дані в блоці 1 були змінені. А так як блокчейн повинен бути незмінним, вони відкидають це зміна шляхом повернення до попереднього стану блокчейна, в якому все блоки все ще були сполучені один з одним в ланцюжок (той запис, де Деміен відправив Джорджу 100 біткойнов). Єдиним варіантом, при якому зміна в блокчейне може залишитися ніким непоміченим, буде той, при якому всі блоки залишаться пов'язаними один з одним. Значить, для того, щоб зміна не було виявлено, нова підпис блоку 1 повинна замінити собою стару в даних блоку 2. Але, якщо дані в блоці 2 зміняться, це також спричинить за собою зміни підпису блоку 2. Припустимо, що нової підписом блоку 2 буде «PP4» замість «9BZ». І що ми отримаємо в результаті? А отримаємо наступну ситуацію - блоки 2 і 3 більше не будуть пов'язані один з одним!

</ P>

Будь-який бажаючий може ознайомитися з вмістомблоків в блокчейне. Таким чином, якщо передбачається, що зміна в блокчейне має пройти ніким непоміченим, все блоки повинні залишатися правильно з'єднаними між собою в ланцюжок (в іншому випадку люди зможуть зрозуміти, що щось не так, і деякі блоки не пов'язані між собою належним чином ). Це означає, що зміни одного блоку зажадає створення нової підписи для кожного наступного за ним блоку, і так до самого кінця ланцюжка. На практиці таке майже неможливо. Для того, щоб зрозуміти чому це практично неможливо, вам потрібно дізнатися, як створюються підпису.

Крок 3 & # 8212; Як створюється цифровий підпис (хеш)

Отже, давайте знову уявімо собі якийсь блок -блок 1. У цьому блоці записана тільки одна єдина транзакція. Томас відправляє 100 біткойнов Девіду. Ця конкретна рядок даних тепер вимагає цифрового підпису. У блокчейне такий підпис створюється за допомогою криптографічного хеш-функції. В її основі лежить дуже складна формула, яка бере будь-який рядок введення і перетворює її в унікальну 64-розрядну рядок виводу. Наприклад, ви можете вставити слово «Jinglebells» в цей онлайновий генератор хеш (є й інші варіанти алгоритмів хешування, але ми скористаємося цим для даного конкретного прикладу), і ви побачите, що в результаті перетворення на виході для цієї конкретної рядки даних хеш-сума буде представляти із себе наступний рядок:

761A7DD9CAFE34C7CDE6C1270E17F773025A61E511A56F700D415F0D3E199868

Якщо при введенні змінити хоч один символ,наприклад, додавши пробіл, або змінивши велику літеру або додавши крапку, то результат буде зовсім іншим. Якщо ви додасте точку в кінці цього слова і напишете «Jinglebells.», То отримаєте на виході для цієї конкретної рядки вже таку хеш-суму:

B9B324E2F987CDE8819C051327966DD4071ED72D998E0019981040958FEC291B

Якщо знову прибрати точку, то ми отримаємо точно ту ж рядок, що і раніше:

761A7DD9CAFE34C7CDE6C1270E17F773025A61E511A56F700D415F0D3E199868

Алгоритм хешування криптографічногохеш-функції буде завжди видавати один і той же результат, до тих пір, поки вхідні дані не зміняться. Отже, при зміні вхідних даних результат обробки даних буде іншим. Криптографічний хеш-функція використовується біткойнов-блокчейном для створення цифрових підписів блоків. У цьому випадку в якості вхідних даних використовується вміст блоку, а вихідними даними якраз і є відповідна йому цифровий підпис. Давайте ще раз глянемо на блок 1. Томас відправляє 100 біткойнов Девіду.

</ P>

Припустимо, що рядок даних цього блоку виглядає наступним чином:

Block 1 Thomas -100 David +100

Якщо ввести цей рядок даних в алгоритм хешування, то на виході хеш (підпис) буде виглядати так:

BAB5924FC47BBA57F4615230DDBC5675A81AB29E2E0FF85D0C0AD1C1ACA05BFF

Цей підпис потім додається до даних блоку 2. Припустимо, що тепер Девід переводить 100 біткойнов Джимі. Блокчейн тепер виглядає наступним чином:

</ P>

Рядок даних блоку 2 виглядає як:

Block 2 David -100 Jimi +100 BAB5924FC47BBA57F4615230DDBC5675A81AB29E2E0FF85D0C0AD1C1ACA05BFF

Якщо введемо ці дані в генератор хеш, то на виході отримаємо такий підпис:

25D8BE2650D7BC095D3712B14136608E096F060E32CEC7322D22E82EA526A3E5

Таким чином ми отримали підпис для блоку 2. Криптографічний хеш-функція використовується для створення цифрових підписів для кожного унікального блоку. Існує велика різноманітність хеш-функцій, але в блокчейне біткойнов як хеш-функції використовується алгоритм хешування SHA-256. І яким же чином ці цифрові підписи можуть перешкодити будь-кому просто додати нову підпис в кожний наступний блок, після зміни одного з них (така зміна не буде ніким виявлено, але за умови, що всі блоки залишаться пов'язаними належним чином, і люди його просто не помітять)? Відповідь полягає в тому, що блокчейном приймаються виключно хеші (підписи), що задовольняють певним вимогам самого блокчейна. Це контролюється процесом Майнінг, пояснення якого наводиться в кроці 4.

Крок 4 & # 8212; Коли підпис відповідає вимогам, і хто підписує блоки?

Справа в тому, що підпис не завжди відповідаєвимог. Блок буде приєднаний до блокчейну тільки за умови, що його підпис починається, наприклад, з деякої кількості нулів, що йдуть поспіль. Для пояснення цього прикладу, припустимо, що тільки блоки, підписи яких починаються щонайменше з десяти нулів є придатними для додавання в блокчейн. Однак, як пояснювалося в кроці 3, кожен рядок даних має тільки один пов'язаний з нею унікальний хеш. А якщо підпис (хеш) блоку не починається з десяти нулів? Що ж, для того, щоб підібрати блоку підпис, який задовольняв би вимогам блокчейна, рядок даних блоку повинен бути неодноразово змінений, поки хеш-функція не видасть підпис, що починається з десяти нулів. Оскільки дані транзакції та її метадані (номер блоку, тимчасова мітка тощо) повинні залишатися незмінними, до кожного блоку додається невеликий спеціальний фрагмент даних, з єдиною метою знаходження підпису шляхом багаторазового його зміни. Цей фрагмент даних блоку називається «нонс» (nonce) або код, що одноразово використовується. Nonce являє собою абсолютно випадковий рядок зцифр(Примітка:на малюнках показані також інші символи, але одноразовий код може складатися тільки з цифр). Підсумовуючи щойно наведене пояснення – блок тепер містить таку інформацію: 1) дані транзакції, 2) підпис попереднього блоку і 3) nonce (одноразовий код). Процес багаторазової зміни одноразового коду і хешування даних блоку для підбору відповідного критерію підпису, що відповідає відповідним критеріямМайнінг, а тих, хто займається майнінгом -Майнер. Майнер витрачають електроенергію у виглядіобчислювальної потужності, постійно змінюючи склад блоку (nonce) і хешіруя його, поки не знайдуть відповідні вихідні дані (підпис). Чим більше обчислювальних потужностей знаходиться в їх розпорядженні, тим швидше вони зможуть хешірованного різні композиції блоків, і тим більша ймовірність того, що вони швидше за інших знайдуть відповідну підпис. Це своєрідний метод проб і помилок або «метод наукового тику». Вищеописаний процес можна проілюструвати наступним чином:

ПРИМІТКА: Nonce повинен бути числом.

Будь-який користувач в мережі блокчейна може взяти участь в цьому процесі, завантаживши та запустивши відповідне програмне забезпечення для Майнінг в цьому конкретному блокчейне.

По завершенню всіх необхідних приготувань,користувач просто використовує свої обчислювальні потужності, щоб спробувати вирішити nonce для блоку. Ось приклад блоку транзакцій, який недавно був доданий в блокчейн біткойнов - блок п'ятсот двадцять одна тисяча чотиреста сімдесят сім:

: Blockchain.com (оглядач блокчейна)

Як ви можете помітити, хеш (підпис) цього блокуі хеш попереднього блоку обидва починаються з декількох нулів. Подібний хеш знайти нелегко, для цього будуть потрібні великі витрати обчислювальної потужності і часу або тонна удачі. Так, інколи трапляється так, що Майнер неймовірно щастить, і він знаходить відповідну підпис, використовуючи дуже малі обчислювальні потужності і за лічені хвилини. Надзвичайно рідкісний приклад такої події стався зовсім недавно з блоком 523034. Якийсь невеликий майнер зі слабкими потужностями за дуже короткий термін знайшов необхідну підпис, в той час як всі інші Майнер в сукупності мали обчислювальних потужностей в 7 трильйонів разів більше. Для порівняння, шанси на виграш джекпоту в лотереї Powerball складають один з 292 мільйонів. А це означає, що виграти джекпот в лотереї Powerball в 24000 разів простіше, ніж було для цього Майнера перемогти в змаганні по знаходженню хеша проти всіх інших учасників мережі. А ви говорите про кількість якихось нулів. У будь-якому випадку, з цієї глави важливо почерпнути, що знайти підходящу підпис для блоку дуже складно.

Крок 5 & # 8212; Як це сприяє непорушності блокчейну?

Як було описано вище у кроці 3, зміна блокувід'єднає його від інших блоків у ланцюжку. Для того щоб змінений блок був прийнятий рештою мережі, його необхідно знову прикріпити до наступних блоків. Розумієте, чого це веде? Як уже пояснювалося раніше, для цього потрібно, щоб кожен блок, який слідує за зміненим, отримав новий підпис. І цей підпис має відповідати вимогам блокчейну! Надання всім наступним блокам нових підписів є дуже дорогим процесом, що потребує великих тимчасових витрат, хоч і не здається чимось нездійсненним.  У будь-якому випадку таке все одно вважається неможливим, і ось чому:

Припустимо, що один нечистий на руку майнерзмінив якийсь блок транзакцій і тепер намагається підібрати нові підписи для наступних блоків, щоб решта мережі прийняла зроблену ним зміну. Для нього проблема полягає в тому, що решта учасників мережі блокчейну в цей же час теж обчислює нові підписи для нових блоків. Майнер-шахрай також буде змушений підбирати для цих блоків нові хеші в міру їхнього додавання до кінця ланцюжка. Як-не-як, йому доведеться не допускати розриву ланцюжка і зберігативсі блокипов'язаними один з одним, включаючи постійнонові блоки, що додаються. Якщо майнер не матиме обчислювальних потужностей, що перевищують потужності всієї решти мережі разом узятої, він ніколи не наздожене решту мережі з пошуку підписів.

</ P>

Мільйони користувачів займаються майнінгом ублокчейне Біткойна, внаслідок чого можна припустити, що жоден зловмисник або якась організація в мережі ніколи не матиме більшої, ніж сукупна потужність решти учасників мережі, обчислювальної потужністю. Іншими словами, мережа ніколи не прийме жодних змін у блокчейн, роблячи блокчейннепорушним. Після того, як дані були додані вблокчейн, їх вже ніколи не можна змінити. Однак є один виняток. А що якщо у зловмисника більше обчислювальних потужностей, ніж у всій решті мережі разом взятої? Так, теоретично таке можливо. Це називається «атакою 51%» (докладніше про цю уразливість можна прочитати в цій статті і ще тут), і в минулому вона відбувалася на різних блокчейнах. Насправді ж, атака 51% на блокчейн біткойнов зажадає набагато більших витрат, у порівнянні з очікуваним прибутком від здійснення такої атаки. Подібна операція зажадає не просто величезної кількості апаратного забезпечення, охолоджуючого устаткування і місця для розміщення всієї цієї обчислювальної потужності, але також пов'язана з ризиком судового переслідування, і, що ще більш важливо, може кардинальним чином нашкодити екосистемі самого блокчейна, що призведе до значного зменшення потенційної прибутку через різке падіння ціни біткойнов. Спроба проведення атаки 51% порівнянна на практиці з битвою проти всіх інших користувачів даного блокчейна поодинці. Це також є причиною того, що чим більше користувачів беруть участь в процесі Майнінг, тим надійніше захищеним стає блокчейн.

Вітаю з тим, що ви все ще тут! Сподіваюся, тепер ви розумієте, чому (великий) блокчейн вважається непорушним. Однак тепер назріває одне важливе питання - як запобігає додавання Майнер пошкоджених блоків в блокчейн (наприклад, сфальсифікованих транзакційних даних)? Це блокується на технічному рівні, докладніше про транзакції в блокчейне можна прочитати в цій статті.

Крок 6 & # 8212; Як регулюється блокчейн? Хто встановлює правила?

Біткойн-блокчейн слід демократичної моделіуправління і тому оновлює свій запис історії транзакцій (і, отже, баланси біткойнов) відповідно до того, що більшість його користувачів вважає істиною. Протокол блокчейна робить це автоматично, завжди дотримуючись записи найдовшого ланцюжка блоків з наявних, так як він припускає, що цей ланцюжок представлена ​​більшістю. Зрештою, потрібні обчислювальні потужності більшості, щоб створити найдовшу версію блокчейна. З цього ж самому принципу автоматично відхиляється змінений блок більшістю учасників мережі. Велика частина мережі автоматично відхиляє змінений блок, тому що він більше не пов'язаний з найдовшою ланцюжком в блокчейне.

У блокчейне біткойнов вся історія транзакцій ібаланси гаманців є загальнодоступною інформацією (blockchain.info). Будь-який бажаючий може переглянути будь-який гаманець або транзакцію, яка коли-небудь відбувалася аж до самої першої досконалої транзакції (3 січня 2009 року). Хоча баланси гаманців можуть бути перевірені ким завгодно у відкритому доступі, власники ці гаманців залишаються в основному анонімними. Ось приклад гаманця, все ще містить 69000 біткойнов, що становило на момент написання статті порядку 500 мільйонів доларів США. Останній раз він використовувався в квітні 2015 року, але з тих пір ніякої активності з ним не спостерігалося.

Фінальний крок, крок 7 &#8212; А що щодо криптовалют?

Криптовалюти – це, по суті, змінена формаБіткойна. Більшість криптовалют будуються на підставі своїх власних протоколів блокчейну, правила яких можуть відрізнятися від блокчейна Біткойна. Біткойн замислювався яквалюта, Тобто він явно повинен функціонуватив ролі грошей. Monero - це криптовалюта з тією ж функцією, але в її протоколі блокчейна реалізовані деякі додаткові правила, які роблять її більш конфіденційність валютою (транзакції в блокчейне Monero відстежувати набагато складніше). Криптовалюта, тим не менш, може бути присвоєна будь-яка форма цінності, в залежності від їх емітента. Їх також можна назвати «токенами». Такі маркери можуть надавати своїм власникам право на «щось», починаючи від ігрової ліцензії або доступу до соціальних мереж і закінчуючи доступом до ресурсів типу електроенергії або води, в загальному, всього і не перерахувати. Токені «криптовалюта» можна призначити цінність абсолютно будь-якого роду. Всі транзакції з криптовалюта реєструються на різних блокчейнах і вони можуть бути обмінені онлайн через кріптовалютние біржі і майданчики p2p-обміну, такі як, наприклад, HodlHodl. Це нові гроші інтернету. Хорошим прикладом галузі економіки, на яку вони суттєво вплинути, є фондові ринки. Існує велика ймовірність того, що в майбутньому акції компаній та інші права власності будуть враховуватися у вигляді токенов в блокчейне. Але застосування блокчейнов аж ніяк не обмежується тільки реєстрацією матеріальних цінностей у формі токенов. Блокчейни також володіють можливостями вести безпечний облік даних, таких як медичні записи, посвідчення особи, історичні відомості, податкові записи і багато чого, багато чого іншого. Ось тому технологія настільки об'ємна, а я ще навіть не згадав децентралізацію (ще один з найбільш значущих аспектів блокчейна).

</ P>

&nbsp;

&nbsp;