Чтобы узнать больше о Bitcoin транзакциях, я изучаю бинарный файл и не использую никаких инструментов, таких как BitcoinTx или Bitcoin -cli. Во всяком случае, я столкнулся с некоторым затруднением при попытке подписать транзакцию Segwit. Теперь это простая транзакция, один UTXO и один получатель, и это транзакция P2WPKH.
Проблема в том, что для сегвита я не знаю, что поместить в поле SigScript до подписания транзакции. В документации сказано, что она должна быть пустой, но, похоже, это не работает.
02000000010a02214430acee2ed509798187210171bb387075ce2c82ef5a73774d6159387500000000 00 ffffffff
018ca1b404000000001976a914906ec1c4804632c0b067e5a2732c41cdf620c4e688ac0000000001000000
Выше приведена необработанная транзакция, 1 вход, 1 выход. В поле segwit у меня есть 0x00 байт, как указано. Итак, я SHA256 (sha256) выше бинарная, а затем создать свою подписанную сделку segwit, как показано ниже:
1007 * 020000000001010a02214430acee2ed509798187210171bb387075ce2c82ef5a73774d615938750000000017160014d99f1ea19e98d9ed10e5d442be37a44b6b63c477ffffffff 018ca1b404000000001976a914906ec1c4804632c0b067e5a2732c41cdf620c4e688ac 02 4830460221009f5743a2fc62bb9cee292ef79eb3ec3a20a3ed1ec84bdf9e8520592ca1d84f35022100922f887be7283eb0fd73da53efa554e62a589f6e268c0d300ad727791c2f936c 41047d011958b661181242addd300b6d5c51f80d62674555831dd855b34358b57e05fb46477ba167a57b23bf8a492305c0085d8c34aa04d483b7f15a2d551e2ff66200000000 1009 * Таким образом, в выше, я получил мой входной сделки и в SigScript я поместил pu sh из 0, за которым следует 20-байтовый Hash160 из ключа publi c.
Далее, выходная транзакция, которая просто имеет ключ publi c ha sh с OP_DUP, OP_HASH_160 OP_EQUALVERIFY, OP_CHECKSIG.
Наконец идет подпись, которая имеет 02 для 2 частей, 1 является самой подписью (закодированный в дер) и, наконец, ключ publi c.
По какой-то причине он говорит, что подпись неверна, и я понятия не имею, почему. Должен ли SigScript в транзакции фактически быть NULL, прежде чем я подпишу его? Должен ли это быть HASH160 открытого ключа кошелька c, у которого есть средства (например, для транзакции P2PKH), прежде чем я подпишу его?
Любые указатели будут очень благодарны, потому что я думаю, что я близок Мне просто нужно знать, как должна выглядеть транзакция, прежде чем я подпишу ее.