Ключі в Етеріумі на базі доказу частки (PoS)
Етеріум захищає активи користувачів за допомогою криптографії з відкритим і приватним ключами. Відкритий ключ використовується як основа для адреси Етеріуму — тобто він видимий для широкого загалу і використовується як унікальний ідентифікатор. Приватний (або «секретний») ключ повинен бути доступним лише власнику акаунта. Приватний ключ використовується для підписання транзакцій та даних, щоб криптографія могла довести, що власник схвалює певну дію конкретного приватного ключа.
Ключі Етеріуму генеруються за допомогою криптографії на еліптичних кривих (opens in a new tab).
Однак, коли Етеріум перейшов від доказу виконання роботи (PoW) до доказу частки (PoS), до Етеріуму було додано новий тип ключа. Оригінальні ключі все ще працюють так само, як і раніше — не було жодних змін у ключах на основі еліптичних кривих, що захищають акаунти. Проте користувачам знадобився новий тип ключа для участі в доказі частки (PoS) шляхом стейкінгу ETH та запуску валідаторів. Ця потреба виникла через проблеми масштабованості, пов'язані з передачею багатьох повідомлень між великою кількістю валідаторів, що вимагало криптографічного методу, який можна було б легко агрегувати, щоб зменшити обсяг комунікації, необхідний мережі для досягнення консенсусу.
Цей новий тип ключа використовує схему підпису Boneh-Lynn-Shacham (BLS) (opens in a new tab). BLS забезпечує дуже ефективну агрегацію підписів, але також дозволяє зворотну розробку агрегованих індивідуальних ключів валідаторів і є ідеальним для управління діями між валідаторами.
Два типи ключів валідатора
До переходу на доказ частки (PoS) користувачі Етеріуму мали лише один приватний ключ на основі еліптичних кривих для доступу до своїх коштів. Із запровадженням доказу частки (PoS) користувачам, які бажали стати соло-стейкерами, також знадобилися ключ валідатора та ключ для виведення.
Ключ валідатора
Ключ підписання валідатора складається з двох елементів:
- Приватний ключ валідатора
- Відкритий ключ валідатора
Призначення приватного ключа валідатора полягає в підписанні ончейн-операцій, таких як пропозиції блоків та атестації. Через це такі ключі повинні зберігатися в гарячому гаманці.
Ця гнучкість має перевагу в тому, що ключі підписання валідатора можна дуже швидко переміщувати з одного пристрою на інший, однак, якщо вони були втрачені або вкрадені, зловмисник може діяти зловмисно кількома способами:
- Спровокувати слешинг валідатора шляхом:
- Виступаючи як пропонувальник і підписуючи два різні блоки сигнального ланцюга (beacon blocks) для одного слота
- Виступаючи як атестатор і підписуючи атестацію, яка «оточує» іншу
- Виступаючи як атестатор і підписуючи дві різні атестації, що мають однакову ціль
- Примусово ініціювати добровільний вихід, що зупиняє стейкінг валідатора та надає доступ до його балансу ETH власнику ключа для виведення
Відкритий ключ валідатора включається в дані транзакції, коли користувач вносить ETH на контракт стейкінгового депозиту. Це відомо як дані депозиту, і це дозволяє Етеріуму ідентифікувати валідатора.
Облікові дані для виведення
Кожен валідатор має властивість, відому як облікові дані для виведення. Перший байт цього 32-байтового поля ідентифікує тип акаунта: 0x00 представляє оригінальні облікові дані BLS (до оновлення Шапелла, без можливості виведення), 0x01 представляє застарілі облікові дані, які вказують на адресу виконання, а 0x02 представляє сучасний тип облікових даних із компаундуванням.
Валідатори з ключами BLS типу 0x00 повинні оновити ці облікові дані, щоб вони вказували на адресу виконання, для активації виплат надлишкового балансу або повного виведення зі стейкінгу. Це можна зробити, вказавши адресу виконання в даних депозиту під час початкової генерації ключів, АБО використавши ключ для виведення пізніше, щоб підписати та транслювати повідомлення BLSToExecutionChange.
Більше про облікові дані для виведення валідатора
Ключ для виведення
Ключ для виведення знадобиться для оновлення облікових даних для виведення, щоб вони вказували на адресу виконання, якщо це не було налаштовано під час початкового депозиту. Це дозволить розпочати обробку виплат надлишкового балансу, а також дозволить користувачам повністю вивести свої застейкані ETH.
Як і ключі валідатора, ключі для виведення також складаються з двох компонентів:
- Приватний ключ для виведення
- Відкритий ключ для виведення
Втрата цього ключа до оновлення облікових даних для виведення на тип 0x01 означає втрату доступу до балансу валідатора. Валідатор все ще може підписувати атестації та блоки, оскільки ці дії вимагають приватного ключа валідатора, однак у цьому майже немає сенсу, якщо ключі для виведення втрачено.
Відокремлення ключів валідатора від ключів акаунта Етеріуму дозволяє одному користувачеві запускати кілька валідаторів.
Примітка: Вихід з обов'язків стейкінгу та виведення балансу валідатора наразі вимагає підписання повідомлення про добровільний вихід (VEM) (opens in a new tab) за допомогою ключа валідатора. Однак EIP-7002 (opens in a new tab) — це пропозиція, яка в майбутньому дозволить користувачеві ініціювати вихід валідатора та виведення його балансу шляхом підписання повідомлень про вихід за допомогою ключа для виведення. Це зменшить припущення довіри, дозволяючи стейкерам, які делегують ETH провайдерам стейкінгу як послуги, зберігати контроль над своїми коштами.
Отримання ключів із сід-фрази
Якби кожні застейкані 32 ETH вимагали нового набору з 2 повністю незалежних ключів, управління ключами швидко стало б незручним, особливо для користувачів, які запускають кілька валідаторів. Натомість кілька ключів валідатора можна отримати з одного спільного секрету, і зберігання цього єдиного секрету дозволяє отримати доступ до кількох ключів валідатора.
Мнемоніки (opens in a new tab) та шляхи є важливими функціями, з якими користувачі часто стикаються, коли отримують доступ (opens in a new tab) до своїх гаманців. Мнемоніка — це послідовність слів, яка діє як початкове джерело (seed) для приватного ключа. У поєднанні з додатковими даними мнемоніка генерує хеш, відомий як «майстер-ключ». Його можна уявити як корінь дерева. Гілки від цього кореня потім можна отримати за допомогою ієрархічного шляху, щоб дочірні вузли могли існувати як комбінації хешу їхнього батьківського вузла та їхнього індексу в дереві. Прочитайте про стандарти BIP-32 (opens in a new tab) та BIP-19 (opens in a new tab) для генерації ключів на основі мнемоніки.
Ці шляхи мають таку структуру, яка буде знайома користувачам, що взаємодіяли з апаратними гаманцями:
m/44'/60'/0'/0`
Скісні риски в цьому шляху розділяють компоненти приватного ключа таким чином:
master_key / purpose / coin_type / account / change / address_index
Ця логіка дозволяє користувачам прив'язати якомога більше валідаторів до однієї мнемонічної фрази, оскільки корінь дерева може бути спільним, а диференціація може відбуватися на гілках. Користувач може отримати будь-яку кількість ключів із мнемонічної фрази.
[m / 0]
/
/
[m] - [m / 1]
\
\
[m / 2]
Кожна гілка відокремлюється символом /, тому m/2 означає почати з майстер-ключа і слідувати гілкою 2. На схемі нижче одна мнемонічна фраза використовується для зберігання трьох ключів для виведення, кожен з яких має два пов'язані валідатори.

