Script
coinbase 交易 afbff1130b6fcbdceebbadfc48a842af1f03ee08a79e042b37fc467518b49a0f 的 Script_sig
我目前正在用 Python 開發一個區塊鏈解析器,它已經在文件 blk00006.dat 中崩潰,用於 coinbase 交易,其中散列
afbff1130b6fcbdceebbadfc48a842af1f03ee08a79e042b37fc467518b49a0f
在 block 中0000000000000a46714e1b03e5e0693e9ecaa3ec1853f1cdf34e9ca52e13f1ff
。它崩潰的原因是它OP_PUSHDATA2
在腳本簽名中有一個值為 28265 的值。但是,根據腳本的大小,只有 21 個字節可以讀取。我修復了我的程式碼以避免在這個腳本中崩潰,但我仍然很好奇這個 script_signature 是如何被網路接受的。
不解析腳本。從協議的角度來看,它們是字節數組,它們的內容與事務反序列化無關。
然而,腳本在它們參與支出時被*執行。對於輸出,即它們被(試圖)花費的時間。對於非 coinbase 輸入,這是立即的。Coinbases 從不參與支出,因此幾乎()出於所有目的,它們只是字節數組。
(*) 這有兩個部分例外。BIP34 要求 coinbase 從推動區塊高度開始。80000 vsigops 限制也將 CHECKSIG 操作計入 coinbases(將它們視為腳本,但在第一個無效操作碼處停止計數)。