вступ
Підтвердження роботи (часто скорочено «PoW») — це механізм запобігання проблемі подвійних витрат. Переважна більшість криптовалют використовує цей механізм консенсусного алгоритму. Ми називаємо цей підхід криптографічно безпечною книгою.
Proof-of-work є одним із найперших консенсусних алгоритмів, який все ще є популярним сьогодні. Сатоші Накамото представив цю концепцію в документі про біткойн, опублікованому в 2008 році, але сама технологія була задумана раніше.
Ще до того, як криптовалюти взагалі виникли, HashCash Адама Бека був раннім прикладом алгоритму підтвердження роботи. HashCash усуває проблему спаму, яка мучить одержувачів, вимагаючи від відправника виконати невелику кількість обчислень перед відправленням електронного листа. Для звичайних відправників такі обчислення майже не викликають зусиль, але для тих, хто надсилає велику кількість електронних листів, навантаження швидко зростає.
Що таке проблема подвійних витрат?
Подвійне витрачання відбувається, коли ті самі кошти використовуються кілька разів. Цей термін, по суті, є ексклюзивним для світу цифрових валют, оскільки ту саму суму готівки неможливо заплатити двічі в реальному житті. Наприклад, після того, як ви заплатите касиру за свою каву, вона заблокується в касі. Клієнт не може купити ще одну чашку кави в кафе навпроти за ту саму суму грошей.
Це може статися, якщо реалізована схема цифрових готівкових грошей. Усі ми копіювали комп’ютерні файли раніше і можемо надіслати той самий файл десяти, двадцяти чи навіть п’ятдесяти людям, просто скопіювавши та вставивши.
Оскільки цифрові валюти – це лише форми даних, нам потрібно остерігатися того, щоб інші копіювали та платили за ту саму валюту деінде. Інакше наша грошова система скоро впаде.
Якщо ви хочете дізнатися більше про проблему подвійних витрат, прочитайте «Докладне пояснення проблеми подвійних витрат».
Чому потрібне підтвердження роботи?
Якщо ви прочитали наш посібник із технології блокчейн, ви знаєте, що користувачі публікують транзакції в мережі. Але ці транзакції набувають чинності не відразу, а лише після додавання в блокчейн.
Блокчейн — це масивна база даних, яку бачать усі користувачі, тому кожен може бачити, як кошти використовувалися раніше. Уявіть це: ви та ще троє друзів ділитеся блокнотом. Незалежно від того, хто хоче переказати гроші в якій валюті, це буде зафіксовано. Наприклад, Аліса платить Бобу 5 одиниць валюти, а Боб платить Керол 2 одиниці валюти.
Складність цього процесу полягає в тому, що при кожній транзакції необхідно вказувати джерело коштів. Отже, якщо Боб платить Керол дві одиниці валюти, джерелом коштів є фактично Боб, який платить Керол дві одиниці валюти з його попередньої операції з Алісою.
Таким чином ми маємо спосіб відстежувати ці валюти. Якщо Боб спробує здійснити іншу транзакцію, використовуючи ту саму одиницю валюти, яка раніше була сплачена Керол, незабаром про це дізнаються всі. Члени групи спільного доступу не дозволять записати цю транзакцію в Блокноті.
Для невеликих груп цей підхід може працювати дуже добре. Всі знають один одного і можуть домовитися про те, хто з друзів запише транзакцію в блокнот. Що було б, якби це була група з 10 000 учасників? На даний момент блокнот не можна ефективно розширити, зрештою, ніхто не довірить незнайомцю керувати бухгалтерською книгою.
Ось де з’являється підтвердження роботи. Підтвердження роботи гарантує, що користувачам не дозволено витрачати кошти, до яких вони не мають доступу. Алгоритм перевірки робочого навантаження поєднує теорію ігор і криптографію, щоб дозволити кожному оновлювати блокчейн відповідно до системних правил.
Як працює підтвердження роботи?
Блокчейн — це блокнот, про який ми згадували вище. Але тепер ми не додаємо транзакції по одній, а збираємо їх у блоки. Ми публікуємо транзакції в мережі, а користувач, який створив блок, зараховує транзакцію до блоку-кандидата. Лише коли блок-кандидат стане підтвердженим блоком, транзакція набуде чинності. Тобто транзакція додається в блокчейн.
Однак додавати блоки недешево. Підтвердження роботи вимагає від майнерів (користувачів, які створюють блоки) використання власних ресурсів для отримання привілеїв. Ресурси — це обчислювальна потужність, яку можна використовувати для хешування даних блокування, доки не буде знайдено рішення складної проблеми.
Хешування даних блоку стосується переведення даних у хеш-функцію для створення хеш-значення блоку. Хеш блоку діє як «відбиток пальця», ідентифікація вхідних даних і є унікальним для кожного блоку.
Майже неможливо отримати вхідні дані, перевернувши хеш блоку. Однак, знаючи вхідні дані, ви можете легко підтвердити правильність хеш-значення. Просто надішліть вхідні дані функції та подивіться, чи результат буде таким самим.
Дані, надані для підтвердження роботи, хеш-значення повинні відповідати певним умовам. Але користувачі не знають, як це зробити. Єдине, що вони можуть зробити, це передати дані в хеш-функцію, щоб перевірити, чи відповідають вони критеріям. Якщо воно не збігається, трохи змініть дані та отримайте інше хеш-значення. Зміна хоча б одного символу в даних може призвести до різко різних результатів, тому результат взагалі неможливо передбачити.
Отже, створення блоків - це гра в вгадування. Загалом, користувачам потрібно агрегувати всю інформацію про транзакції та деякі інші важливі дані, які потрібно додати, а потім хешувати їх одночасно. Оскільки набір даних не змінюється, потрібно додати змінну інформацію. В іншому випадку вихідне хеш-значення завжди буде узгодженим. Ці змінні дані називаються «випадковим числом». Поки ви намагаєтеся щоразу змінювати nonce, ви отримуватимете інше хеш-значення. Цей процес називається «майнінг».
Загалом, майнінг — це процес збору даних блокчейну та їх хешування за допомогою випадкових чисел, поки не буде знайдено конкретне хеш-значення. Якщо отримане хеш-значення відповідає умовам, встановленим протоколом, новий блок може бути опублікований у мережі. У той же час інші учасники мережі можуть оновлювати власні блокчейни, щоб включити нові блоки.
Для сучасних основних криптовалют виконати умови досить складно. Чим вищий хешрейт мережі, тим важче знайти дійсні хеші. Це робиться для уповільнення швидкості генерації блоків.
Ви можете собі уявити високу вартість вгадування масивних хеш-значень за допомогою персонального комп’ютера. Це споживає багато обчислювального часу та енергії. Але якщо знайдено дійсний хеш, протокол винагородить вас криптовалютою.
Давайте переглянемо те, що ми знаємо на даний момент:
Майнінг коштує дорого.
Створюйте дійсні блоки, щоб отримати винагороду.
Знаючи вхідні дані, користувач може легко перевірити хеш-значення. Користувачі, які не займаються майнінгом, можуть перевірити, чи дійсний блок, не витрачаючи багато обчислювальної потужності.
Поки що все нормально. Але що станеться, якщо хтось спробує обдурити? Як ми можемо зупинити введення великої кількості шахрайських транзакцій у блоки для створення дійсних хешів?
Виникла криптографія з відкритим ключем. Ця стаття не буде вдаватися в подробиці, будь ласка, прочитайте "Що таке криптографія з відкритим ключем?" 》 для отримання додаткової інформації. Простіше кажучи, ми використовуємо деякі сумісні методи криптографії, щоб перевірити, чи має хтось повноваження на доступ до певної суми коштів.
Коли ви створюєте транзакцію, ви її підписуєте. Користувачі в мережі можуть порівняти ваш особистий підпис із відкритим ключем, щоб переконатися, що вони збігаються. Водночас користувачі також можуть перевірити, чи має особа право використовувати кошти та чи загальна сума введення перевищує загальну суму виходу, тобто особисті витрати не повинні перевищувати суму утримання.
Мережа автоматично відхиляє блоки, що містять недійсні транзакції. Ціна спроби обману дуже висока. Це не тільки марна трата ресурсів, але й ви не отримуєте винагороди.
Таємниця доказу роботи розкрита - ціна шахрайства висока, але прибуток від чесної роботи величезний. Розумні майнери прагнутимуть до повернення інвестицій (ROI), діятимуть обережно та забезпечуватимуть прибуток.
Хочете розпочати свою криптовалютну подорож? Заходьте на Binance та купуйте біткойни зараз!
Proof of Work проти Proof of Stake
Доказ частки (PoS) також займає важливе місце серед багатьох консенсусних алгоритмів. Концепція датується 2011 роком і була реалізована в ряді менших протоколів. Але він ще не отримав поширення серед великих блокчейнів.
У системі proof-of-stake майнерів замінюють «валідатори», і немає ніякої конкуренції в майнінгу та вгадуванні хешів. Натомість випадково вибрані користувачі повинні пропонувати або «карбувати» блоки. Якщо блокування дійсне, користувач отримає винагороду, що складається з комісій за транзакцію блоку.
Звичайно, існують порогові значення для процесу відбору, і в угоді всебічно враховуватимуться різні фактори для відбору користувачів. Щоб отримати кваліфікацію, учасники повинні зафіксувати ставку, заздалегідь визначену суму рідної валюти блокчейну. Застава працює як застава. Наприклад, щоб обвинувачені не ухилялися від суду, вони повинні внести великі застави, а валідатори повинні зафіксувати «застави», щоб запобігти обману. У разі шахрайства застава повністю або частково буде конфіскована.
Порівняно з доказом роботи, доказ частки має певні переваги. Найбільш очевидним є зменшення вуглецевого сліду, оскільки Proof-of-Stake не потребує потужних майнінгових ферм і споживає лише частку електроенергії Proof-of-Work.
Незважаючи на це, популярність Proof-of-Stake все ще далека від популярності Proof-of-Work. Незважаючи на те, що майнінг вважається марнотратним, він виявився єдиним консенсусним алгоритмом, який отримав масове використання. Протягом більше десяти років підтвердження роботи забезпечувало транзакції на трильйони доларів. Щоб знати, чи може proof of stake конкурувати з proof of work з точки зору безпеки, стейкінг все ще потрібно повністю протестувати в реальних операціях.
Підведіть підсумки
Доказ роботи був початковим рішенням проблеми подвійних витрат, і його надійність і безпека були доведені. Біткойн доводить, що нам не потрібно покладатися на централізовану установу, щоб запобігти подвійній витраті одних і тих же грошей. Учасники децентралізованого середовища можуть скоординовано відстежувати стан фінансових баз даних за допомогою розумного використання криптографії, хеш-функцій і теорії ігор.
