Зачем нужно несколько закрытых ключей?

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

Открытый ключ — это, по сути, адрес кошелька. Итак, теперь скажем, я хочу получить 10 BTC от Боба. Итак, Боб совершает транзакцию «платит 10 BTC на адрес кошелька #####(мой)» и подписывает ее своим закрытым ключом.

Я (или валидаторы, если на то пошло) могу проверить это, просмотрев цифровую подпись с открытым ключом Боба. И если мне нужно отправить 10 BTC Бобу, я делаю то же самое, что и выше.

Чего я не понимаю, так это какой смысл иметь несколько закрытых ключей, когда достаточно одного? (Я где-то читал, что кошельки служат скорее хранилищем для ключей, чем для хранения биткойнов, поэтому и сомневаюсь).

Кроме того, если есть много закрытых ключей (=> открытые ключи => адрес кошелька), относящихся к каждой транзакции, как становится возможным отследить предыдущие транзакции, поскольку каждая из них имеет другой адрес?

Ответы (2)

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

Да, если кошелек следует BIP 32 (иерархические детерминированные кошельки), то это так. Некоторые старые типы кошельков будут просто создавать случайные новые ключи, но это затрудняет эффективное создание резервных копий.

Открытый ключ — это, по сути, адрес кошелька.

Не совсем так: открытый ключ хэшируется для получения публичного адреса.

Я (или валидаторы, если на то пошло) могу проверить это, просмотрев цифровую подпись с открытым ключом Боба.

Правильно, открытый ключ включен в данные транзакции, чтобы можно было проверить подпись.

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

Чего я не понимаю, так это какой смысл иметь несколько закрытых ключей, когда достаточно одного?

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

Я где-то читал, что кошельки служат скорее хранилищем для ключей, чем хранилищем для биткойнов, поэтому сомнения

Это правда. Сами биткойны не «хранятся в кошельке», скорее, их история публично отслеживается в распределенном реестре блокчейнов. Это просто закрытые ключи, которые позволяют потратить некоторое количество биткойнов, которые будет отслеживать ваше приложение-кошелек.

Кроме того, если есть много закрытых ключей (=> открытые ключи => адрес кошелька), относящихся к каждой транзакции, как становится возможным отследить предыдущие транзакции, поскольку каждая из них имеет другой адрес?

Ваш кошелек сможет без проблем отслеживать историю ваших транзакций, но сторонние наблюдатели не смогут (в этом весь смысл! Конфиденциальность важна).

Что касается последнего пункта, как именно он работает? Я понимаю, что сторонние наблюдатели могут следить за всеми используемыми адресами и тем, куда они отправляют свои биткойны. Он просто не знает, у кого есть закрытый ключ для этих открытых ключей/адресов?
@totalMongot да, именно так. Стороны сделки будут знать, какие адреса принадлежат им. Сторонние наблюдатели могут видеть адреса, но то, кто контролирует/владеет каждым адресом, не обязательно будет им известно.
спасибо вам за ответ :)

Основная причина использования нескольких закрытых ключей — конфиденциальность. Допустим, вы получили 1 BTC на адрес A и хотите отправить 0,1 BTC кому-то на адрес X. (Для упрощения расчетов мы пренебрежем комиссией за перевод).

0.1 BTC Address A -> Address X
0.9 BTC Address A -> Address B

Теперь предположим, что вы пытаетесь отследить какие-либо расходы пользователя по адресу A. Как узнать, владеет ли он адресом X или адресом B? Если вы отправите сдачу обратно на адрес А, то легко продолжить отслеживать расходы пользователя после 1-й транзакции. Таким образом, приложения-кошельки отслеживают все вновь сгенерированные адреса для сдачи (поскольку оно их сгенерировало), поэтому они могут быть в курсе всех неизрасходованных биткойнов пользователя.

Другой причиной может быть управление несколькими учетными записями для целей бухгалтерского учета. BIP32 — это общий стандарт для создания дополнительных учетных записей с использованием одной и той же пары мастер-ключей.