Доказ частки (PoS)
Доказ частки (PoS) лежить в основі механізму консенсусу Етеріуму. Етеріум увімкнув свій механізм доказу частки у 2022 році, оскільки він є більш безпечним, менш енергоємним і краще підходить для впровадження нових рішень масштабування порівняно з попередньою архітектурою доказу виконання роботи (PoW).
Передумови
Для кращого розуміння цієї сторінки ми рекомендуємо спочатку прочитати про механізми консенсусу.
Що таке доказ частки (PoS)?
Доказ частки (PoS) — це спосіб довести, що валідатори внесли в мережу щось цінне, що може бути знищено, якщо вони діятимуть нечесно. У доказі частки Етеріуму валідатори явно стейкають капітал у вигляді ETH у смарт-контракт в Етеріумі. Потім валідатор несе відповідальність за перевірку того, що нові блоки, які поширюються в мережі, є дійсними, а також час від часу самостійно створює та поширює нові блоки. Якщо вони намагаються обдурити мережу (наприклад, пропонуючи кілька блоків, коли вони повинні надіслати один, або надсилаючи суперечливі атестації), частина або всі їхні застейкані ETH можуть бути знищені.
Валідатори
Щоб брати участь як валідатор, користувач повинен внести 32 ETH у депозитний контракт і запустити три окремі частини програмного забезпечення: клієнт виконання, клієнт консенсусу та клієнт валідатора. Після внесення своїх ETH користувач приєднується до черги на активацію, яка обмежує швидкість приєднання нових валідаторів до мережі. Після активації валідатори отримують нові блоки від однорангових вузлів у мережі Етеріум. Транзакції, доставлені в блоці, виконуються повторно, щоб перевірити, чи є запропоновані зміни стану Етеріуму дійсними, а також перевіряється підпис блоку. Потім валідатор надсилає голос (який називається атестацією) на користь цього блоку по всій мережі.
Тоді як у доказі виконання роботи (PoW) час створення блоків визначається складністю майнінгу, у доказі частки (PoS) темп є фіксованим. Час у доказі частки Етеріуму поділяється на слоти (12 секунд) та епохи (32 слоти). Один валідатор випадковим чином обирається як пропонувач блоку в кожному слоті. Цей валідатор відповідає за створення нового блоку та його розсилку іншим вузлам у мережі. Також у кожному слоті випадковим чином обирається комітет валідаторів, чиї голоси використовуються для визначення дійсності запропонованого блоку. Поділ набору валідаторів на комітети є важливим для підтримки керованості навантаження на мережу. Комітети розділяють набір валідаторів таким чином, щоб кожен активний валідатор проводив атестацію в кожній епосі, але не в кожному слоті.
Як виконується транзакція в PoS Етеріуму
Нижче наведено наскрізне пояснення того, як транзакція виконується в доказі частки Етеріуму.
- Користувач створює та підписує транзакцію своїм приватним ключем. Зазвичай це обробляється гаманцем або бібліотекою, такою як ethers.js (opens in a new tab), web3js (opens in a new tab), web3py (opens in a new tab) тощо, але технічно користувач робить запит до вузла за допомогою JSON-RPC API Етеріуму. Користувач визначає кількість газу, яку він готовий заплатити як пріоритетну комісію валідатору, щоб заохотити його включити транзакцію в блок. Пріоритетні комісії виплачуються валідатору, тоді як базова комісія спалюється.
- Транзакція надсилається до клієнта виконання Етеріуму, який перевіряє її дійсність. Це означає перевірку того, що відправник має достатньо ETH для виконання транзакції та підписав її правильним ключем.
- Якщо транзакція дійсна, клієнт виконання додає її до свого локального мемпулу (списку транзакцій, що очікують на обробку), а також транслює її іншим вузлам через мережу пліток рівня виконання. Коли інші вузли дізнаються про транзакцію, вони також додають її до свого локального мемпулу. Досвідчені користувачі можуть утриматися від трансляції своєї транзакції та натомість переслати її спеціалізованим збирачам блоків, таким як Flashbots Auction (opens in a new tab). Це дозволяє їм організовувати транзакції в майбутніх блоках для отримання максимального прибутку (MEV).
- Один із вузлів-валідаторів у мережі є пропонувачем блоку для поточного слота, будучи попередньо обраним псевдовипадковим чином за допомогою RANDAO. Цей вузол відповідає за створення та трансляцію наступного блоку, який буде додано до блокчейну Етеріуму, та оновлення глобального стану. Вузол складається з трьох частин: клієнта виконання, клієнта консенсусу та клієнта валідатора. Клієнт виконання об'єднує транзакції з локального мемпулу в «корисне навантаження виконання» та виконує їх локально для генерації зміни стану. Ця інформація передається клієнту консенсусу, де корисне навантаження виконання обгортається як частина «блоку маяка», який також містить інформацію про винагороди, штрафи, слешинг, атестації тощо, що дозволяє мережі узгодити послідовність блоків на початку ланцюга. Зв'язок між клієнтами виконання та консенсусу більш детально описано в розділі Підключення клієнтів консенсусу та виконання.
- Інші вузли отримують новий блок маяка в мережі пліток рівня консенсусу. Вони передають його своєму клієнту виконання, де транзакції повторно виконуються локально, щоб переконатися, що запропонована зміна стану є дійсною. Потім клієнт валідатора атестує, що блок є дійсним і є логічним наступним блоком у їхньому баченні ланцюга (це означає, що він будується на ланцюзі з найбільшою вагою атестацій, як визначено в правилах вибору форку). Блок додається до локальної бази даних у кожному вузлі, який його атестує.
- Транзакцію можна вважати «фіналізованою», якщо вона стала частиною ланцюга зі «зв'язком супербільшості» між двома контрольними точками. Контрольні точки виникають на початку кожної епохи, і вони існують для врахування того факту, що лише підмножина активних валідаторів проводить атестацію в кожному слоті, але всі активні валідатори проводять атестацію протягом кожної епохи. Тому лише між епохами можна продемонструвати «зв'язок супербільшості» (це коли 66% від загальної кількості застейканих ETH у мережі погоджуються щодо двох контрольних точок).
Більш детальну інформацію про фінальність можна знайти нижче.
Фінальність
Транзакція має «фінальність» у розподілених мережах, коли вона є частиною блоку, який не може змінитися без спалювання великої кількості ETH. У доказі частки Етеріуму це управляється за допомогою блоків «контрольних точок». Перший блок у кожній епосі є контрольною точкою. Валідатори віддають голоси за пари контрольних точок, які вони вважають дійсними. Якщо пара контрольних точок збирає голоси, що представляють щонайменше дві третини від загальної кількості застейканих ETH, статус контрольних точок підвищується. Більш пізня з двох (цільова) стає «обґрунтованою». Більш рання з двох вже є обґрунтованою, оскільки вона була «цільовою» в попередній епосі. Тепер її статус підвищується до «фіналізованої». Цей процес підвищення статусу контрольних точок обробляється Каспер FFG (Casper the Friendly Finality Gadget) (opens in a new tab). Каспер FFG — це інструмент фінальності блоків для консенсусу. Після того, як блок фіналізований, його неможливо скасувати або змінити без масового слешингу стейкерів, що робить це економічно невигідним.
Щоб скасувати фіналізований блок, зловмисник повинен був би піти на втрату щонайменше однієї третини від загальної пропозиції застейканих ETH. Точна причина цього пояснюється в цій публікації в блозі Фундації Ethereum (opens in a new tab). Оскільки фінальність вимагає більшості у дві третини, зловмисник міг би перешкодити мережі досягти фінальності, голосуючи однією третиною від загального стейку. Існує механізм захисту від цього: витік через неактивність (opens in a new tab). Він активується щоразу, коли ланцюг не може фіналізуватися протягом більше ніж чотирьох епох. Витік через неактивність поступово зменшує застейкані ETH у валідаторів, які голосують проти більшості, дозволяючи більшості відновити перевагу у дві третини та фіналізувати ланцюг.
Криптоекономічна безпека
Запуск валідатора — це фіксація. Очікується, що валідатор підтримуватиме достатнє апаратне забезпечення та з'єднання для участі у валідації блоку та пропозиції. Натомість валідатору платять в ETH (їхній застейканий баланс збільшується). З іншого боку, участь як валідатора також відкриває нові шляхи для користувачів атакувати мережу заради особистої вигоди або саботажу. Щоб запобігти цьому, валідатори втрачають винагороди в ETH, якщо вони не беруть участі, коли їх викликають, а їхній існуючий стейк може бути знищений, якщо вони поводяться нечесно. Дві основні поведінки можна вважати нечесними: пропозиція кількох блоків в одному слоті (двозначність) та подання суперечливих атестацій.
Кількість ETH, що підлягає слешингу, залежить від того, скільки валідаторів також піддаються слешингу приблизно в той самий час. Це відомо як «кореляційний штраф» (opens in a new tab), і він може бути незначним (~1% стейку для одного валідатора, який піддався слешингу самостійно) або може призвести до знищення 100% стейку валідатора (подія масового слешингу). Він накладається на середині періоду примусового виходу, який починається з негайного штрафу (до 1 ETH) у день 1, кореляційного штрафу у день 18 і, нарешті, виключення з мережі у день 36. Вони отримують незначні штрафи за атестацію щодня, оскільки вони присутні в мережі, але не подають голоси. Усе це означає, що скоординована атака буде дуже дорогою для зловмисника.
Вибір форку
Коли мережа працює оптимально та чесно, на початку ланцюга завжди є лише один новий блок, і всі валідатори атестують його. Однак можливо, що валідатори матимуть різні погляди на початок ланцюга через затримку мережі або через те, що пропонувач блоку діяв двозначно. Тому клієнтам консенсусу потрібен алгоритм, щоб вирішити, якому з них віддати перевагу. Алгоритм, що використовується в доказі частки Етеріуму, називається LMD-GHOST (opens in a new tab), і він працює шляхом визначення форку, який має найбільшу вагу атестацій у своїй історії.
Доказ частки та безпека
Загроза атаки 51% (opens in a new tab) все ще існує в доказі частки, як і в доказі виконання роботи, але вона ще більш ризикована для зловмисників. Зловмиснику знадобиться 51% застейканих ETH. Потім він міг би використати власні атестації, щоб переконатися, що його бажаний форк є тим, який має найбільше накопичених атестацій. «Вага» накопичених атестацій — це те, що клієнти консенсусу використовують для визначення правильного ланцюга, тому цей зловмисник зміг би зробити свій форк канонічним. Однак перевага доказу частки над доказом виконання роботи полягає в тому, що спільнота має гнучкість у проведенні контратаки. Наприклад, чесні валідатори могли б вирішити продовжувати будувати на ланцюзі меншості та ігнорувати форк зловмисника, заохочуючи додатки, біржі та пули робити те саме. Вони також могли б вирішити примусово видалити зловмисника з мережі та знищити його застейкані ETH. Це сильні економічні засоби захисту від атаки 51%.
Окрім атак 51%, зловмисники також можуть спробувати інші види шкідливої діяльності, такі як:
- далекосяжні атаки (хоча інструмент фінальності нейтралізує цей вектор атаки)
- короткострокові «реорганізації» (хоча посилення пропонувальника та дедлайни атестації пом'якшують це)
- атаки відскоку та балансування (також пом'якшуються посиленням пропонувальника, і ці атаки в будь-якому випадку були продемонстровані лише за ідеалізованих умов мережі)
- лавинні атаки (нейтралізуються правилом алгоритмів вибору форку, яке враховує лише останнє повідомлення)
Загалом, доказ частки, як він реалізований в Етеріумі, продемонстрував свою більшу економічну безпеку порівняно з доказом виконання роботи.
Переваги та недоліки
| Переваги | Недоліки |
|---|---|
| Стейкінг полегшує окремим особам участь у забезпеченні безпеки мережі, сприяючи децентралізації. Вузол валідатора можна запустити на звичайному ноутбуці. Пули для стейкінгу дозволяють користувачам стейкати, не маючи 32 ETH. | Доказ частки є молодшим і менш перевіреним на практиці порівняно з доказом виконання роботи |
| Стейкінг є більш децентралізованим. Економія на масштабі не застосовується так само, як для майнінгу PoW. | Доказ частки складніше реалізувати, ніж доказ виконання роботи |
| Доказ частки пропонує більшу криптоекономічну безпеку, ніж доказ виконання роботи | Користувачам потрібно запустити три частини програмного забезпечення, щоб брати участь у доказі частки Етеріуму. |
| Для заохочення учасників мережі потрібна менша емісія нових ETH |
Порівняння з доказом виконання роботи
Етеріум спочатку використовував доказ виконання роботи, але перейшов на доказ частки у вересні 2022 року. PoS пропонує кілька переваг над PoW, таких як:
- краща енергоефективність — немає потреби витрачати багато енергії на обчислення доказу виконання роботи
- нижчі бар'єри для входу, знижені вимоги до апаратного забезпечення — немає потреби в елітному обладнанні, щоб мати шанс створювати нові блоки
- знижений ризик централізації — доказ частки має призвести до того, що більше вузлів забезпечуватимуть безпеку мережі
- через низькі вимоги до енергії потрібна менша емісія ETH для заохочення участі
- економічні штрафи за неправильну поведінку роблять атаки в стилі 51% дорожчими для зловмисника порівняно з доказом виконання роботи
- спільнота може вдатися до соціального відновлення чесного ланцюга, якщо атака 51% подолає криптоекономічний захист.
Подальше читання
- Поширені запитання про доказ частки (opens in a new tab) Віталік Бутерін
- Що таке доказ частки (opens in a new tab) ConsenSys
- Що таке доказ частки і чому це важливо (opens in a new tab) Віталік Бутерін
- Чому доказ частки (листопад 2020) (opens in a new tab) Віталік Бутерін
- Доказ частки: як я навчився любити слабку суб'єктивність (opens in a new tab) Віталік Бутерін
- Атака та захист доказу частки Етеріуму (opens in a new tab)
- Філософія дизайну доказу частки (opens in a new tab) Віталік Бутерін
- Відео: Віталік Бутерін пояснює доказ частки Лексу Фрідману (opens in a new tab)