Перейти к содержимому
buybitcoinsmart

Глоссарий / Адреса и ключи

Код цепочки мастер-ключа

Другие названия: Мастер-приватный ключ.

Что такое код цепочки мастер-ключа?
Код цепочки мастер-ключа представляет собой правую половину 64-байтового хеша вашего сида и служит дополнением к мастер-приватному ключу, который находится на нулевой глубине дерева HD-кошелька.

Определено в BIP-32.

Каждый ключ, который вы когда-либо будете использовать, происходит от этой единственной пары. Один проход HMAC-SHA512 по сиду с ключом в виде ASCII-строки Bitcoin seed возвращает 64 байта: первые 32 становятся мастер-приватным ключом, а последние 32 становятся кодом цепочки мастер-ключа. Скопируйте сид, и вы скопировали все, что ниже него, и именно поэтому резервная копия представляет собой предложение, а не картотеку.

Как это работает

Генерация мастер-пары выполняется ровно один раз, при создании кошелька. BIP-32 принимает сид длиной от 128 до 512 бит, рекомендует 256 бит и пропускает его через хеш с ключом, описанный выше. Полученная пара является узлом, который записывается как m в начале каждого пути деривации, и выше него ничего нет.

В этот шаг встроена проверка на допустимость. Если левые 32 байта оказываются нулем или числом, большим или равным порядку кривой secp256k1, BIP-32 признает сид недопустимым, и реализация обязана его отклонить. Вероятность столкнуться с любым из этих случаев меньше 1 к 2 в 127-й степени, поэтому ни один кошелек о таком никогда не сообщал, но именно это правило делает каждый принятый сид однозначно пригодным к использованию.

В сериализованном виде корень заявляет о себе сам. Расширенные приватные ключи основной сети несут байты версии 0x0488ADE4 и выводятся как xprv, публичные несут 0x0488B21E и выводятся как xpub. В корне байт глубины равен 0x00, а отпечаток родителя и номер дочернего ключа представляют собой четыре нулевых байта, потому что нет родителя, на которого можно было бы указать.

Число, с которым вы фактически имеете дело, представляет собой отпечаток, а не необработанные байты. Хеширование мастер-публичного ключа с помощью SHA-256, а затем RIPEMD-160 и сохранение первых четырех байтов дает восьмисимвольную шестнадцатеричную строку, которая идентифицирует кошелек, не раскрывая ничего, из нее выводимого.

Где это встречается

Потребительское программное обеспечение полностью скрывает мастер-пару и показывает вместо нее отпечаток. Sparrow выводит его рядом с каждым хранилищем ключей, Bitcoin Core открывает им в квадратных скобках каждую строку вывода listdescriptors, а Coldcard отображает его на главном экране, чтобы вы могли убедиться, какой сид устройство держит в данный момент. Когда поступает PSBT, устройство подписи сравнивает отпечаток в поле происхождения ключа со своим, прежде чем решить, что запрос вообще адресован ему.

В мультиподписи корневой идентификатор перестает быть мелочью. Кошелек 2 из 3 невозможно восстановить по одним лишь трем сид-фразам, потому что для его пересборки нужно знать также отпечаток и путь каждого соподписанта. Поэтому каждый серьезный инструмент для мультиподписи советует хранить дескриптор кошелька рядом со словами, и поэтому потеря дескриптора может оставить заблокированными биткоины, до которых не добраться ни одной отдельной фразой.

Напрямую мастер-приватного ключа вы касаетесь только в одном случае, при импорте. Вставка xprv в программу передает все дерево: каждое назначение, каждый счет, каждый будущий адрес, без возможности сузить предоставление до одной ветви. Частичной версии корня не существует, поэтому аппаратные кошельки вообще отказываются его экспортировать.

Код цепочки мастер-ключа vs сид-фраза

Сначала идет фраза, а мастер-пара идет второй, и они относятся к разным стандартам. BIP-39 превращает 12 или 24 слова в сид длиной 512 бит, прогоняя PBKDF2 на протяжении 2048 раундов; затем BIP-32 превращает этот сид в мастер-приватный ключ и код цепочки мастер-ключа. Слои остаются достаточно независимыми, чтобы добавление кодовой фразы (passphrase) меняло сид, а значит, и мастер-пару, и каждый адрес под ней, тогда как слова на вашей карточке остаются в точности прежними. Electrum доказывает это с другой стороны: его фразы восстановления вовсе не являются BIP-39, и при этом порождают обычный корень BIP-32.

Не путать с

Часто задаваемые вопросы

Что такое мастер-отпечаток, который мой кошелек постоянно показывает?

Это восьмисимвольный идентификатор вашего корневого ключа, взятый из первых четырех байтов хеша мастер-публичного ключа. Кошельки и устройства подписи используют его, чтобы убедиться, что транзакция или дескриптор относятся к сид-фразе, которую они хранят.

Стоит ли когда-либо экспортировать или хранить мастер-приватный ключ?

Нет. xprv предоставляет контроль над всеми счетами и всеми будущими адресами сразу, и ни одному кошельку он от вас не нужен. Вместо этого сделайте резервную копию фразы восстановления и экспортируйте только расширенные публичные ключи уровня счета, когда требуется доступ только для наблюдения.

Связанные термины

Еще в разделе «Адреса и ключи»

Читать эту страницу на английском