Bitcoin-Core

如何使用 createrawtransaction 創建 coinbase 交易?

  • January 1, 2021

我想生成一個事務,createrawtransaction以便它可以submitblock與塊頭一起傳遞。

我嘗試使用:

[{"txid":"0000000000000000000000000000000000000000000000000000000000000000","vout":0}]{"bc1qd8hza5w3mz7t3tudtlplm9xht4sjwg0e3t9gy2":6.25000000}

但它沒有輸出 coinbase 交易:

020000000100000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0140be40250000000016001469ee2ed1d1d8bcb8af8d5fc3fd94d75d612721f900000000

無法使用createrawtransaction. coinbase 交易必須遵循許多規則,而createrawtransactionRPC 無法設置欄位以滿足這些規則。例如,BIP 34 要求 coinbase 在 scriptSig 中包含塊的高度。但是createrawtransaction不允許您在 scriptSig 中設置任何內容。

礦工必須使用可以獨立創建 coinbase 交易的軟體。礦工實際上更喜歡這樣做,因為他們希望能夠修改 coinbase 以用作額外的 nonce,這樣當他們用完 nonce 時,他們不必重新選擇要包含在區塊中的交易。相反,他們可以更改 coinbase 以導致 merkle 根發生變化。

根據 BIP 34,您必須在您的 Coinbase 交易中包含區塊高度,否則將無效,

您的 coinbase 交易的 scryptSig,必須以推送的字節數(實際上是 0x03)開頭,然後是候選塊的十六進製表示,不要忘記小端轉換

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