Генерируется ли новый закрытый ключ при каждой транзакции?

Итак, представьте, что я купил 1 BTC, поэтому у меня есть свой закрытый ключ, сгенерированный моим онлайн-кошельком, а также мой открытый ключ, который я могу передать людям/друзьям. Мой вопрос: если я потрачу 0,5 на покупку яблок на веб-сайте?

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

1) На сайт отправляется всего 0,5 BTC, у меня еще осталось 0,5 BTC на приватном ключе А

2) Всего через протокол отправляется 1 BTC, таким образом, сдача возвращается мне. На каком ключе? Ключ A, где у меня был 1 BTC? Или новый сгенерирован? (Ключ Б)

Спасибо :)

Поскольку вы используете blockchain.info в качестве поставщика своего кошелька, вероятно, будет лучше, если вы спросите их, как управляются ваши ключи, или прочитаете их часто задаваемые вопросы.
Я действительно не уверен, о чем должен быть этот вопрос. 1) Вы спрашиваете, использует ли blockchain.info адреса для вывода сдачи? 2) Вы спрашиваете, может ли быть более одного адреса на закрытый ключ? 3) Вы вообще спрашиваете о кошельках, управляющих несколькими адресами?
Привет, я спрашиваю: у меня есть 1 BTC, я покупаю что-то на 0,5 BTC. Куда пойдет сдача 0,5 в моем кошельке?
Кто-то еще сказал мне, что сдачи нет, поэтому, если у вас есть 1 BTC на адресе A, вы хотите потратить 0,5, ну, вы тратите его, и у вас все еще есть 0,5 BTC на адресе A.

Ответы (2)

Каждому закрытому ключу соответствует ровно один открытый ключ, и каждый открытый ключ имеет один адрес. Всякий раз, когда генерируется новый адрес, это означает, что генерируются новый закрытый ключ и открытый ключ. Обратите внимание, что с BIP32 и BIP44 закрытые ключи могут быть сгенерированы детерминировано из мастер-ключа или начального числа, и в этом случае эти новые закрытые ключи не нужно сохранять — их можно просто восстановить из начального или основного ключа, когда это необходимо.

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

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

Хорошо, спасибо, но это означает, что я все еще храню свой ПЕРВЫЙ (тот же самый) закрытый ключ моего кошелька с полученной сдачей? (внутренне они должны были отправить его обратно на мой первый адрес), верно?
Я не понимаю вашего комментария.
«Новый ключ используется для каждого изменения в большинстве кошельков, но это делается внутри» какой ключ? новый частный? или публичный?
Отредактировано для пары ключей. Каждый закрытый ключ имеет один открытый ключ (без учета кодировки), и наоборот.

Если бы весь 1 BTC находился в одном неизрасходованном выводе транзакции (UTXO), то вы действительно отправили бы весь 1 BTC в качестве ввода в транзакции и назначили бы его двум новым выходам: 0,5 BTC для оплаты и 0,5 BTC для возврата сдачи. самому себе.

Если 1 BTC был разделен на несколько неизрасходованных выходов транзакций, то у вас может быть комбинация, равная ровно 0,5 BTC, например, вы можете использовать 0,1 BTC + 0,2 BTC + 0,2 BTC. Тогда никакие изменения не будут созданы.

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

Спасибо! Но в любом случае все делается автоматически кошельком, верно? Мне не нужно заботиться о том, был ли BTC в одном неизрасходованном выводе транзакции (UTXO)? Однако когда это действительно полезно знать?
Да, такое управление как раз и является целью программного обеспечения кошелька. Вам может быть интересно узнать о своем UTXO, если вы тщательно контролируете свою конфиденциальность.