несколько вопросов о том, как работает HD-кошелек

Я прочитал HD-кошелек из разных источников и получил общее представление о нем, но все еще смущен некоторыми деталями.

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

2) В зависимости от ответа 1), как это работает для отправки биткойнов кому-то еще в случае HD-кошелька? Если все публичные адреса имеют свои собственные UTXO, то кошелек должен выбирать количество UTXO в качестве входных данных для каждой новой транзакции. Как это работает?

3) Используем ли мы главный закрытый ключ для подписи каждой транзакции?

спасибо за помощь

Ответы (1)

1) ...Как рассчитывается мой общий UTXO?...

Каждый узел вычисляет свой собственный набор UTXO, единого «глобального набора UTOX» не существует. Вы можете владеть некоторым подмножеством UTXO, но пула нет. Если вы получаете платежи на один и тот же адрес более одного раза, каждый из них будет своим собственным UTXO.

2) ...Если все публичные адреса имеют свои собственные UTXO, то кошелек должен выбирать количество UTXO в качестве входных данных для каждой новой транзакции. Как это работает?

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

3) Используем ли мы главный закрытый ключ для подписи каждой транзакции?

Нет, каждый UTXO может быть подписан только дочерним закрытым ключом для этого конкретного адреса. В случае HD-кошелька ключ xpriv используется для получения дочернего закрытого ключа для каждого адреса. Затем эти дочерние закрытые ключи можно использовать для подписи транзакций.

Каждый адрес, полученный из HD-кошелька, выглядит точно так же, как и любой другой биткойн-адрес, невозможно узнать, что он пришел из HD-кошелька. Таким образом, чтобы потратить UTXO, вам необходимо предоставить подпись, сделанную закрытым ключом этого конкретного адреса. Сеть не знает, что ваш адрес был получен из ключа xrpiv, поэтому, если вы используете свой ключ xpriv для подписи транзакции, он будет недействителен.

Или в более общем смысле: HD — это просто способ генерировать адреса и соответствующие им закрытые ключи. Все вопросы, заданные OP, не связаны с этим (ответ на них не зависит от того, являются ли адреса результатом происхождения HD или нет).
Спасибо. Я могу ошибаться, но правда ли, что незащищенные открытые ключи не имеют закрытых ключей? если да, то как мы можем подписать транзакцию, сделанную с помощью этих адресов... и спасибо @PieterWuille
Все открытые ключи имеют соответствующий закрытый ключ. Незащищенное происхождение HD просто означает, что вы можете получить дочерний открытый ключ из родительского открытого ключа. Но по-прежнему существует соответствующий дочерний закрытый ключ (который вы можете получить только с помощью главного родительского ключа), без которого вы не можете подписать.
Согласно этому ответу, здесь некоторые части неверны. Из главного закрытого ключа все производные ключи могут быть сгенерированы повторно, и, таким образом, средства могут быть отправлены вместе с мастер-ключом: bitcoin.stackexchange.com/a/79205/87493
@delete главный закрытый ключ используется для получения дочерних закрытых ключей, а эти дочерние ключи используются для трат с дочерних адресов. Главный закрытый ключ нельзя использовать для подписи транзакций с дочерних адресов. Этот ответ говорит о сохранении только мнемонической исходной фразы в качестве упрощенного и безопасного метода резервного копирования. Программное обеспечение кошелька затем будет использовать seed-фразу для получения дочерних ключей, с помощью которых можно потратить ваши монеты.