Ключи в Эфириуме на основе доказательства доли владения
Эфириум защищает активы пользователей с помощью криптографии с открытым и приватным ключами. Открытый ключ используется в качестве основы для адреса Эфириума — то есть он виден широкой публике и используется как уникальный идентификатор. Приватный (или «секретный») ключ должен быть доступен только владельцу аккаунта. Приватный ключ используется для «подписания» транзакций и данных, чтобы криптография могла доказать, что владелец одобряет определенное действие конкретного приватного ключа.
Ключи Эфириума генерируются с использованием криптографии на эллиптических кривых (opens in a new tab).
Однако, когда Эфириум перешел от доказательства выполнения работы (PoW) к доказательству доли владения (PoS), в Эфириум был добавлен новый тип ключа. Исходные ключи по-прежнему работают точно так же, как и раньше — ключи на основе эллиптических кривых, защищающие аккаунты, не изменились. Тем не менее, пользователям понадобился новый тип ключа для участия в доказательстве доли владения путем стейкинга ETH и запуска валидаторов. Эта потребность возникла из-за проблем масштабируемости, связанных с передачей множества сообщений между большим количеством валидаторов, что требовало криптографического метода, который можно было бы легко агрегировать для уменьшения объема коммуникации, необходимого сети для достижения консенсуса.
Этот новый тип ключа использует схему подписи Boneh-Lynn-Shacham (BLS) (opens in a new tab). BLS обеспечивает очень эффективную агрегацию подписей, но также позволяет выполнять обратную разработку агрегированных индивидуальных ключей валидаторов и идеально подходит для управления действиями между валидаторами.
Два типа ключей валидатора
До перехода на доказательство доли владения у пользователей Эфириума был только один приватный ключ на основе эллиптических кривых для доступа к своим средствам. С введением доказательства доли владения пользователям, желающим стать соло-стейкерами, также потребовались ключ валидатора и ключ для вывода.
Ключ валидатора
Ключ подписания валидатора состоит из двух элементов:
- Приватный ключ валидатора
- Открытый ключ валидатора
Назначение приватного ключа валидатора — подписание ончейн-операций, таких как предложения блоков и аттестации. Из-за этого данные ключи должны храниться в горячем кошельке.
Эта гибкость имеет то преимущество, что ключи подписания валидатора можно очень быстро переносить с одного устройства на другое, однако, если они были утеряны или украдены, злоумышленник может действовать злонамеренно несколькими способами:
- Подвергнуть валидатор слэшингу путем:
- Выступления в роли предлагающего и подписания двух разных блоков сигнальной сети для одного и того же слота
- Выступления в роли аттестующего и подписания аттестации, которая «окружает» другую
- Выступления в роли аттестующего и подписания двух разных аттестаций, имеющих одну и ту же цель
- Принудительно инициировать добровольный выход, что останавливает стейкинг валидатора и предоставляет доступ к его балансу 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) к своим кошелькам. Мнемоника — это последовательность слов, которая действует как начальное значение (сид) для приватного ключа. В сочетании с дополнительными данными мнемоника генерирует хеш, известный как «мастер-ключ». Его можно представить как корень дерева. Ветви от этого корня затем могут быть получены с использованием иерархического пути, так что дочерние узлы могут существовать как комбинации хеша их родительского узла и их индекса в дереве. Прочтите о стандартах 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. На схеме ниже одна мнемоническая фраза используется для хранения трех ключей для вывода, каждый из которых связан с двумя валидаторами.

