Coinbase-Transaction

從地層探勘重建塊模板。通知

  • September 20, 2019

我有一個來自地層池的採礦通知。我希望編寫一個通用腳本來提取池正在獲取的塊獎勵的值。也就是說,重構區塊模板,或者至少是 coinbase 交易輸出/區塊獎勵的總和,給定地層 Mining.notify JSON。例如,我們有用於 Digibyte sha256d 塊模板的 Mining.notify JSON:

{"id":null,"method":"mining.notify","params":["8c6e","4aab33fcf4579faee35bde813ad6f66f8e1c3fed97fb5763ac6de4d02b301277","01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff210472329000048b2c825d08","0d2f6e6f64655374726174756d2f00000000020000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf9cd1576270f0000001976a914f54c85705d38622a202c6f97caf7248cc4be001c88ac00000000",[],"20000202","1908ef40","5d822c8b",true]}

這裡,“coinb2”字元串是:

0d2f6e6f64655374726174756d2f00000000020000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf9**cd1576270f000000**1976a914f54c85705d38622a202c6f97caf7248cc4be001c88ac00000000

這是輸出交易的重要部分。

原來這種情況下reward是cd1576270f000000,用字節倒轉寫,對應一個base 10的整數值65086559693。如果只有一個輸出地址,我們這裡可以猜到reward是1976年之前的8個字節,但是如果有很多輸出地址怎麼辦?

在最一般的情況下,給定“coinb2”字元串,我們如何找到 coinbase 交易的所有輸出的總和?

如果只有一個輸出地址,我們這裡可以猜到獎勵是1976年之前的8個字節,

你不能。這1976是輸出腳本的開始,並且可以/將根據池要使用的輸出腳本(即地址)而有所不同。


層協議說 coinbase 交易的十六進制是coinb1 + hex(extranonce2) + coinb2. extranonce2由礦工生成,大小由礦池指定為Extranonce2_size來自對 的響應mining.subscribe

因此,您可以創建extranonce2正確大小的假字元串並將字元串連接在一起,如前所述。然後將結果放入原始事務解碼器。如果沒有包含所有內容(或占位符數據)的完整交易,您將無法真正可靠地正確解碼交易。

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