Я читал много документов о структуре транзакций BTC и нахожу их действительно запутанными, когда дело доходит до истории с SegWit.
Итак, самое первое, если у меня есть адрес P2SH-P2WPKH, означает ли это, что все выходы на этот адрес (UTXO) по определению являются UTXO segwit?
В документах ( https://bitcoincore.org/en/segwit_wallet_dev/ ) сказано:
Генерация и проверка подписи для P2SH-P2WPKH
Для расходования несегвитного UTXO алгоритм генерации подписи не изменился.
Для расходования П2Ш-П2ВПХ:
- scriptSig ДОЛЖЕН содержать ТОЛЬКО push redeemScript
...
Таким образом, либо все UTXO для адреса P2SH-P2WPKH являются segwit, либо они являются SegWit, если транзакция SegWit была сделана на этот адрес (что на самом деле не имеет большого смысла для меня, так как тогда возникает проблема куриного яйца).
Почему они написали эту часть «Для расходования несегвитного UTXO алгоритм генерации подписи неизменен» , какой случай он охватывает? Если у вас есть адрес P2SH-P2WPKH, но вы берете иностранные UTXO для траты (которые были направлены не на ваш адрес)?
Еще одна непонятная часть — скрипты для адреса P2SH-P2WPKH. Итак, вот мой примерный адрес: 3MxYPuvEcKDdaEG1xoGyddqir6C4b66MJi.
И вот транзакция, которая была совершена с ним: https://blockchain.info/rawtx/6c2806587d5cdb3f0363e43f60b4a84baf37b3012fbde02f108f4eb1bdcede42
На основе этого pubKeyScript вывода - это a914de523116b281c96ff1e204ea2ff435b75d48f0de87 , что переводится как:
OP_HASH160 de523116b281c96ff1e204ea2ff435b75d48f0de OP_EQUAL
Итак, de523116b281c96ff1e204ea2ff435b75d48f0de — это hash160 скрипта выкупа. Единственный найденный мной скрипт выкупа, который соответствует этому хэшу, выглядит следующим образом:
0 389f26d8d616cb96df1cfd6d9989248a30b933b9
Который является программным сценарием свидетеля v0 (0 sha160sha256 (pubkey), так что это означает, что я должен создавать транзакции SegWit, верно? "0" нажать туда я верю.
Я чувствую, что делаю что-то не так в этой части, и в результате подписываюсь либо не так, либо не так...
Очень ценю любые объяснения.
если у меня есть адрес P2SH-P2WPKH, означает ли это, что все выходы на этот адрес (UTXO) по определению являются UTXO segwit?
Да, биткойн, отправленный на P2SH-P2WPKH
адрес, создаст segwit UTXO
.
Почему они написали эту часть «Для расходования несегвитного UTXO алгоритм генерации подписи неизменен», какой случай он охватывает? Если у вас есть адрес P2SH-P2WPKH, но вы берете для траты какие-то иностранные UTXO (которые были направлены не на ваш адрес)?
Я думаю, вы правы, это звучит так, как будто вы просто говорите, что если вы хотите отправить на адрес SegWit, вам не нужно подписывать ввод без SegWit иначе, чем раньше.
Вот хороший справочный пример: BIP 141: P2SH(P2WPKH) . Чтобы потратить биткойны, отправленные на ваш адрес 3MxYPuvEcKDdaEG1xoGyddqir6C4b66MJi
, вы должны предоставить следующее:
witness: <signature> <pubkey>
scriptSig: <0 <20-byte-key-hash>>
(0x160014{389f26d8d616cb96df1cfd6d9989248a30b933b9})
Возможно, вы забываете о push-операциях 0x16
и/или 0x14
в scriptSig
?
Рагхав Суд
Yes, Bitcoin sent to a P2SH-P2WPKH address will produce a segwit UTXO.
Технически тип utxo по-прежнему p2sh. Он раскрывается как segwit только тогда, когда он потрачен. Вы могли бы полностью потратить его как p2sh, если бы вы могли взломать скрипт выкупа, который удовлетворяет хэшу и может быть решен вами, хотя это довольно невозможно. Несмотря на это, сам вывод - p2sh.Дж.Бачук
Ярослав Горячев
Ярослав Горячев
Дж.Бачук
0x16
потому что он говорит интерпретатору поместить в стек следующие 22 байта (сценарий выкупа).