Mining-Pools

coinbase 交易的格式是什麼?

  • December 8, 2019

我正在嘗試了解 coinbase 交易的格式。我讀過它是任意的,沒有指定。我想知道,因為我需要生成探勘工作並創建一個內部池。正如我發現的那樣,您可以更改ntime,nonceextranonce欄位。最後一個應該適合 coinbase 參數,對吧?那麼,任何人都可以幫助我分析 coinbase 交易的內容以及我應該如何建構一個,以便我礦池中的所有礦工都可以有不同的雜湊標頭?非常感謝現有塊的分步指南,連結和其他內容。

coinbase 交易遵循與普通交易相同的格式,除了:

  • 它只有一個 txin
  • 這個 txin 的 prevout 雜湊是 0000…0000。
  • 這個 txin 的 prevout 索引是 0xFFFFFFFF
  • txin 的 prevout 腳本是 2 到 100 個字節的任意字節數組(它不一定是有效的腳本,儘管這通常是這樣做的)。它必須從正確推動塊高度開始(參見 BIP34)。
  • txout 價值的總和不能超過補貼(目前為 25 BTC,每 210000 個區塊減半)加上同一區塊中非 coinbase 交易的費用。

關於 scriptSig 是一個任意字節數組,有一個警告:其中的檢查操作被計入塊 sigop 限制 (20000),因此您可能不想意外觸發它。將其列為僅推送操作(包括 extranonce)的列表可以避免這種情況。

查看塊#280963。查看 coinbase 交易d1c6b8…fd08。你可以看到 CoinBase 數據:

038349040d00456c69676975730052d8f72ffabe6d6dd991088decd13e658bbecc0b2b4c87306f637828917838c02a5d95d0e1bdff9b0400000000000000002f73733331312f00906b570400000000e4050000

這是一個腳本。查看wiki了解詳細資訊。在 coinbase 交易中,這個腳本可以包含任何數據。如果您更改此數據,則 merkle root 也會更改,並且不同的礦工可以開始更改您為他們提供的 merlke root 的隨機數/時間戳。查看wiki以獲取有關 merkle 樹的更多資訊。

Coinbase 交易包含單一輸入。這是未使用的輸入,它包含 32 個字節的零作為先前的 tx。查看wiki以獲取有關數據事務包含的更多資訊。我提供解碼原始 coinbase 交易的範例。

> getrawtransaction d1c6b8140246950475735394b0ac68f9ada60d313d2b5308afbc569c84f7fd08
< 01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff53038349040d00456c69676975730052d8f72ffabe6d6dd991088decd13e658bbecc0b2b4c87306f637828917838c02a5d95d0e1bdff9b0400000000000000002f73733331312f00906b570400000000e4050000ffffffff01bf208795000000001976a9145399c3093d31e4b0af4be1215d59b857b861ad5d88ac00000000

01000000 - version
01 - input count
0000000000000000000000000000000000000000000000000000000000000000 - prev tx
ffffffff - prev out n
53 - length of coinbase script
038349040d00456c69676975730052d8f72ffabe6d6dd991088decd13e658bbecc0b2b4c87306f637828917838c02a5d95d0e1bdff9b0400000000000000002f73733331312f00906b570400000000e4050000 - coinbase script
ffffffff - sequence
01 - output count
bf20879500000000 - 2508660927, satoshi count, or 25.08660927 BTC
19 - script length
76a9145399c3093d31e4b0af4be1215d59b857b861ad5d88ac - script
00000000 - locktime

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