Що таке Proof of Work (PoW)?
Зміст
Вступ
Що таке подвійні витрати?
Навіщо потрібен Proof of Work?
Як працює PoW?
Proof of Work та Proof of Stake.
Заключні думки
Що таке Proof of Work (PoW)?
Головна сторінка
Статті
Що таке Proof of Work (PoW)?

Що таке Proof of Work (PoW)?

Середній рівень
Опубліковано Dec 6, 2018Оновлено Oct 3, 2022
8m

Вступ

Proof of Work (зазвичай скорочено PoW) – це механізм запобігання подвійним витратам. Більшість основних криптовалют використовують його як алгоритм консенсусу. Це саме те, що ми називаємо методом захисту криптовалютного реєстру.

Proof of Work був першим алгоритмом консенсусу, що з'явився, і на сьогоднішній день залишається домінуючим. Він був представлений Сатоші Накамото у Bitcoin whitepaper 2008 року, але сама технологія була створена задовго до цього. 

HashCash від Адама Бека – це ранній приклад використання алгоритму Proof of Work ще до криптовалют. Вимагаючи від відправників виконання невеликого об'єму обчислень перед надсиланням електронного листа, одержувачі могли фільтрувати спам. Такі обчислення практично нічого не коштували для звичайного відправника, але це суттєво ускладнювало процес масового розсилання.


Що таке подвійні витрати?

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

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

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

Щоб отримати більш детальну інформацію про подвійні витрати, перегляньте статтю "Пояснення подвійних витрат".


Навіщо потрібен Proof of Work?

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

Тепер ми маємо спосіб відстеження одиниць. Якщо Боб спробує здійснити ще одну транзакцію, використовуючи ті самі одиниці, які він щойно відправив Керол, всі відразу про це дізнаються. Група не дозволить додати транзакцію в блокнот.

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

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


Як працює PoW?

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

Однак додавання блоку недешеве. Proof of Work вимагає, щоб майнер (користувач, що створює блок) використовував частину своїх власних ресурсів заради цією переваги. Цей ресурс – обчислювальна потужність, яка використовується для хешування даних блоку, доки не буде знайдено рішення головоломки.
Хешування даних блоку означає, що ви пропускаєте їх через функцію хешування для створення хешу блоку. Хеш блоку працює як "відбиток пальця" – це ідентифікатор ваших вхідних даних, унікальний для кожного блоку.

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

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

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

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

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

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

Давайте підсумуємо те, що ми знаємо наразі:

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

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

Ось тут і з'являється криптографія з публічним ключем. У даній статті ми не заглиблюватимемося в деталі, ми рекомендуємо вам докладніше ознайомитися зі статтею Що таке криптографія з публічним ключем?   Коротше кажучи, ми використовуємо декілька витончених криптографічних прийомів, які дозволяють будь-якому користувачеві перевірити, чи хтось має право переміщати кошти, які він намагається витратити.
Коли ви створюєте транзакцію, ви підписуєте її. Будь-яка людина в мережі може порівняти ваш підпис з вашим публічним ключем і перевірити, чи збігаються вони. Вони також можуть перевірити, чи дійсно ви можете витратити свої кошти і чи сума ваших входів вища, ніж сума ваших виходів (тобто ви не витрачаєте більше, ніж маєте).

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

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



Хочете почати торгувати криптовалютою? Купуйте Bitcoin на Binance!



Proof of Work та Proof of Stake.

Існує безліч алгоритмів консенсусу, але одним із найцікавіших є Proof of Stake (PoS). Ця концепція, створена у 2011 році, була реалізована в деяких невеликих протоколах. Але вона ще не отримала застосування в жодному з великих блокчейнів.
У системах з Proof of Stake майнери замінюються валідаторами. Тут немає майнінгу та гонки за вгадування хешів. Натомість користувачі вибираються випадковим чином – якщо вони вибрані, вони повинні запропонувати (або "викарбувати") блок. Якщо блок є дійсним, вони отримають винагороду, що складається з комісій від транзакцій у блоці.
Однак не кожен користувач може бути обраний. Протокол визначає валідатора на основі цілого ряду факторів. Щоб отримати таке право, необхідно заблокувати стейк/частку, яка є заздалегідь визначеною сумою в нативній валюті блокчейну. Стейкінг працює як забезпечення: валідатори блокують токени у стейкінгу, щоб перешкодити шахрайству. Якщо вони діють нечесно, їхні токени стейкінгу (частка) будуть вилучені.
Proof of Stake має деякі переваги перед Proof of Work. Найбільш значущою з них є менший вуглецевий слід, оскільки в PoS немає необхідності в потужних майнігових фермах, а електроенергія, що споживається, становить лише маленьку частину енергії споживання з PoW. 

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


Заключні думки

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