Transactions

我的 ScriptSig 有什麼問題?我得到 64:scriptsig-not-pushonly

  • November 3, 2017

我目前嘗試從頭開始創建和簽署交易。我做了它來建構和簽署交易。如果我手動驗證它看起來不錯,但使用“正確”的錢包我的交易被拒絕:

error code: -26
error message:
64: scriptsig-not-pushonly

這就是我從中得到的bitcoin-cli

我的 ScriptSig 是:4a304602210090c4fc2369cf225559c1141a1e9be3d7598f0fb7affe8a29f86e737972c7587a022100cbd8619ecae3baa40fdb565014fdac28a95deb90c0fcd4adcbd97d58d0e96f9801410442718de90a0a10f0cd10054ff4ab6037fd230c5d4b50c07eed0bc247e1e3dbd9ad3f4c65680396813bd96b0c2db5647e355082db34c7106a74337d51e5730f45

我將其解碼如下:

4a=> 簽名長度,74 字節

304602210090c4fc2369cf225559c1141a1e9be3d7598f0fb7affe8a29f86e737972c7587a022100cbd8619ecae3baa40fdb565014fdac28a95deb90c0fcd4adcbd97d58d0e96f98簽名

01操作碼 SIGHASH_ALL

41公鑰長度,65 字節

0442718de90a0a10f0cd10054ff4ab6037fd230c5d4b50c07eed0bc247e1e3dbd9ad3f4c65680396813bd96b0c2db5647e355082db34c7106a74337d51e5730f45公鑰

你能發現這個 ScriptSig 的問題嗎?

您的簽名不正確。首先,它的長度不能是 74 字節長。根據比特幣維基

簽名的長度為 73、72 或 71 個字節,機率分別約為 25%、50% 和 25%,儘管尺寸可能比這更小,機率呈指數下降。

話雖如此,您似乎兩次錯誤地計算了簽名的長度。首先,您解碼為 DER 簽名的不是 74 字節長,而是 72:

sig = "304602210090c4fc2369cf225559c1141a1e9be3d7598f0fb7affe8a29f86e737972c7587a022100cbd8619ecae3baa40fdb565014fdac28a95deb90c0fcd4adcbd97d58d0e96f98"

len(sig/2) = 72 

此外,您沒有將雜湊標誌計為簽名長度的一部分,您應該這樣做。這將添加一個額外的字節,使簽名長 73 字節。

總而言之,腳本應該是:

ScriptSig = 49304602210090c4fc2369cf225559c1141a1e9be3d7598f0fb7affe8a29f86e737972c7587a022100cbd8619ecae3baa40fdb565014fdac28a95deb90c0fcd4adcbd97d58d0e96f9801410442718de90a0a10f0cd10054ff4ab6037fd230c5d4b50c07eed0bc247e1e3dbd9ad3f4c65680396813bd96b0c2db5647e355082db34c7106a74337d51e5730f45

最後,請注意,根據@pebwindkraft 在他的回答中告訴您的內容,您正在生成高 S 簽名,因此您也應該解決這個問題。

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