我的 ScriptSig 有什麼問題?我得到 64:scriptsig-not-pushonly
我目前嘗試從頭開始創建和簽署交易。我做了它來建構和簽署交易。如果我手動驗證它看起來不錯,但使用“正確”的錢包我的交易被拒絕:
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 簽名,因此您也應該解決這個問題。