


Серия: Zero to Zero Knowledge
Мнемонические seed-фразы лежат в основе одного из важнейших аспектов криптовалюты — самостоятельного хранения средств.
Сегодня мы узнаем, как генерируется и используется seed-фраза в кошельках.
Фразы восстановления определены спецификацией BIP-39, самым распространённым типом фраз восстановления, используемым сегодня.
Создание фраз восстановления начинается с генерации случайности. Чем больше энтропии, тем выше безопасность. 128 бит энтропии считаются достаточными для большинства пользователей.

В зависимости от длины исходной энтропии фраза восстановления будет состоять из 12–24 слов.
Мы начинаем с генерации 128 бит энтропии.
Мы хешируем энтропию с помощью SHA256. Первые несколько бит этого хеша становятся контрольной суммой.
Это даёт нам уникальный отпечаток нашей энтропии.

Все 132 бита (128 бит энтропии + 4 бита контрольной суммы) разделяются на блоки по 11 бит.
Каждая 11-битная последовательность преобразуется в десятичное число (0–2047).
Списки слов BIP-39 содержат ровно 2048 слов (английский, испанский, китайский и т. д.).
Эти числа используются для поиска соответствующего слова в списке.

Результат: теперь у нас есть безопасная, удобочитаемая фраза восстановления из 12 слов!
Используя фразу восстановления, кошелёк может генерировать ключи для создания платёжных адресов и разных аккаунтов кошелька.
Сгенерированные ключи являются детерминированными — один и тот же вход всегда даёт один и тот же результат.
Seed кошелька выводится из мнемонической фразы с помощью функции вывода ключей (KDF):
Это создаёт 64-байтный (512-битный) seed.

Seed разделяется на две 32-байтные последовательности:
Они используются в иерархических детерминированных (HD) кошельках для вывода дочерних ключей.
В Zcash право просмотра или право траты можно делегировать независимо для поддеревьев без компрометации мастер-seed.
ZIP-32 определяет стандарт иерархической детерминированной генерации ключей, адаптированный под функции приватности Zcash.
Из Expanded Spending Key выводятся:
Различные механизмы вывода создают внешние адреса, подходящие для передачи отправителям в экранированных пулах (Sapling и Orchard).

Zcash также поддерживает внутренние адреса для операций кошелька, таких как Auto-Shielding.
Оригинальный тред от ZecHub (@ZecHub)
https://x.com/ZecHub/status/1624125037945946145
Эта страница была составлена на основе оригинального треда Zero to Zero Knowledge для вики ZecHub.