Саме зрозуміле пояснення принципу роботи блокчейна

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

Однак пояснити те, як працює блокчейн (і сам біткоіни), до сих пір непросто. На «лепрозорій» спробували в черговий раз показати на пальцях принцип роботи блокчейна, і, здається, у користувача sleep вийшло зробити це максимально наочно - у вигляді історії про Колі, провідному щоденник, і Васі, який цей щоденник намагається підробити.

Блокчейн - це щоденник, який майже неможливо підробити

Дійові особи: Коля, Вася, таджики і Люда (в епізодах).

Коля вирішив вести щоденник. Для цього він завів зошит і почав писати там рядки на кшталт таких:

1. Купив хліба
2. Подзвонив Геннадію
...
132. Дав Васі в борг 100 рублів
133. Трахкав Люду
134. покакалі

Він дуже старався вести щоденник чесно, і якщо у нього з кимось виникав спір про щось, що сталося раніше, він діставав його і тикав усім носом в свої записи. Одного разу Коля сильно посперечався з Васею на тему того, чи давав він Васі в борг 100 рублів чи ні. У момент спору у Колі не було з собою щоденника, але він обіцяв завтра ж принести і все показати Васі.

Вася вирішив не спокушати долю, пробрався до Колі в будинок, знайшов щоденник, долістал до рядка 132 і замінив її на «Трахкав Олю». На наступний день Коля дістав щоденник, довго шукав у ньому запис про борг Васі, не знайшов і прийшов вибачатися.

Пройшов рік, Васю замучила совість, і він зізнався у всьому Колі. Коля пробачив друга, але вирішив на майбутнє використовувати якусь більш надійну систему запису, яку не можна було б так просто підробляти.

Придумав він наступне. У себе в операційній системі «Лінупс» він знайшов програму md5sum, яка брала будь-який текст і перетворювала його в хеш - 32 незрозумілі цифри. Як саме вона це робила, Коля не розумів, але в цілому здавалося, що вона видавала повну нісенітницю. Наприклад, якщо в програму ввести слово «привіт», вона у відповідь видає «8b4609d7e974702ff1451220c7ededcf». А якщо ввести, здавалося б, майже те ж саме, але з гаком пропуском, то вже «69ab827825fdb876e709abd3d783dbb6».

Почухавши гарбуз, Коля придумав спосіб ускладнити майбутнім Васям заміну записів наступним чином: після кожного запису він вставляв хеш, який виходив, якщо згодувати програмі тему запису і минулий хеш. Новий щоденник виходив таким:

0000 (початковий хеш, обмежимося для простоти чотирма знаками)
1. Купив хліба
4178 (хеш від 0000 і «Купив хліба»)
2. Подзвонив Геннадію
4234 (хеш від 4178 і «Подзвонив Геннадію»)
...
4492
132. Дав Васі в борг 100 рублів
1010
133. Трахкав Люду
8204 (хеш від 1010 і «Трахкав Люду»)

Якщо тепер якийсь Вася захоче змінити рядок 132, зміниться і хеш цього рядка (він буде не 1010, а чимось іншим). Це, в свою чергу, вплине на хеш рядка «133. Трахкав Люду »(він буде не 8204, а чимось іншим), і так далі до кінця щоденника. Тепер заради однієї записи Васі доведеться підмінити весь щоденник після неї, що складно.

Минув час, Коля відкрив банк. Він все так же писав в дневничок записи «дав в борг» і «взяв в кредит», забезпечуючи їх хешамі. Банк розрісся, і одного разу він дав в борг (вже новому) Васі мільйон. Наступної ночі десять найнятих Васею за півмільйона таджиків пробралися в кімнату Колі, замінили запис «143313. Дав в борг Нового Васі 1000000 »на« 143 313. Дав в борг Нового Васі 10 »і по-швидкому перерахували всі хеші аж до кінця щоденника.

Дивом Коля виявив підміну і, раз така справа, вирішив ускладнити спосіб підробки щоденника: «Тепер, - вирішив Коля, - я буду в кінці кожного запису в дужках додавати яке-небудь число (" НОНС "), а підбирати його буду так, щоб кожен хеш закінчувався на два нуля ». Єдиний спосіб це зробити - тупо перебирати числа, поки не вийде потрібний хеш:

0000 (початковий хеш, обмежимося для простоти чотирма знаками)
1. Купив хліба (22)
4100 (хеш від 0000 і «Купив хліба (22)», 22 було підібрано, щоб хеш закінчувався на 00)
2. Подзвонив Геннадію (14)
3100 (хеш від 4100 і «Подзвонив Геннадію (14)»)
...
1300
132. Дав Васі в борг 100 рублів (67)
9900
133. Трахкав Люду (81)
8200 (хеш від 9900 і «Трахкав Люду (81)»)

Для створення кожного запису Колі тепер в середньому потрібно буде перебрати близько 50 чисел, що трудозатратно. Відповідно, якщо запис хтось підмінить, підробка її та всіх наступних буде теж в 50 разів складніше, а це значить, що тепер Васі навіть з таджиками не впоратися.

Через якийсь час Коля взяв собі партнера і вони стали обидва вести дневничок. Для кожного нового запису обидва одночасно починали підбирати НОНС і той, кому першому вдавалося знайти потрібний, вносив запис. Так як удвох підбирати Нонсо швидше, Коля ускладнив завдання і вимагав, щоб всі хеші кінчалися вже на три нуля, а не на два.

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


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

Маючи такий кльовий дневничок, можна будувати різні цікаві системи. Наприклад, біткоіни. Біткоіни - це дневничок, де кожен запис має вигляд «Передати стільки-то грошей з гаманця Х на гаманець У». Так як дневничок не можна підробити і в ньому зберігається вся історія перекладів, в будь-який момент з нього можна обчислити кількість грошей на кожному гаманці. Ну а щоб в системі взагалі були якісь гроші, біткоіни зроблений так, що кожен запис в дневнічке закінчується словами «Провести Z монет і перевести мені», де «мені» - це той користувач, хто першим «вгадає» НОНС, який забезпечить хеш з потрібною кількістю нулів в кінці.

Поверх дневнічке з деякою кількістю криптографії якої формуються численні додаткові цікаві системи. Наприклад, можна робити записи в дусі «Хто вирішить рівняння f (x) = 14, той отримує 10 монеток». Відповідно, перший запис у дневнічке, де буде надано рішення, може автоматично вважатися одержувачем монеток. Навколо цієї та подібних ідей будуються так звані «контракти».

Варто пам'ятати, що блокчейн - це не більше ніж надійний розподілене дневничок. Ніяких світових проблем, крім тих, які можна вирішити дневнічке, блокчейн нам не вирішить. А ті проблеми, які він вирішить, він вирішить ціною гігават енергії, які зараз витрачаються на підбір «НОНС» - по-великому рахунку, даремно.