доказ

Що таке Proof-of-Work і Proof-of-Stake

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

У чому суть Proof-of-Work

Proof-of-Work (PoW - дослівно: доказ роботи) - алгоритм захисту розподілених систем від зловживань (DoS-атак, спам-розсилок і т.д.), суть яких зводиться до двох основних пунктів:

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

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

Хто придумав термін Proof-of-Work

Вперше концепцію Proof-of-Work було описано у 1993 році в роботі «Pricing via Processing, Or, Combatting Junk Mail, Advances in Cryptology» (автори - Синтія Дворко і Мони Наор). І хоча сам термін в статті ще не використовувався, автори запропонували наступну ідею:

«Щоб отримати доступ до загального ресурсу, користувач повинен обчислити деяку функцію: досить складну, але посильну; так можна захистити ресурс від зловживання».

У 1997 році Адам Бек запустив проект Hashcash, присвячений тому ж захисту від спаму. Завдання формулювалося так: «Знайти таке значення x, що хеш SHA (x) містив би N старших нульових біт».

Система пропонувала хешування часткової інверсії при відправці електронною поштою. Для розрахунку відповідного заголовка потрібно близько 2 в 52 степені хеш-обчислень, які треба перераховувати для кожної відправки. І якщо для відправки кількох звичайних листів, додаткові розрахунки не створюють перешкод, то необхідність постійного перерахунку робить відправку спаму дуже ресурсомісткою. При цьому перевірка коректності обчисленого коду здійснюється дуже швидко: використовується одноразове обчислення SHA-1 із заздалегідь підготовленою міткою.

У 1999 році з'являється і сам термін Proof-of-Work - використаний він був в статті «Proofs of Work and Bread Pudding Protocols» (автори - Маркус Якобссон і Арі Джуелс) в журналі Communications and Multimedia Security.

Яке відношення Proof-of-Work має до криптовалют

У мережі Bitcoin механізм PoW був використаний як засіб досягнення консенсусу (єдиної думки про те, яку версію блокчейну вважати вірною). При цьому за основу, творець першої криптовалюти Сатоши Накамото взяв ідею згаданого вище проекту Hashcash, додавши до неї механізм змінюваної складності - зменшення або збільшення N (необхідного числа нулів) в залежності від сумарної потужності учасників мережі. Обчислюваною функцією стала SHA-256.

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

Чи дійсно складність обчислення «складна»

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

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

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

кулер

Як Proof-of-Work вплинув на майнінг

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

У той же час не обійшлося і без горезвісного «зворотного боку медалі»: досить швидко PoW перетворився в монстра, що пожирає електрику в гонці за прибутковістю майнінгу. У 2012 році сумарна потужність мережі Bitcoin вже перевищувала за продуктивністю найпотужніший суперкомп'ютер у світі, а на горизонті з'явилася і перша альтернатива - Proof-of-Stake.

Які наводяться аргументи за і проти Proof-of-Stake

Як правило, на користь використання PoS наводяться наступні аргументи:

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

Аргументи, що викликають побоювання:

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

Додатково можна відзначити проблему Nothing-at-Stake (порожній стейк), який робить PoS-системи за своєю природою нестабільними в очах багатьох криптовалютних ентузіастів. Атакуючий може спробувати зробити форк блокчейну, тобто створити довший альтернативний ланцюжок за допомогою витрачання «неіснуючих» ресурсів. Більш того, його можуть підтримати інші майнери, оскільки вони також не витрачають «справжні» ресурси. За допомогою форків, атакуючий може відхиляти певні транзакції і здійснювати атаку «подвійної витрати».

Що таке Proof-of-Stake

Альтернативний механізм консенсусу, вперше реалізований у 2012 році в криптовалюті PPCoin (зараз відома під назвою PeerCoin). Ідея полягає у використанні «частки» (stake) в якості ресурсу, який визначає, яка саме нода отримує право видобутку наступного блоку.

піркоін

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

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

На чиєму боці чаша терезів

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

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

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

Які ще механізми доказів є у криптовалют

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

Їх список може виявитися досить великим, тому перерахуємо кілька найбільш відомих:

  • Proof of Activity (доказ активності) - стандартна гібридна схема, що поєднує PoW і PoS
  • Delegated Proof of Stake (делеговане підтвердження частки) - загальний термін, що описує еволюцію базових консенсус-протоколів на основі підтвердження частки. DPoS використовується в BitShares, а також в запропонованих алгоритмах, таких як Slasher і Tendermint
  • Proof of Burn (доказ спалювання) - «спалювання» відбувається шляхом відправки монет на таку адресу, з якої гарантовано не можна їх витратити. Позбавляючись таким чином від своїх монет, користувач отримує право на довічний майнінг, який також влаштований як лотерея серед всіх власників спалених монет
  • Proof of Capacity (доказ ресурсів) - реалізація популярної ідеї «мегабайти як ресурси». Необхідно виділити суттєвий обсяг дискового простору, щоб включитися в майнінг
  • Proof of Storage (доказ зберігання) - схожа на попередню концепція, при якій виділене місце використовується всіма учасниками як спільне хмарне сховище
Фото: flickr.com
Обробка: Vinci