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

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

Пара ключей

Что такое пара ключей?
Пара ключей представляет собой один приватный ключ вместе с единственным публичным ключом, который он порождает; это единица владения, в которой считаются каждая подпись биткоина и каждый кворум мультиподписи.

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

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

Один приватный ключ дает ровно один публичный ключ, и это соответствие никогда не меняется. Подайте один и тот же секрет длиной 32 байта в одну и ту же арифметику кривой на любом устройстве, в любом кошельке, с разницей в десять лет, и получится идентичный публичный ключ. Именно эта детерминированность позволяет восстановить кошелек из резервной копии, и именно поэтому никому не нужно хранить публичные ключи: их пересчитывают по мере необходимости.

Пара распределяет работу при каждом расходовании. Ваше устройство использует приватную половину, чтобы создать подпись, привязанную к той самой транзакции, которая подписывается, а тысячи узлов используют публичную половину, чтобы подтвердить, что подпись соответствует и ключу, и этой транзакции. Измените один выход на один сатоши, и подпись перестанет проверяться. Размер подписи зависит от схемы: подпись Schnorr по BIP-340 занимает ровно 64 байта, а более старые подписи ECDSA в кодировке DER занимают 71 или 72 байта, что отчасти объясняет, почему транзакции, тратящие выходы Taproot, дешевле.

Иерархические детерминированные кошельки превращают один секрет в неограниченный запас пар. Деривация по BIP-32 предлагает 2 147 483 648 обычных индексов дочерних ключей на каждом уровне дерева, плюс столько же усиленных, и все они воспроизводятся из одной сид-фразы. Ваш кошелек выдает новую пару на каждый платеж из этого запаса, и именно это делает ротацию адресов практичной, а не бухгалтерским кошмаром.

Где это видно

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

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

Совместное подписание показывает ту же структуру. Частично подписанная транзакция биткоина, определенная в BIP-174, перемещается между устройствами, собирая по одной подписи на пару, пока не будет достигнут кворум. Каждый подписывающий касается только своей приватной половины и видит публичные половины всех остальных, и именно для такого разделения и предназначена пара.

Пара ключей vs расширенный ключ

Пара ключей является листом, а расширенный ключ является ветвью. Расширенный ключ, записываемый как xprv или xpub, представляет собой ключ вместе с цепным кодом длиной 32 байта, и именно этот дополнительный материал позволяет ему порождать дочерние ключи. Простая пара ключей ничего не порождает: она управляет теми биткоинами, которые были привязаны к ней, и на этом останавливается. У этого различия есть резкое практическое следствие. Утечка одного публичного ключа раскрывает один адрес, а утечка xpub раскрывает все адреса, которые когда-либо создаст ветвь под ним.

Не путать с

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

Сколько пар ключей у моего кошелька?

Фактически неограниченное число. Современный кошелек порождает новую пару для каждого адреса из одной сид-фразы с помощью дерева BIP-32, и резервную копию нужно делать только для сид-фразы, потому что каждую пару под ней можно восстановить по мере необходимости.

Могут ли два человека совместно использовать одну пару ключей?

Они могут скопировать приватный ключ на два устройства, но это совместное хранение в худшем смысле: любая из сторон может потратить в одиночку, и ни одна не может доказать, кто это сделал. Для этого существует мультиподпись: она дает каждому участнику отдельную пару и требует согласованного кворума для перемещения средств.

Читайте далее

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

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

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