Bitcoin-Core

隔離見證交易 - 非規範 DER 簽名

  • November 19, 2020

錯誤(發送時)

錯誤程式碼:-26

錯誤消息:

64:非強制腳本驗證標誌(非規範 DER 簽名)

交易 010000000001020dcc23ccdb3665779a7657577cd33c5c0660e969ea2ffaf5438c58306ebc9dd201000000fd880100473044022075e1c8751f948b71a79e864040b8e9698e257f0dd65acb3cb6da852a1da8d96602204767d05ac1b75e1f85963c117e51cc8869711e1fe307b51cfdd7763b39e38aa9014730440220647678c47d4a4be2a5f70044e4cf5bf547fb513311401819a114e5a1e72e642002204e9f3847cb2789493446b96dce62acb7abdad06655aefef084bb0d6a49bc99c001473044022079be75240f2a1519559fc3eacfdbeee123403466879d720b9e7f68a45a2b3bef0220585ea1c34766d57e54103ec5102c8fd0925ee2bc1a847797176da9e878d21448014cad53210289d20d3d6e36f28537af3521ce05548fb16baf7d47ac67fbf318db6ed983b9ba21034712e706c1643ec0e9519edf093578886bac1c9c17893138a76111d9a14a2f1b2102a21047ac1a83c8cce21475240b2107a11d76212573a86f0dffe44cdd326f4dab2103430166298971c6282241ef46e866fa9077b4a48eafe4b370e94aef24050dda13210329446142884a33e6100603c6eead5300ec5cf438437f8374ea76dda2daced12855aeffffffff49508924c21b25ee2ff6aed61ccc202793aa992d3e033f12f2bf4a94d6346d0100000000232200207677cf0e71ff26dc2ac7e6b93a5f6b893d39c05a1367ca100cde7a62713ddb4affffffff0240420f00000000001976a9140d7ca1e17524d6c96209cf503fb053613cecf8f688acc0b606000000000017a914fa1cee87827866df00431b5c9a3506b5e31ef4ed87000500473045022100cd569e7f8e5fb6490ef3240d68abdd147f0c3ce4e77bcfd59f587b9a14848bdb02207fe31882d22518af84d3961809b6133c06b34ce6f91c1e579dcff0c58b7519d347304502210099699d11f3fa427c2739580de08fc3a305202a6b1f39c01d8f82e6ad8a9b191902205153041c9a291b81c3ef94cba9d22f3a8df6ee45faab13407ec8a56843051043483045022100b57e36875906add1edeb57badc92f5b4287f9e33b609fad5ae35912cdc0596ff022073338c6e14637dfc11abdb18c2396a58b8e537670d06084981799f64bcd7c3f401ad53210289d20d3d6e36f28537af3521ce05548fb16baf7d47ac67fbf318db6ed983b9ba21034712e706c1643ec0e9519edf093578886bac1c9c17893138a76111d9a14a2f1b2102a21047ac1a83c8cce21475240b2107a11d76212573a86f0dffe44cdd326f4dab2103430166298971c6282241ef46e866fa9077b4a48eafe4b370e94aef24050dda132102c877ef10e8dc5ca83f06263971f133f71e01e9b2a91a4184eb730026f2c3968f55ae00000000

問題

這裡的簽名有什麼問題?

我的想法和一點背景

所以基本上我們在這裡有兩個輸入。兩者都來自多重簽名地址。不同之處在於第二個只是P2WSH。第一個很可能很好。第二個是我的擔心。因此,讓我們看一下第二個輸入的見證簽名。

我們有三個簽名:

  • 3045022100cd569e7f8e5fb6490ef3240d68abdd147f0c3ce4e77bcfd59f587b9a14848bdb02207fe31882d22518af84d3961809b6133c06b34ce6f91c1e579dcff0c58b5
  • 304502210099699d11f3fa427c2739580de08fc3a305202a6b1f39c01d8f82e6ad8a9b191902205153041c9a291b81c3ef94cba9d22f3a8df6ee45faab130107ec8a56833
  • 3045022100b57e36875906add1edeb57badc92f5b4287f9e33b609fad5ae35912cdc0596ff022073338c6e14637dfc11abdb18c2396a58b8e537670d060849817099f64bcd7c3

前兩個是由硬體錢包生成的。第三個是由比特幣核心創建的。所以基本上這些簽名中的每一個都聲稱是 0x45(69 字節長)。但第三個末尾有額外的 01。

問題

這是錯誤的原因嗎?

如果不是,這個額外的字節是什麼?

有任何線索,這筆交易有什麼問題嗎?

末尾的“01”字節為sighash類型字節(具體01表示SIGHASH_ALL,表示所有輸入輸出都帶符號)。比特幣腳本中的所有簽名(包括遺留簽名和隔離見證簽名)都需要這樣一個字節。但是,該字節是 DER 編碼簽名的一部分;它附加在它上面。

大概您的硬體錢包會生成沒有 sighash 類型的 DER 簽名,而您用來建構實際交易的任何軟體都負責添加它。

引用自:https://bitcoin.stackexchange.com/questions/100097