Концепція Proof-of-Work — алгоритм захисту розподілених систем від зловживань (DoS-атак, спам-розсилок тощо), суть якого зводиться до двох основних пунктів:
- необхідності виконання певного досить складного і тривалого завдання;
- можливості швидко і легко перевірити результат.
PoW-завдання від самого початку не призначені для людини, їхнє розв’язання комп’ютером завжди досяжне в кінцеві строки, проте потребує великих обчислювальних потужностей. При цьому перевірка отриманого рішення вимагає набагато менше ресурсів і часу.
Хто і коли придумав термін Proof-of-Work
Уперше концепцію Proof-of- Work було описано 1993 року в роботі "Pricing via Processing, Or, Combatting Junk Mail, Advances in Cryptology". Хоча сам термін у статті ще не використовувався, автори запропонували таку ідею:
"Щоб отримати доступ до спільного ресурсу, користувач повинен обчислити деяку функцію: досить складну, але посильну; так можна захистити ресурс від зловживання".
У 1997 році криптограф і майбутній засновник Blockstream Адам Бек запустив проєкт Hashcash, присвячений захисту від спаму. Завдання формулювалося так: "Знайти таке значення x, що хеш SHA(x) містив би N старших нульових біт".
Система пропонувала хешування часткової інверсії під час надсилання електронною поштою. Для розрахунку відповідного заголовка потрібно близько 2 52 хеш-обчислень, які треба перераховувати для кожного відправлення. І якщо для кількох звичайних листів додаткові розрахунки перешкод не створюють, то масове розсилання спаму необхідність постійного перерахунку робить дуже ресурсоємним. При цьому перевірка коректності обчисленого коду здійснюється дуже швидко: використовується одноразове обчислення SHA-1 із заздалегідь підготовленою міткою.
Сам термін Proof-of-Work з’явився 1999 року в статті "Proofs of Work and Bread Pudding Protocols" (автори — Маркус Якобссон і Арі Джуелс) у журналі Communications and Multimedia Security.
Як Proof-of-Work використовують у криптовалютах
Сатоші Накамото використав концепцію PoW у першій криптовалюті — біткоїні. Він узяв ідею Hashcash, додавши до неї механізм складності, що змінюється, — зменшення або збільшення N (необхідного числа нулів) залежно від сумарної потужності учасників мережі. Обчислюваною функцією стала SHA-256.
Блокчейн — це мережа розподілених вузлів (нод), кожна з яких несе власну копію реєстру. Алгоритм консенсусу забезпечує здатність кожної ноди перевірити, що майнер (у ролі якого виступає інший вузол, що додає новий блок до блокчейну) фактично виконав необхідні розрахунки.
Цей процес передбачає спробу знайти хеш заголовка блоку (частина блокчейна, яка містить посилання на попередній блок і підсумоване значення транзакцій, до нього включених), який за своїм значенням відповідатиме поточному рівню складності.
Простіше кажучи, PoW — процедура, яка дає змогу всім нодам домовитися про єдину версію блокчейна, а також підтвердити дані про нові транзакції в новому блоці. Крім того, вона відповідає за емісію нових монет у блокчейні. Майнінг — частина алгоритму PoW.
Головні досягнення алгоритму PoW
До біткоїна неодноразово робили спроби створити децентралізовану систему, яка б давала змогу здійснювати перекази та верифікувати їх без необхідності мати центрального оператора.
Однак жоден проєкт не міг вирішити проблему подвійного витрачання — можливості для відправника переказу двічі витратити одні й ті самі кошти до того, як система підтвердить їх.
Цю проблему вдалося розв’язати тільки в біткоїні — за допомогою технології блокчейн і алгоритму консенсусу Proof-of-Work (PoW), який стимулює майнерів верифікувати кожну транзакцію до її додавання в реєстр. При цьому цей економічний стимул також дає змогу підтримувати роботу всього блокчейна.
На що впливає складність обчислення нового блоку
У мережі біткоїна складність обчислень для додавання нового блоку — динамічний параметр. Його встановлюють на такому рівні, щоб швидкість генерації блоків залишалася приблизно на одному й тому самому рівні, хоч би яким потужним не було обладнання, що використовується для майнінгу.
Водночас перевірка результатів обчислень залишається простою. Ноди завжди можуть упевнитися, що майнер знайшов коректне значення, але оскільки процес знаходження блоку витратний і випадковий, неможливо з точністю передбачити, який саме майнер розв’яже задачу і добуде наступний блок.
Для того, щоб система визнала блок правильним, необхідно, щоб значення його хеша було меншим порівняно з поточною метою. Таким чином, кожен блок показує, що було виконано певну роботу з його знаходження.
Новий блок містить хеш попереднього блоку, утворюючи ланцюг. Змінити блок неможливо, можна лише створити блок на тій самій висоті, який міститиме в собі хеш попереднього блоку. Для цього необхідно виконати роботу зі знаходження всіх попередніх блоків. Висока складність цього процесу захищає блокчейн від несанкціонованого доступу і подвійних витрат.
Proof-of-Work і майнінг
Proof-of-Work, по суті, породив індустрію майнінгу біткоїна і став імпульсом до розроблення спеціалізованого обладнання — ASIC, оскільки обчислювальні ресурси, які витрачаються на хешування блоків, величезні і набагато перевищують потужності найбільших суперкомп’ютерів.
Водночас не обійшлося і без горезвісного "зворотного боку медалі": досить швидко PoW перетворився на монстра, який пожирає електрику в гонці за прибутковістю.
Потужність майнінгового обладнання постійно зростає, збільшується і кількість учасників цієї галузі. У результаті збільшується сумарне енергоспоживання. Однак підвищується й енергоефективність майнерів, а частка біткоїна в глобальному споживанні електрики і в 2022 році залишається невисокою.
Головні PoW-криптовалюти
За даними CoinMarketCap на кінець серпня 2022 року, криптопроєктами з найбільшою ринковою капіталізацією, що працюють на механізмі Proof-of-Work, були:
- Біткоїн (BTC);
- Ethereum (ETH) — до переходу на Proof-of-Stake;
- Dogecoin (DOGE);
- Ethereum Classic (ETC);
- Litecoin (LTC);
- Monero (XMR);
- Bitcoin Cash (BCH);
- Bitcoin SV (BSV);
- Zcash (ZEC);
- Kadena (KDA).