Що таке алгоритми консенсусу в блокчейні?

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

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

Найвідоміший алгоритм консенсусу Proof-of-Work ліг в основу мережі Bitcoin і дав життя такого явища як майнінг. Є й альтернативні алгоритми: Proof-of-Stake, Proof-of-Importance, Proof-of-Storage і інші.

Що таке алгоритм консенсусу і навіщо він потрібен?

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

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

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

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

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

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

Як працює Proof-of-Work
Як працює Proof-of-WorkProof-of-Work (PoW) був першим успішним децентралізованим алгоритмом консенсусу в блокчейні. Він працює таким чином: на початку користувачі мережі надсилають один одному цифрові маркери, потім все вироблені транзакції збираються в блоки й записуються в розподілений відкритий реєстр - блокчейн.

У PoW всі транзакції доводяться за допомогою важких математичних обчислень, правдивість яких може перевірити ще раз будь-який користувач мережі. Майнери вирішують задачу, формують новий блок і підтверджують транзакції. Завдання з кожним разом стають складніше, бо кількість користувачів зростає, і навантаження на мережу стає більше. Кожен блок містить хеш - вихідні дані попереднього блоку. Це підвищує безпеку системи, і порядок створених блоків порушити неможливо. Користувач повинен першим правильно визначити «nonce» - число, доданий в кінець рядка для того, щоб створити хеш, який починається з необхідної кількості нулів. Якщо майнер зумів вирішити завдання, формується новий блок: в ньому розміщується черговий комплект транзакцій, і вони вважаються підтвердженими.

У PoW є головний недолік - споживання величезної кількості енергії. У 2017 році на повне оформлення однієї транзакції в системі Bitcoin потрібно затратити в середньому 163 кВт·год енергії. Такою кількістю енергії можна протягом п'яти з половиною днів повністю забезпечувати потреби сім'ї з трьох осіб, яка мешкає в невеликому одноповерховому будинку. Крім того, ті майнери, які володіють найшвидшими й потужними ASIC, отримують більше, ніж інші. В результаті цього біткоїн виявляється не таким децентралізованим, як замислювалося спочатку.

Як працює Proof-of-Stake
Як працює Proof-of-Stake
Proof-of-Stake для перевірки транзакцій вимагає від учасників частки частини монет, які вони зберігають в мережі. Ідея Proof-of-Stake полягає у розв'язанні проблеми Proof-of-Work, пов'язаної з великими витратами на електроенергію, була вперше реалізована у 2012 році в криптовалюті PeerCoin.

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

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

Як працює Delegated proof-of-stake
Як працює Delegated proof-of-stakeДелеговане підтвердження частки Delegated proof-of-stake (DPoS), яке було розроблено Деніелом Ларімер у 2014 році, тільки зовні схоже на Proof-of-stake, адже деталі реалізації двох алгоритмів істотно відрізняються один від одного. У DPoS замість ставки на монети для перевірки транзакцій власники токенів в ході голосування вибирають валідаторів транзакцій, які будуть формувати блоки. Вага кожного голосу визначається сумою активів голосувальника. Тримачі монет, в разі сумнівів, можуть переобирати кандидатів. Завдяки цьому можна досягти високої стійкості мережі. Якщо велика частина виконавців вийшла з ладу, то спільнота одразу проголосує за їх заміну.

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

Завдання візантійських генералів (BFT)
Завдання візантійських генералівМетою Byzantine fault tolerance є встановлення довіри між непов'язаними сторонами мережі.

BFT дозволяє валідатору здійснювати швидкі транзакції, управляти кожним станом мережі й обмінюватися повідомленнями один з одним, щоб отримати правильний запис транзакції і забезпечити чесність. Даний алгоритм реалізується компанією Ripple, де валідатори попередньо вибираються фондом Ripple, і Stellar, де будь-хто може бути валідатором - довіру встановлюється спільнотою. На відміну від блокчейнів, заснованих на PoW, блокчейни BFT не зазнають нападу, якщо тільки самі користувачі мережі не координують атаку. BFT вважається вигідним алгоритмом, оскільки він масштабується і охоплює транзакції з низькою вартістю, але, як і DPoS, впроваджує компонент централізації.

Альтернативні алгоритми консенсусу

Зараз набирають популярність спрямовані ациклічні графи Directed acyclic graph (DAG), і, можливо, в найближчому майбутньому будуть активно використовуватися в блокчейн-проектах, тому що вони можуть виступити як потенційне  розв'язання проблем, пов'язаних з масштабованістю. DAG - орієнтований граф з даними на основі  топологічного сортування. Його розвиток йде тільки в одному напрямку - від ранніх блоків до пізніх. Завдяки цьому, всі транзакції відбуваються в мережах DAG, тому цей процес займає набагато менше часу, ніж в разі блокчейнів, заснованих на PoW і PoS. У мережі DAG немає Майнер. Підтвердження здійснюється безпосередньо в самих транзакціях, тому угоди проходять майже миттєво.

Цікавим з точки зору економіки платформи є Proof-of-Importance (PoI). Алгоритм консенсусу використовується в блокчейні NEM. Важливість кожного користувача в мережі визначається кількістю коштів, наявних у нього в гаманці, і кількістю проведених транзакцій. На відміну від PoS, який враховує суму наявних коштів у користувача, PoI бере до уваги кількість коштів і активність користувача в блокчейні. Такий підхід спонукає активно використовувати ті кошти, які зберігаються на рахунку.

Трилема алгоритмів консенсусу
Трилема алгоритмів консенсусуЗавдання масштабованості блокчейн-мережі - оптимізація трьох пов'язаних параметрів. Вона описується як так звана трилема масштабованості, запропонованої Віталіком Бутеріним. Згідно трилеми, блокчейн може показувати хороший результат тільки за двома з трьох параметрів:
  • безпека - вразливість до маніпуляцій недобросовісних вузлів;
  • децентралізація - загальне число блок-продюсерів;
  • масштабованість - загальна швидкість обробки і фіналізації транзакцій мережею.
Для підвищення швидкості обробки транзакцій система повинна пожертвувати або децентралізацією, або безпекою. Це схоже на ситуацію, коли замовник хоче, щоб робота була виконана якісно, швидко і недорого, але на ділі можна вибрати тільки два пункти з трьох.

Висновок

Більшість платформ, попри велику кількість алгоритмів консенсусу, як і раніше використовують Proof-of-Work, Proof-of-Stake і їх модифікації.
В даний час алгоритми консенсусу повинні знаходити компроміс між безпекою, масштабованістю і ступенем централізації.

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