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

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

Адміністратори — це люди, а люди не є надійними елементами системи. Тому децентралізована мережа не має єдиного людського "адміністратора" всія мережі.

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

Будуть намагатися, ще й як! Але хороша новина полягає в тому, що блокчейн був розроблений з урахуванням цієї проблеми. Фактично, різні комп’ютерні інженери та фахівці з теорії рішень працювали над цією проблемою задовго до того, як Сатоші написав перший скрипт Баті-Коїна. Розподілені системи існували до блокчейну та вони породили ситуацію, коли якийсь один елемент системи починає видавати випадкові дані. Це може статися через дії хакерів, криворуких програмістів або просто через несправність заліза. При цьому немає системи діагностики, яка могла б визначити неполадку.

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

Цей тип задач був названий “Проблемою Візантійських Генералів”. Байка, що описує задачу, звучить наступним чином:

Проблема Візантійських генералів

Візантійська армія тримає місто в облозі. До наступного дня генерали Візантійської армії мають вирішити, чи вони атакують, чи чекають, укріплюючи позиції і стягуючи сили. Рішення має бути узгодженим. Якщо всі генерали йдуть на штурм, то вони переможуть. Якщо вони всі чекають, то... принаймні нічого страшного не трапляється. Але якщо деякі генерали атакують, тоді як інші генерали тримають позицію, то нападників швидко розіб’ють… А це журбинка для всієї імперії. Тобто генерали виграють, якщо вони приймуть узгоджене рішення. Неважливо, яке саме, важливо, щоб воно було узгодженим.

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

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

Як розв’язати проблему зі зрадниками?

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

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

Впровадження цієї схеми в програмний код, де роль генералів грають елементи децентралізованої системи, називається "Протоколом Візантійської Угоди" (Byzantine Fault Tolerance або BFT).

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

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

Як досягти консенсусу в блокчейні

Розв’язанням цієї проблеми став протокол “доказ роботи” (Proof-of-Work), який до обчислень транзакцій та нових бітків додає також баластну частину криптографічному пазлу, яку треба вирішити, щоби брати участь у майнінгу. Складність цього пазлу змінюється залежно від поточної потужності мережі.

У термінах Візантійських генералів ця реформа буде виглядати наступним чином:

  • Генералом тепер може стати кожен охочий, хто складе відповідний іспит.
  • Іспити складаються раз на день всіма генералами й усіма охочими стати генералами. Якщо генерал провалює іспит, він перестає бути генералом.
  • У вільний від складання іспиту час генерали займаються стратегічним плануванням, використовуючи Візантійський консенсус.
  • Складність іспиту збільшується і зменшується пропорційно кількості генералів.
  • Зарплатню кожному генералу тепер платять відповідно до того, наскільки високі в нього бали на іспиті відносно інших генералів.
  • Вагомість голосу кожного генерала пропорційна його зарплатні.

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

Це і є стан справ в біткоїновому блокчейні сьогодні. Майже всі ресурси мережі зосереджені на обчислюванні Proof-of-Work-баласту, тоді як на обчислення власне транзакцій йде менше одного відсотка електроенергії. При цьому сама мережа обробляє жалюгідних 7 транзакцій в секунду, Карл!

Здається, треба придумати якийсь інший спосіб це порішати… Може старий добрий майновий ценз, як у Римській Імперії?

Цікавий факт: візантійці не знали, що вони Візантійці. Це слово винайшли історики двадцятого сторіччя щоб якось відрізнити їх від римлян. Самі візантійці називали себе римлянами, розмовляли латиною та зберігали традиції SPQR.

Візантійці

Отже, консенсус із майновим цензом має такі правила:

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

Це називається “алгоритм доказу ставки” або Proof-of-Stake.

Це те, на що ось-ось перейде Ethereum завдяки усім оновленням. Ще є купа гібридних алгоритмів, які в різних співвідношеннях поєднують Proof-of-Work (PoW) та Proof-of-Stake (PoS). Але загальний тренд серед блокчейнів (та не блокчейнових децентралізованих криптомереж) такий: більш пізні розробки використовують Proof-of-Stake, адже це модно, стильно й молодіжно.

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

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

Коментарі