Знайомтесь, блокчейн — що, чому і як працює в технології

Якщо Ви не ховаєтеся у дрімучому лісі, то, певно, чули про Bitcoin і технологію блокчейн (англ. blockchain). Навіть люди, які ніколи не користувалися криптовалютою або не розуміють, як вона працює, зараз говорять про неї, адже це – тренд. Більшість пояснень у мережі – технічного характеру, і намагаючись зрозуміти, що до чого, пересічний користувач заплутується ще більше. Просте пояснення простими словами для простих людей – в адаптованому перекладі статті Мохіта Маморіа (Mohit Mamoria), опублікованій на LinkedIn.

Чи є потреба у складній системі блокчейн?

Почнемо не з визначення технології блокчейн, а з розуміння проблеми, яку вона вирішує. Уявіть, що Ваш найкращий друг Сашко подорожує за кордоном. На п’ятий день відпустки він телефонує і каже: «Друже, позич трохи грошей. Я все витратив». Ви відповідаєте: «Друже, без проблем. Зараз все зроблю». І телефонуєте своєму менеджеру в банк: «Ольго Андріївно, будь ласка, перерахуйте 10 000 грн з мого рахунка на рахунок Сашка». Ваш менеджер відкриває бухгалтерську книгу (для простоти розуміння ми говоримо про некомп’ютеризовані системи), перевіряє залишок на рахунку, аби дізнатися, чи є у Вас достатньо коштів. Ви – забезпечена людина, тож переказ такої суми – проста справа. Менеджер робить приблизно такий запис у бухгалтерській книзі:

07.08.2017, 11:03
Ви ——————————————Сашко 10 000 грн.

Ви телефонуєте Сашкові та повідомляєте про переказ. Що тільки-но відбулося? І Ви, і Сашко довірили банку управління своїми грошима. Реального руху фізичних векселів для переказу грошей не було. Знадобився лише запис у бухгалтерській книзі. Або точніше – запис у книзі, якою ні Ви, ні Сашко не володієте, і яку ні Ви, ні Сашко не контролюєте. Саме у цьому полягає проблема існуючих систем. Щоб висловити довіру один одному ми залежимо від посередників. Може виникнути питання: «Так у чому ж проблема? Ми залежали від таких посередників роками». Проблема в тому, що їх не так багато. Аби створити хаос у суспільстві, достатньо щоб одна людина/організація зробила помилку, навмисно чи ненавмисно.

Що станеться, якщо та бухгалтерська книга, в яку було занесено запис про переказ, згорить? Що робити, якщо менеджер Вашого рахунку помилково вказав 15 000 грн замість 10 000? Що робити, якщо він зробив це навмисно? Чи може існувати система, у якій можливо переказувати гроші без необхідності звертатися до банку? Замисліться на хвилинку, що означає переказ коштів — це просто запис у бухгалтерській книзі. Чи можна вести книгу самим, а не доручати цю справу посереднику? Відповіддю на це питання і стала технологія блокчейн — спосіб самостійно керувати «бухгалтерською книгою», а не залежати від когось іншого.

Як працює блокчейн

Головна вимога цього методу – повинно існувати достатньо людей, які не хочуть залежати від посередників. Тільки тоді ця група може самостійно вести «бухгалтерську книгу».

«— Якщо ця ідея знайде підтримку, матиме сенс ввести щось типу Bitcoin. Якщо достатня кількість людей мислить однаково, вся справа стає самореалізаційним пророцтвом, — так пояснив суть технології ще у 2009 році Сатоші Накамото (Satoshi Nakamoto), або доктор Крейг Райт (Craig Wright), що називає себе винахідником криптовалюти Bitcoin.»

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

  1. 17_картинка 1Порожня папка. У кожного представника нашої групи є порожня папка. У майбутньому всі ці десять осіб додаватимуть аркуші до своїх порожніх папок. І ця колекція аркушів сформує «бухгалтерську книгу», у якій ведуться записи про грошові перекази.
  2. Грошовий переказ. Всі учасники нашої групи «сидять» з чистими аркушами та ручками. Кожен готовий записати дані будь-якого грошового переказу, що відбувається всередині системи. Припустимо, що учасник №2 хоче відправити 100 грн учаснику №9. Для цього учасник №2 заявляє всім: «Я хочу переказати 100 грн учаснику №9. Будь ласка, зробіть всі відповідний запис у своїх книжках». Всі перевіряють, чи достатньо коштів в учасника №2, щоб переказати 100 грн учаснику №9. Якщо це так, кожен записує дані про переказ на своєму чистому аркуші. Вважається, що переказ здійснено.
  3. Перекази продовжують відбуватися. З часом у більшої кількості осіб з нашої групи виникає потреба переказати гроші іншим і кожного разу вони оголошують про це іншим. Як тільки особа чує про переказ, він/вона занотовує інформацію про нього на своєму аркуші. Так продовжується, поки у кожного учасника групи не закінчується вільне місце на аркуші. Припустимо, що на аркуші достатньо простору, аби записати інформацію про десять переказів. Після десятого переказу в усіх закінчується вільне місце на аркуші і настає час покласти цей аркуш до папки, дістати новий та повторити процедуру, починаючи з пункту 2.
  4. Захист використаного аркуша. Перш ніж ми покладемо аркуш в папку, необхідно «опечатати» його унікальною печаткою, яку погоджують всі учасники групи. Опечатавши аркуш таким чином, ми гарантуємо, що після того, як аркуш потрапив у папку, ніхто і ніколи (не сьогодні, не завтра і не через рік) не може внести до нього жодних змін. Якщо всі учасники групи довіряють печатці, зрозуміло, що всі учасники довіряють змісту аркуша. Саме опечатування аркуша є найважливішим елементом цього методу.

Раніше ми довіряли посереднику, вірили, що все, що посередник записав у бухгалтерській книзі, залишиться без змін. У децентралізованій системі нашого прикладу єдиним гарантом є печатка. Процес «опечатування» аркуша серед професіоналів, що працюють з блокчейн, називається «mining».

«Чарівна машина»

Розглянемо, як відбувається процес опечатування. Уявіть чарівну машину з товстими стінами. Якщо покласти всередину машини зліва скриньку з певним вмістом, то машина видасть нам скриньку справа з іншим змістом.

2

Пристрій зображає роботу функції, яку професіонали, що працюють з блокчейн, називають хешування

Припустимо, ви кладете зліва число 4, а справа машина видає комбінацію букв dcbea. Як машина перетворила число 4 на таку комбінацію? Ніхто не знає. Однак, цей процес – незворотний, тобто з комбінації dcbea не можна вирахувати, що поклали в машину зліва. Але кожного разу, коли Ви будете давати машині число 4, вона завжди віддаватиме комбінацію dcbea. Спробуємо інше число, наприклад, 26. Цього разу ми отримуємо 94c8e. Отже, комбінації на виході можуть бути буквенно-численні.

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

Як машина опечатує аркуш?

Використаємо цю чарівну машину, щоб опечатати аркуш. Уявіть, що у Вас є дві скриньки. У першій міститься число 20 893. Питання: «Яке число треба додати до числа в першій скриньці, щоб при введенні в машину, на виході отримати комбінацію, яка починається з трьох нулів?»
3

Єдиний спосіб з’ясувати це – вводити числа в машину, доки не отримаємо потрібний результат. Скажімо, що після кількох тисяч спроб ми вираховуємо, що це число 21 191. Додавши його до числа 20 893 (21 191 + 20 893 = 42 084), на виході отримаємо комбінацію, яка задовольняє наші вимоги. У такому випадку число 21 191 стає печаткою числа 20 893. Припустимо, що є аркуш з номером 20 893. Щоб опечатати цей аркуш аби ніхто не міг змінити його зміст, ми розмістимо на ньому значок 21 191. Аркуш опечатано, як тільки на нього нанесено номер опечатування.

номер опечатування називається «Proof of Work» (дослівно – «доказ роботи»), тобто цей номер є доказом того, що було докладено зусиль для його обчислення

Номер опечатування називається «Proof of Work» (дослівно – «доказ роботи»), тобто цей номер є доказом того, що було докладено зусиль для його обчислення

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

Примітка: комбінація, що починається з трьох нулів, – це лише спрощений приклад функції хешування. Насправді завдання значно складніші.

Повернімося до нашого приклада. На аркуші записано інформацію про десять грошових переказів і вільного місця більше немає. Необхідно опечатати аркуш, щоб розпочати новий. Учасники групи починають вираховувати номер опечатування і перша особа, якій вдалося вирахувати його, повідомляє цей номер іншим. Кожен учасник перевіряє, чи отримуємо задані вихідні дані при введені номера опечатування та даних аркуша в чарівну машину. Якщо номер вірний, всі учасники групи маркують ним свої аркуші та складають кожен у свою папку. Що станеться, якщо №7 при введенні номера опечатування не отримає заданий результат? Можливі причини:

  • особа допустилася помилки при введенні даних грошових переказів, які були оголошені в групі;
  • особа навмисно ввела помилкові дані на свою користь чи на користь когось іншого в групі.

Незалежно від причини, у №7 є лише один вихід – викинути свій аркуш і скопіювати дані у когось іншого, щоб мати змогу покласти аркуш у папку. Якщо він цього не зробить, то не зможе надалі записувати інформацію про інші перекази, таким чином, перестає бути частиною групи.

Чому всі витрачають ресурси на вирахування номера опечатування, якщо відомо, що хтось інший займається обчисленням і можна просто почекати? Працює система стимулів – кожен, хто є учасником блокчейн, має право на винагороду. Перший, хто вираховує номер, отримує винагороду за свої зусилля. Скажімо, якщо №5 вираховує номер опечатування аркуша, він отримує винагороду в 10 грн, тобто його рахунок збільшується на 10 грн, але при цьому не зменшується баланс на рахунку інших учасників групи. Саме таким чином з’явилася валюта Bitcoin. Це була перша валюта для здійснення переказів у блокчейн (тобто у розподілених «бухгалтерських книгах»). Щоб люди виконували певну роботу в мережі, забезпечуючи її функціонування, їм надавалася винагорода у вигляді Bitcoin.

Коли у багатьох людей є монети Bitcoin, їх вартість зростає, інші люди теж прагнуть мати криптовалюту, що знову підвищує її вартість, що знову збільшує кількість бажаючих володіти нею, і т.д. Як тільки всі учасники групи кладуть аркуш у папку, вони дістають новий порожній аркуш і повторюють весь процес — і так безкінечно. Це і є схема функціонування технології блокчейн. Уявіть, що один аркуш – це блок (block), а папка з аркушами – це ланцюжок (chain) аркушів (блоків), так і отримуємо блокчейн (blockchain).

ЧИТАЙТЕ ТАКОЖ:

Захисний трюк

Уявіть собі, що у папці вже п’ять аркушів, кожен зі своїм номером опечатування. Раптом хтось вирішить повернутися до другого аркуша і змінити інформацію про перекази на свою користь? Номер опечатування дозволить будь-кому виявити непослідовність переказів, вірно? Що робити, якщо ця особа обчислить новий номер опечатування для змінених переказів і промаркує аркуш по-новому? Для уникнення такої ситуації при розрахуванні номера опечатування використовується один трюк.

Пам’ятаєте, у нашому прикладі було дві скриньки: одна з числом 20 893, а інша – порожня, її значення треба було обчислити? Насправді, для розрахунку номера опечатування у блокчейн використовується не дві, а три скриньки. Дві – із заданими даними, третя – для обчислення. І коли вміст усіх цих трьох скриньок додають і вводять в машину, відповідь з правої сторони повинна відповідати необхідним умовам. Ми знаємо, що в одній скриньці міститься список переказів, у другій буде вказано номер опечатування, а в третій скриньці міститься вихідна комбінація чарівної машини для попереднього аркуша. Цей маленький трюк гарантує, що кожна наступна сторінка залежить від попередньої. І якщо хтось захоче змінити дані опечатаної сторінки, такій особі також доведеться змінити зміст і номер опечатування всіх сторінок після цього, аби не порушити ланцюжок.

Якщо одна особа в групі вирішить обдурити інших і змінити дані в блокчейн (у папці з аркушами з переліком переказів), їй доведеться змінити інформацію кількох аркушів і вирахувати нові номери опечатування для цих аркушів. А ми знаємо, як важко їх обчислити. Тож одна нечесна особа не може обдурити дев’ять чесних. Відбувається наступне: починаючи з аркуша, дані якого намагається змінити наш брехун, він створює новий ланцюжок у мережі, але цей ланцюжок ніколи не зможе наздогнати «чесний» ланцюжок, просто тому, що зусилля та швидкість однієї людини не можуть зрівнятися зі швидкістю та зусиллями дев’яти людей. Таким чином, найдовший ланцюжок у мережі – «чесний» ланцюжок.

5

Що трапиться, якщо замість однієї особи шість осіб виявляться брехунами? Цей випадок зветься «атакою 51%». Якщо більшість людей у мережі стануть обманювати інших, протокол навмисно перестане працювати — і це єдина «Ахіллесова п’ята» технології блокчейн. Система побудована на припущенні, що користувачі, в більшості своїй — чесні. От, власне, і все. Нічого складного.

Джерело: LinkedIn, переклад підготувала Ірина Гоял, спеціально для «Блог Imena.UA»