Перейти до основного вмісту

Блокчейн 101: візуальна демонстрація

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

Date published: 13 листопада 2016 р.

Візуальна демонстрація Андерса Браунворта (Anders Brownworth) про те, як працює технологія блокчейн, включаючи покроковий огляд, що охоплює хешування SHA-256, блоки, майнінг, блокчейни, розподілені реєстри, токени та багато іншого.

Ця стенограма є доступною копією оригінальної стенограми відео (opens in a new tab), опублікованої Андерсом Браунвортом. Її було злегка відредаговано для зручності читання.

Хеш SHA-256 (0:01)

Це демонстрація блокчейну. Ми зробимо це дуже наочно — ми зробимо це дуже простим для розуміння, крок за кроком розглядаючи ключові елементи того, чим є блокчейн.

Перш ніж ми почнемо, нам потрібно поглянути на таку річ, як хеш SHA-256. Хеш виглядає як набір випадкових чисел, і по суті це відбиток якихось цифрових даних. Так сталося, що це відбиток усього, що я вводжу в це поле. Якщо я введу своє ім'я «Anders» у це поле, ви побачите, що хеш змінився. Насправді він змінювався щоразу, коли я вводив літеру.

Отже, це хеш імені «anders», написаного малими літерами — він починається з 19ea. Якщо я видалю це і знову введу «anders», ви побачите, що він починається з 19ea — абсолютно такий самий хеш. У цьому сенсі це цифровий відбиток цих даних. Які б дані тут не були, щоразу, коли ви вводите абсолютно ті самі дані, ви отримуєте абсолютно такий самий хеш.

Я можу ввести все, що завгодно. Ви можете нічого не вводити — e3b0 — це хеш нічого. Або ви можете ввести безліч інформації. Насправді ви могли б помістити сюди Бібліотеку Конгресу, і ви б отримали хеш. Найцікавіше те, що незалежно від того, чи є там крихітний обсяг інформації, чи немає інформації взагалі, чи це вся Бібліотека Конгресу, ви завжди отримаєте хеш саме такої довжини. Ви не зможете заздалегідь вгадати, яким він буде — вам потрібно ввести дані, щоб дізнатися, яким є хеш, але ви завжди отримуватимете абсолютно однаковий хеш незалежно від того, скільки разів ви вводите абсолютно однакову інформацію.

Блок (2:10)

Тепер я розширю цю ідею хешу до того, що ми назвемо блоком. Блок — це те саме, що й хеш, але розділ даних було розбито на три частини: одна називається «блок» — це просто число, це блок номер 1 — «нонс», який є просто ще одним числом, і потім деякі дані, як і раніше.

Хеш усієї цієї інформації знаходиться ось тут, унизу, і він починається з чотирьох нулів. Це відносно незвичний хеш — більшість із них не починатимуться з чотирьох нулів. Але цей починається, і оскільки це так, я абсолютно довільно скажу, що цей блок є «підписаним».

Що станеться, якщо я зміню будь-яку частину цієї інформації? Скажімо, я введу щось тут — хеш зміниться, і яка ймовірність того, що він починатиметься з чотирьох нулів? Досить низька. Я просто напишу «hi» — подивіться, цей хеш не починається з чотирьох нулів, а фон став червоним. Тож тепер ви знаєте, що цей блок із цією інформацією не є дійсним або підписаним блоком.

Ось тут і з'являється нонс. Нонс — це просто число, яке ви можете встановити, щоб спробувати знайти значення, яке змусить хеш знову починатися з чотирьох нулів. Я міг би сидіти тут цілий день, вводячи числа, але в мене є ця маленька кнопка «Mine» (Майнити). Коли я її натисну, вона перебере всі числа від 1 і вище, щоб спробувати знайти те, де хеш починається з чотирьох нулів. Цей процес називається майнінгом.

Він зупинився на 59 396 — і саме це число дає хеш, який починається з чотирьох нулів. Це задовольняє моє визначення того, що таке підписаний блок.

Блокчейн (5:16)

Отже, чи можете ви сказати мені, що таке блокчейн? Ймовірно, це просто ланцюг із цих блоків. Ось мій блокчейн — блок номер один має нонс, як і раніше, область даних, але також він має це поле «previous» (попередній), яке складається з купи нулів. Рухаючись далі, це блок два, блок три, блок чотири — цей блокчейн складається з п'яти блоків.

Поле «previous» для кожного блоку — це хеш попереднього блоку. Ви можете бачити, що кожен блок вказує назад на той, що був перед ним. Цей перший блок не має попереднього, тому це просто купа нулів.

Що станеться, якщо я зміню тут якусь інформацію? Це змінить хеш цього блоку і зробить його недійсним. Але що, якщо я зміню щось у більш ранньому блоці? Це змінить той хеш, але цей хеш копіюється в поле «previous» наступного блоку, тому це ламає обидва блоки. Ми можемо повернутися настільки далеко в минуле, наскільки захочемо, і зламати той блок, і це зламає всі блоки після нього. Усе, що було до нього, залишається зеленим, але все, що після, стає червоним.

Якщо я зміню останній блок, усе, що мені потрібно зробити, це перемайнити цей один блок. Якщо я повернуся далеко в минуле і зроблю зміну, мені доведеться майнити цей, цей, цей і цей. Чим більше блоків проходить, тим важче і важче внести зміни. Саме так блокчейн протистоїть мутаціям — протистоїть змінам.

Розподілений блокчейн (9:18)

Тож як мені дізнатися, чи був мій блокчейн перемайнений? Тепер у нас є розподілений блокчейн. Він виглядає точно так само, як і попередній блокчейн, але це Пір A. Якщо ви спуститеся сюди, ви побачите Піра B, і він має точну копію блокчейну. Також є Пір C — це може тривати нескінченно. В інтернеті є багато пірів, і всі вони мають повну копію блокчейну.

Якщо я подивлюся на цей хеш, це e4b. Якщо я перейду до наступного, він також має e4b. Вони мають бути ідентичними. Тепер, якщо я перейду сюди і введу щось, перемайню цей блок, а потім майнитиму наступні блоки — усі ланцюги зелені. Однак цей ланцюг каже, що останній хеш — e4b, нижній також каже e4b, а цей середній каже 4cae.

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

Блокчейни можуть дуже легко мати 400 000 або 500 000 блоків. Замість того, щоб перевіряти їх усі, вам насправді потрібно лише подивитися на хеш найостаннішого з них, і ви зможете побачити, чи було щось змінено в минулому.

Токени (12:17)

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

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

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

Одне, що я хотів би зазначити: ми не вказуємо «Дарсі має сто доларів і він дає 25 Бінглі». Ми запам'ятовуємо лише рух грошей, а не баланси банківських акаунтів. Це викликає запитання — чи є у Дарсі 25 доларів?

Транзакція Coinbase (14:34)

У цій версії блокчейну в нас є проблема: ми насправді не знаємо, чи є у Дарсі 25 доларів. Тож давайте поглянемо на транзакцію Coinbase. Ми додаємо транзакцію Coinbase до наших блоків — вона каже, що ми збираємося створити сто доларів з повітря і віддати їх Андерсу. У цьому блоці немає інших транзакцій, тому що до цього ні в кого не було грошей.

У наступному блоці ще сто доларів з'являються нізвідки і йдуть до Андерса. Тепер у нас є кілька транзакцій — усі вони від Андерса, тому що на даний момент я єдиний, у кого є гроші. Я відправляю десять своїх доларів Софі. Чи є у мене десять доларів? Так — я дивлюся назад і бачу, що транзакція Coinbase дала мені сто, тому в мене є принаймні десять.

Ви додаєте все це, і сума не перевищує ста. Це відповідає базовому правилу валюти: ви не можете створювати гроші з повітря, і їх розподіл контролюється.

Якщо ми перенесемося вперед у часі, то побачимо, що Джексон дає Алексі два долари. Чи дійсно у Джексона є два долари? Ми повертаємося на блок назад і бачимо, що Емілі отримала десять доларів від Андерса і віддала десять Джексону. Отже, у Джексона є гроші. Ми можемо повернутися назад і з'ясувати це — це одна з переваг наявності поля «previous».

Завершення (16:30)

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

Блокчейни — це дуже ефективний спосіб досягнення згоди щодо того, що сталося в минулому — цієї незмінної історії, яка записується з часом. Ми побіжно розглядаємо деякі основні моменти, але якщо ви заглибитеся в демонстрацію, проклацаєте ці речі та пограєтеся з нею, ви отримаєте все краще і краще уявлення про те, як це працює.

Ця сторінка була корисною?