Оригінальна назва: “Дотримання 8192 підписів на слот після SSF: як і чому”
Оригінал статті Віталіка Бутеріна, дослідження ETH
Оригінальна компіляція: Luccy, BlockBeats
*Примітка редактора: SSF (Single Slot Finality) розшифровується як Single Slot Finality, що дає змогу значно зменшити затримку Ethereum. У механізмі консенсусу блокчейну остаточність означає, що транзакція або блок стають безвідкличними, гарантуючи, що вони не можуть бути підроблені або скасовані. Досягнення остаточності має важливе значення для довіри та безпеки систем децентралізації, оскільки усуває ризик подвійних витрат та іншої зловмисної діяльності. *
*SSF припускає, що в BlockchainConsensus Mechanism, один часовий проміжок або одиниця часу може вважатися «остаточним». На відміну від оригінального EthereumConsensus, він дозволяє всім валідаторам брати участь у підтвердженні або підписанні слотів, скорочуючи час підтвердження транзакцій і покращуючи загальний користувацький досвід. *
Віталік «повертається» ETH дослідженні, чому необхідно, щоб валідатори-учасники мали по дві підписи на слот після SSF, тобто щоб досягти 8192 підписів, і висуває 3 гіпотези про те, як досягти цієї мети, а саме повний стейкінг, дворівневий стейкінг та ротаційну участь, аналізує, як ефективніше обробляти кількість підписів на слот, зберігаючи при цьому безпеку протоколу, а також обговорює їхні переваги та недоліки, а також вплив на протокол та користувачів. BlockBeats скомпілювали оригінальний текст наступним чином:
Одна з головних відмінностей між Ethereum і більшістю інших (з остаточністю) PoS-систем полягає в тому, що Ethereum прагне підтримувати дуже велику кількість валідаторів: в даний час у нас є 895 000 валідаторів, що, як показує аналіз закону Zipf, еквівалентно десяткам тисяч незалежних фізичних або юридичних осіб. Метою цього є підтримка децентралізації, що дозволяє звичайним людям брати участь у стейкінгу, не вимагаючи від усіх відмовлятися від своєї здатності діяти та передавати контроль одному з небагатьох пулів стейкінгу.
Однак цей підхід вимагає, щоб ланцюжок Ethereum обробляв велику кількість підписів на слот (близько 28 000 сьогодні; 1 790 000 після SSF), що є дуже високим навантаженням. Для того, щоб витримати це навантаження, необхідно принести ряд технічних жертв:
Система агрегації сигнатур може здатися розумною на перший погляд, але насправді вона створює системну складність, яка пронизує всю систему.
Більше того, вона навіть не досягла своїх цілей. Мінімальна вимога для стейкінгу, як і раніше, становить 32 ETH, що є недосяжним для багатьох людей. Лише з точки зору логічного аналізу, мета системи, яка дозволяє кожному підписувати кожен слот у довгостроковій перспективі, здається нездійсненною, щоб по-справжньому забезпечити стейкінг для звичайних людей: якщо Ethereum має 500 мільйонів користувачів, 10% з яких беруть участь у стейкінгу, це означає 100 мільйонів підписів на слот. З точки зору теорії інформації, для обробки штрафів у цій конструкції потрібно щонайменше 12,5 МБ вільного місця для даних на слот, що приблизно еквівалентно меті повного шардингу. Це можливо, але вимагати, щоб сам стейкінг покладався на вибірку доступності даних, є великою перевагою складності. І навіть тоді лише близько 0,6% населення планети бере участь у стейкінгу, і це ще не почало пов’язувати обчислювальну проблему перевірки такої кількості підписів.
Тому замість того, щоб покладатися на криптографію для створення магічних куль (або магічних куленепробивних) для досягнення постійно зростаючої кількості сигнатур на слот, я пропоную філософський зсув: спочатку відмовтеся від таких очікувань. Це значно розширило б простір проектування PoS і дозволило б значно спростити технічне спрощення, зробило б його більш безпечним, дозволивши Helios SNARK безпосередньо на EthereumConsensus, і вирішило б проблему квантового опору, зробивши можливим навіть нецікаву, але давню схему підпису, таку як Winternitz.
Багато інших блокчейнів, які стикаються саме з цією проблемою, використовують підхід до безпеки, заснований на комітетах. Під час кожного слота вони випадковим чином вибирають N валідаторів (наприклад, N ≈ 1000), які відповідають за остаточне підтвердження слота. Варто нагадати, чому такого підходу недостатньо, адже він не передбачає підзвітності.
Щоб зрозуміти чому, припустимо, що 51% атак відбулися. Це може бути невиліковна атака розвороту або атака цензури. Для того, щоб здійснити атаку, вам все одно потрібно, щоб економічний суб’єкт контролював більшу частину частки, щоб домовитися про атаку, тобто запустити програмне забезпечення, яке бере участь в атаці, і взяти участь в атаці з усіма валідаторами, які в кінцевому підсумку будуть обрані до комітету. Математично випадкова вибірка це забезпечує. Однак покарання, які вони отримали за це, були мінімальними, оскільки більшість валідаторів, які погодилися на атаку, в кінцевому підсумку не були обрані до комітету, і тому їх не бачили.
В даний час Ethereum робить прямо протилежне. Якщо станеться атака на 51%, більшій частині всієї колекції валідаторів атак буде скорочено депозит. Поточна вартість атаки становить близько 9 млн ETH (близько $20 млрд), і передбачається, що відключення синхронізації мережі здійснюється найбільш сприятливим для зловмисника чином.
Я думаю, що це висока ціна, але це занадто висока ціна, і ми можемо піти на деякі жертви в цьому питанні. Навіть вартості атаки в 1-2 мільйони ETH цілком достатньо. Крім того, основний ризик централізації, який зараз існує в Ethereum, відображається зовсім в іншому місці: якщо мінімальна сума депозиту буде знижена майже до нуля, потужність великомасштабних стейкінг-пулів не сильно зменшиться.
Ось чому я виступаю за середнє рішення: піти на деякі жертви в обов’язках валідатора, але при цьому підтримувати високий загальний обсяг ETH, який можна скоротити, і в обмін на це ми зможемо насолоджуватися більшістю переваг меншого набору валідаторів.
Припускаючи, що використовується традиційний протокол консенсусу з двома раундами (наприклад, протокол, що використовується Tendermint, і протокол, який неминуче використовує SSF), кожен валідатор, що бере участь, повинен мати дві підписи на слот. Нам потрібно вирішувати цю реальність, і я бачу, що є три основні шляхи вирішення цієї проблеми.
Дзен Python містить дуже важливу фразу:
Для цього має бути один, а краще лише один. )
Наразі Ethereum порушує це правило, коли справа доходить до рівності стейкінгу, оскільки ми одночасно впроваджуємо дві різні стратегії для досягнення цієї мети: (i) невеликий незалежний стейкінг і (ii) децентралізовані пули стейкінгу з використанням технології розподілених валідаторів (DVT). З вищевказаних причин (i) можна підтримати лише кількох індивідуальних стейкерів, і завжди буде багато людей, чия мінімальна сума депозиту занадто велика. Однак Ethereum платить дуже високу технічну вартість підтримки (i).
Одне з можливих рішень - здатися (i) і піти на повну (ii). Ми можемо збільшити мінімальну суму депозиту до 4096 ETH і встановити загальний ліміт валідатора на рівні 4096 (близько 16,7 мільйона ETH). Очікується, що дрібні стейкери приєднаються до пулу DVT: надавши капітал або ставши операторами вузлів. Щоб запобігти зловживанням з боку зловмисників, роль оператора вузла повинна бути певним чином обмежена порогом престижу, і пули будуть конкурувати, пропонуючи різні варіанти в цьому відношенні. Надання капіталу буде інклюзивним.
Ми можемо зробити стейкінг у цій моделі більш «пробачливим», встановивши ліміт штрафу (наприклад, 1/8 від загальної суми депозиту). Це дозволить знизити довіру до операторів Node, хоча до цього варто ставитися з обережністю через окреслені проблеми.
Ми створили два рівні стейкерів: «важкий» рівень, який вимагає 4096 ETH для участі в остаточному підтвердженні стану, і «легкий» рівень без мінімальних вимог (без затримок депозитів і зняття коштів, без урізаних вразливостей), додавши другий рівень безпеки. Для того, щоб кінцевий стан блоку був підтверджений, потрібне як підтвердження кінцевого стану важкого шару, так і принаймні 50% легкого шару легких доказів онлайн-валідаторів.
Ця неоднорідність корисна для цензури та стійкості до атак, оскільки як важкі, так і легкі шари повинні бути пошкоджені, щоб атака була успішною. Якщо один шар пошкоджений, а інший ні, ланцюг зупиниться, а якщо важкий шар пошкоджений, це може бути покарано.
Ще одна перевага цього полягає в тому, що легкий рівень може містити ETH, який також використовується як застава в додатку. Основний недолік полягає в тому, що стейкінг стає менш рівним через встановлення розриву між дрібними та великими стейкерами.
Ми застосовуємо підхід, схожий на дизайн суперкомітету, запропонований тут: для кожного слота ми вибираємо 4096 активних валідаторів на даний момент і ретельно коригуємо набір у кожному слоті, щоб у нас залишався захист.
Однак ми зробили дещо інший вибір параметрів у цій структурі, щоб отримати в ньому «співвідношення ціни та якості». Зокрема, ми дозволяємо валідаторам брати участь з довільно високими балансами, а якщо валідатори мають більше певної кількості ETH (яка мала б бути плаваючою), вони беруть участь у комітетах у кожному слоті. Якщо валідатор має N<M ETH, то він має ймовірність N/M у будь-якому заданому слоті для участі в комітеті.
Тут у нас є цікавий важіль для відокремлення «ваги» на заохочувальній меті від «ваги» на цілі консенсусу: винагорода для кожного валідатора в комітеті має бути однаковою (принаймні для валідаторів, які використовують ≤M ETH), щоб середня винагорода залишалася пропорційною балансу, але ми все одно можемо розрахувати вагу валідатора консенсусу в комітеті, зваживши ETH. Це гарантує, що кількість ETH, необхідних для порушення остаточності, дорівнює більш ніж 1/3 від загальної кількості ETH в комітеті.
Приблизний аналіз закону Ціпфа обчислює цю суму ETH наступним чином:
Примітка: Для того, щоб більш наочно відобразити обчислені дані, наступними кроками будуть скріншоти

Основним недоліком такого підходу є незначне збільшення складності випадкового вибору валідаторів у протоколі, щоб ми могли отримати консенсусну безпеку у разі зміни комітету.
Основна перевага полягає в тому, що він зберігає незалежний стейкінг у впізнаваній формі, підтримує однокласову систему і навіть дозволяє знизити мінімальну суму депозиту до дуже низького рівня (наприклад, 1 ETH).
Якщо ми вирішимо дотримуватися 8192 підписів після протоколу SSF, це значно полегшить роботу для реалізаторів технологій та розробників побічної інфраструктури, такої як легкі клієнти. Клієнти консенсусу можуть бути простішими для будь-кого, і користувачі, ентузіасти стейкінгу та інші можуть негайно працювати над цим припущенням. Майбутнє навантаження протоколу Ethereum більше не є невідомим: майбутнє може бути збільшено хардфорком, але тільки в тому випадку, якщо розробники будуть впевнені, що технологія досить покращилася, щоб обробляти більше сигнатур на слот з тим же рівнем легкості.
Решта роботи полягатиме в тому, щоб вирішити, який з трьох методів ми хочемо прийняти, або, можливо, зовсім інший підхід. Це буде питання про те, які компроміси нас влаштовують, зокрема, як ми вирішуємо пов’язані з цим проблеми, такі як стейкінг ліквідності, які можуть бути вирішені окремо від технічних проблем, які зараз набагато простіші.
Посилання на оригінал статті