創建 coinbase 交易時需要哪些數據?如何將塊高度插入 coinbase 交易?
仍在嘗試編寫一個函式來正確創建一個 coinbase 交易,而我似乎無法堅持的唯一一件事是…..如何獲得**
getblocktemplate
coinbase 交易提供的區塊高度?- 我使用createrawtransaction
**rpc 命令創建的。但問題是,通過呼叫createrawtransaction
和做[{"txid":"0000000000000000000000000000000000000000000000000000000000000000","vout":2147483647}]{" insert address ":6.25000000}
,我會得到一個經過處理的雜湊,在建構 merklehash 之前將其作為事務 0添加到事務列表中。****
這很棒,但這不是有效的 coinbase 交易,因為缺少區塊高度!!- 作為 coinbase 交易中腳本的前 8 個字節需要它。
所以它讓我思考,如果地址欄位之後的**數據欄位** 是我插入塊高度的位置怎麼辦?
在閱讀 Official Bitcoin Developer RPC API Reference****
createrawtransaction
時,我在rpc 命令中遇到了一個參數——鍵必須是“數據”,值是十六進制編碼的數據,我想這可能是我應該填寫高度的地方數據 …. 我會從**這裡抓取,也許會用****這個來解析它;之後,我將十六進制雜湊值插入到數據欄位中**。
在 BIP34 中規定了在 coinbase 交易中對區塊高度進行編碼的要求。您可能想閱讀那裡的實際文件。
具體來說,它需要 coinbase(唯一)交易輸入的 scriptSig 以推高開始,編碼為 little-endian 數字。對於目前主網塊(高度高於 65535),scriptSig 的前 4 個字節必須是 [0x03, height % 256, (height >> 8) % 256, height >> 16]。
它不是作為附加輸出完成的(正如數據輸出所暗示的那樣),並且不可能直接使用
createrawtransaction
,這是針對通用交易而不是硬幣庫的。Coinbases 通常由挖礦軟體建構。