Proof-of-Stake

Що таке Proof-of-Stake?

Proof-of-Stake (PoS, Доказ володіння) відноситься до категорії алгоритмів, які використовуються для досягнення консенсусу в системі блокчейну. Точніше кажучи, Proof-of-Stake - це механізм запобігання Sybil атак (тобто він запобігає маскуванню одного учасника під виглядом N інших). У PoS голос учасника в системі безпосередньо пов'язаний з кількістю його токенів, тому людина, у якої всього 100 токенів, не може видавати себе за 1000 різних людей з 100 токенів у кожного.

Аби блокчейн розвивався, необхідно створювати нові блоки і додавати їх до ланцюжка. Хто має право створювати нові блоки? В системі Proof-of-Work за це право борються майнери, витрачаючи обчислювальні потужності для вирішення рандомних (випадкових) криптографічних головоломок. Переможець отримує можливість створити наступний блок і певну винагороду за це. У даній парадигмі, чим більше обчислювальної потужності у майнера, тим вища ймовірність того, що він створить наступний блок. Системи PoS, навпаки, зосереджені на ідеї про те, що чим більше коїнів у майнера/валідатора/виробника блоків, тим вища ймовірність створення ними такого блоку.

В цілому, існує 2 класи алгоритмів Proof-of-Stake:

  1. Proof-of-Stake на основі ланцюга

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

  2. Візантійський відмовостійкий (BFT) Proof-of-Stake

    Замість того, щоб випадковий валідатор отримав право на створення блоку, який повинен приймати кожен наступний учасник, системи BFT вводять ідею пропозиції і прийняття. Подібно до системи PoS на основі ланцюга, випадково обраний валідатор (зважений за ставкою) обирається для пропозиції блоку іншими валідаторами. Усі валідатори повинні спілкуватися один з одним, поки всі чесні валідатори не дійдуть згоди. Як тільки вони погодяться, блок буде прийнято, і він завершиться як останній блок.

Який алгоритм консенсусу використовується в Tezos?

Для досягнення консенсусу Tezos використовує алгоритм PoS на основі ланцюга, який багато людей називають Liquid Proof-of-Stake. Щоб зрозуміти цей алгоритм PoS, ми розділимо його на три основні розділи:

  1. Створення Блоку (Бейкінг)

    Створення блоку - це спосіб, за допомогою якого прогресує блокчейн. В Tezos учасників, які створюють блоки, називають бейкерами. Бейкери вкладають свої обчислювальні потужності в мережу для підтвердження транзакцій. За це вони отримують винагороду за протоколом у вигляді новоспеченого XTZ (16 XTZ/блок).

    Щоб вважатися бейкером, в учасника повинно бути як мінімум 10 000 XTZ (1 рол). Чим більше у нього ролів, тим більше шансів отримати права на випікання наступного блоку. Якщо в якийсь момент буде активовано 10 ролів, і бейкеру належить 2/10 цих ролів, в нього є 20% шанс на отримання права створення наступного блоку. Це означає, що якщо у бейкера є 10 000 XTZ або 19 999 XTZ, йому надаються однакові права на бейкінг в системі.

    Права на бейкінг встановлюються за принципом пріоритетності. Наприклад, якщо є 10 ролів, протокол може випадково обрати список пріоритетів наступним чином:

    Priority1 = Roll 6
    Priority2 = Roll 9
    Priority3 = Roll 4
    Priority4 = Roll 3
    .
    .
    .
    Priority10 = Roll 7

    Таким чином, людина, якій належить Рол 6 (Roll 6), буде першою в пріоритетній черзі на пропозицію блоку. Якщо вони не створюють і не транслюють блок протягом 1 хвилини, особа, якій належить Рол 9 (Roll 9), може змінити власника Рола 6. Чим більше у вас ролів, тим більше шансів отримати високий пріоритет.

    Щоб мати можливість випікати, Вам необхідно буде внести заставу (Ваш Proof of Stake) в розмірі 512 XTZ за створений блок. Цей депозит буде заблоковано на 5 циклів (~ 14 днів). Депозит може бути скорочено, якщо бейкер випікає двічі («Проблема Нічого на кону»).

  2. Делегування

    Якщо в когось немає 10 000 XTZ чи бажання налаштовувати обчислювальну інфраструктуру для випічки блоків, цей користувач може делегувати свої коїни бейкеру. Делегування дозволяє власникам коїнів "позичати" свої коїни бейкерам. Так, у бейкера з'являється більше шансів бути обраним, і він, в свою чергу, ділиться додатковим доходом з власником коїнів. Важливо відзначити, що цей процес фактично не передає право власності на коїн. Бейкери не можуть витратити делегований їм XTZ, і втекти з чужими грошима.

    З'явилися групи, що пропонують конкурентні тарифи на свої послуги бейкінгу; більшість з них стягують ~ 10-20% від винагород, які користувачі отримують шляхом делегування. Повний перелік загальнодоступних послуг з бейкінгу можна знайти тут.

  3. Правило вибору виделки

    Останній ключовий момент, який необхідно зрозуміти про алгоритм консенсусу Tezos - це те, як протокол визначає, яка виделка мережі є «правильною». Правило вибору біткойн-форку просте: найдовший ланцюг - канонічний. Tezos обирає канонічний ланцюг, грунтуючись на кількості бейкерів, що схвалили цей блок. Вище зазначалося, що бейкери отримують права на випічку для створення блоків, і водночас несуть відповідальність за схвалення блоків. На кожній висоті блоку обирається 32 випадкових роли для підтвердження блоку; блок з найбільшою кількістю підтверджень вважається канонічним.

    Коли бейкер схвалює блок, який згодом стає канонічним, він отримує певну нагороду XTZ. Так, бейкери зацікавлені в тому, щоб схвалити блок, який, як вони вважають, буде схвалений іншими бейкерами; ці блоки також відомі як високопріоритетні. Так само як і випічка, схвалення блоків вимагає, щоб бейкери ставили 64 XTZ за схвалення. Це запобігає проблемі «Нічого на кону».

Резюмуючи: Протокол PoS Tezos використовує алгоритм PoS, заснований на ланцюгах, в якому схвалення використовуються для розстановки ланцюгів за пріоритетністю і визначення, який з них є канонічним. Бейкери (люди, які володіють 10 000 XTZ) несуть відповідальність за створення і схвалення блоків. Вони повинні робити ставку на частину свого власного капіталу, щоб стимулювати (мотивувати) чесну поведінку.

Що таке Проблема «Нічого на кону» і як її вирішує Tezos?

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

Щоб вирішити цю проблему, протокол Tezos пропонує деякі жорсткі умови. Бейкери, які випікають або підтримують кілька блоків однакової висоти (голосують на декількох форках), втрачають свої гарантійні депозити. Якщо хтось викриває іншого бейкера в «подвійному бейкінгу», він може включити звинувачення, що містить докази в майбутній блок. Це призведе до того, що «подвійний бейкер» позбудеться свого страхового депозиту і майбутніх винагород аж до цієї точки циклу. Половину буде спалено, в той час як інша половина перейде до обвинувача у вигляді нагороди за блок. Це стимулює бейкерів стежити один за одним і звинувачувати їх у подвійному бейкінгу. Через це бейкери позбавлені можливості випікати і підтверджувати блоки на декількох виделках. Ризик втрати власних коїнів зводить до мінімуму проблему «Нічого на кону».

Чи є в транзакцій Tezos закінченість?

Ні. У поточному протоколі Tezos 30 підтверджень (~ 30 хвилин) є прийнятним практичним правилом для того, щоб транзакція вважалася остаточною. Оскільки Tezos використовує алгоритм консенсусу PoS на основі ланцюга, можливість реорганізації ланцюга залишається після транзакції. Користувачам необхідно почекати кілька підтверджень, перш ніж вони зможуть бути абсолютно впевнені в тому, що транзакцію не буде відкладено.

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

Наскільки масштабований Tezos?

Наразі Tezos виконує близько 30-40 транзакцій в секунду.

Яка дорожня карта (план дій) для поліпшення масштабованості Tezos?

Як такої, "Дорожньої карти" немає. У вбудованій системі управління Tezos бейкери можуть голосувати за пропозиції з оновлення протоколу. Завдяки цьому механізму, протокол консенсусу може бути замінений на голосування в ланцюзі, без потреби хардфорка. Нові алгоритми консенсусу, такі як Algorand або Tendermint, які мають закінченість і більш високу пропускну здатність, будуть використовуватися на Tezos.

Робляться численні зусилля для вивчення нових алгоритмів консенсусу Tezos зі швидкою закінченістю. One effort включає використання Tendermint для прийняття блоку, що потягне за собою Візантійську Угоду (а, отже,і миттєву закінченість) для кожного блоку. Ще один проект, Igloo, досліджує Avalanche для Tezos.

Крім того, в Корнелському університеті ведуться дослідження в області шардінгу Tezos, і фінансуються за рахунок гранту Tezos Foundation.

Ще одна ідея, досліджена Артуром Брейтманом, міститься в блог-пості під назвою «Scaling Tezos», в якому розглядається ідея поблочного використання рекурсивних zk-SNARK для істотного підвищення масштабованості.

Меріали розроблені TQ Tezos перекладені українською мовою Tezos Ukraine