Тиждень 41. Blockchain
October 11th, 2021
Блокчейн, біткоїн, криптовалюта — слова, які все частіше можна зустріти в буденному житті. Для когось ці слова мають якесь значення, про них говорять, за ними слідкують, намагаються заробити або ж майнити. Для далеких від теми вони звучать як чудернацькі іноземні назви. Для мене ці слова не були в диковинку і я розрізняв, що блокчейн — це технологія, а біткоїн — криптовалюта, побудована на цій технології. Але що там під капотом я не знав. Ну і захотів розібратись.
Вперше про біткоїн я почув десь у 2014 році. Тоді до нас на тренування ходив один молодик та інколи розказував про деяку криптовалюту, за якою буде стояти майбутнє, нова світова економіка і шлях до персонального збагачення. Він розказував, як його можна майнти і заробляти на цьому. Як ти правильно міг здогадатись, мова йшла про біткоїн. Щоправда, ми це все слухали і сприймали його, як просто дивакуватого хлопця, подекуди навіть кепкували з цього. Сподіваюсь, він сам тоді вірив у свої ідеї й все ж закупив собі біточків і головне, не розтратив за дарма, бо це ще більш прикро.
Отже, що таке блокчейн і яку задачу він вирішує? Зараз постараюсь пояснити на пальцях. Уяви собі зовсім буденну ситуацію: ти захотів переказати гроші зі свого рахунка на рахунок свого товариша. Ти йдеш в банк і просиш менеджера зробити переказ. Він відкриває реєстр з твоїми даними, перевіряє наявну суму і робить переказ. Гроші успішно надходять на рахунок твого товариша. Але, по-суті, ніхто, ніякі гроші нікуди не надсилав. Просто довірена вами третя особа в обличчі менеджера банку змінив реєстр на твоєму рахунку і на рахунку твого товариша. Грубо кажучи, відредагував цифри в супроводі стандартного бюрократичного порядку — документи, скани, заяви і т. д. Тепер переходимо до проблематики. Для того, щоб тобі переказати гроші товаришу треба залучати довірену третю особу, роль якої і виконує банк. Тобто, ви йому довірились розпоряджатись вашими грошима. Ну а він вам дав якісь там гарантії. Але банки часто обманюють, заморожують вклади або й взагалі раптово закриваються. Головний тому приклад розпад СРСР і майже 40 млн ошуканих вкладників зі своїми книжками. Тобто основна проблема — довіра структурам, які часто бувають не надійними.
Що ж таке блокчейн і як він цю проблематику вирішує? Спочатку ремарка: блокчейн — це не завжди про гроші. За допомогою цієї технології можна виконувати будь-які операції, схожі на транзакції, але саме грошові перекази завоювали головну нішу. Уяви собі, що купа людей вирішили відмовитись від посередників і регулювати свої перекази самостійно. В кожного з них є щось на кшталт бланків, в які можна записувати транзакції і поки що пуста тека, куди ці бланки можна буде скласти. Всі учасники цієї структури знають про всі внутрішні транзакції, але не знають адресатів. Тобто, виглядає це як користувач №3 перевів користувачу №9 100 супер коінів. Всі ці транзакції виписуються учасниками в бланк. Оскільки бланки у всіх однакові і всі записують туди кожну транзакцію, то і місце в них закінчиться у всіх разом. Потім всі ці бланки звіряються і запускається процес шифрування. Ось звідси і назва “крипто” у валюті. Існують спеціальні функції, які створюють хеш ключі. Ти передаєш на вхід якісь параметри, а вони на вихід спеціальний заплутаний ключ. Вони не оборотні. Тобто, по отриманим даним ти ніяк не можеш визначити, що прийшло на вхід. Але якщо ти передаєш на вхід один і той же параметр, ти завжди на виході отримаєш той же результат. І єдиним способом дізнатись, що прийшло на вхід — це підбір. В залежності від криптографічної функції на це може знадобитись сотні тисяч, а то й мільйонів операцій. І от тут уже вступає в хід процес, який називається майнінг. Ти, очевидно, про нього чув. І суть його полягає в переборі цих мільйонів вхідних параметрів, щоб одного разу отримати результат, ідентичний заданому. І той, хто перший підбере потрібне значення, розсилає його всім учасникам. Цей ключ перевіряють, якщо все ок, то на бланку ставлять умовну печатку з ним і відправляють в теку. Але в чому ж сенс тратити всім ресурси на пошук вірного ключа, якщо можна просто почекати, допоки хтось один його не віднайде? Річ у тім, що першому, хто розшифрує ключ нараховується плата у розмірі n-коінів цієї валюти не в збиток іншим. Це і є основна мотивація учасників мережі витрачати ресурси на майнінг. Так в систему додаються нові монети і заробити їх стає все важче. Насправді про процес майнінгу і шифрування розказувати довго. І без поглиблення в деталі буде зовсім не просто. Але нам головне знати, що ці хеші створюються з багатьох параметрів, вони дуже складні і для їх обчислення треба мати не аби які обчислювальні ресурси. А ще дуже важлива річ — кожен наступний блок має лінк на хеш попереднього блоку. Таким чином вони зв’язані між собою й утворюють ланцюжок (блок-чейн). Таким чином вся система захищена від зміни даних. Бо в такому випадку зміниться наступний хеш і утвориться нова гілка ланцюжка. Але ніякі потужності одного злочинця не може позмагатися з потужностями решти механізму, а валідною вважається найдовший ланцюг в системі.
Як міг просто розказав про блокчейн. І в рамках цього тижня, для кращого освоєння цього механізму я навіть написав свій власний блокчейн на Javascript. Не те щоб JS був кращою мовою для написання блокчейнів, але зараз я знаю тільки його. І, якщо чесно, нічого складного там нема, як мінімум в моїй реалізації. Звичайно ж, в біткоїні там все набагато складніше і сек’юрніше, але основу я зрозумів.
Я з дитинства звик робити щось руками. В нас вдома було навіть окреме місце, яке називалось майстерня, де батько часто працював з деревом. Робив він дуже прикольні штуки. Подекуди і ми приєднувались та робили щось для себе. Життя у великому місті та робота за комп’ютером не стимулюють працювати руками, тут треба більше головою. Але інколи так хочеться. Тому на наступному тижні постараюсь зайняти руки чимось ще, а не тільки клавішами на клавіатурі.