Bitcoin-Core

為什麼區塊頭版本值與比特幣區塊鏈中的getblocktemplate版本值不同?

  • July 26, 2022

在查看塊 746632 的塊標頭時,我看到版本是1073676292or 3fff0004or when reversed 0400ff3f,但我從getblocktemplate請求中收到的版本是536870912or 20000000or when reversed00000020

我的理解是版本欄位不能與塊模板中的不同。

getblockhash 746632
0000000000000000000573b8d27491283652e993c390d7be8a38129ec46672fa
getblockheader 0000000000000000000573b8d27491283652e993c390d7be8a38129ec46672fa
{
 "hash": "0000000000000000000573b8d27491283652e993c390d7be8a38129ec46672fa",
 "confirmations": 14,
 "height": 746632,
 "version": 1073676292,
 "versionHex": "3fff0004",
 "merkleroot": "24619c38bcd737edccbcce809692b66c374a0a81c148aa5e9eca45607fbf3f28",
 "time": 1658845216,
 "mediantime": 1658841797,
 "nonce": 1738315485,
 "bits": "170a2a04",
 "difficulty": 27692567959233.59,
 "chainwork": "0000000000000000000000000000000000000000321828fef78edcbcaa328aba",
 "nTx": 1089,
 "previousblockhash": "00000000000000000002d7a16b995df4b79deae619175f853efc68643a6eabea",
 "nextblockhash": "00000000000000000002a995ef37e16105a966e65face571aff76b2b88025a6b"
}
getblockheader 0000000000000000000573b8d27491283652e993c390d7be8a38129ec46672fa false
0400ff3feaab6e3a6468fc3e855f1719e6ea9db7f45d996ba1d702000000000000000000283fbf7f6045ca9e5eaa48c1810a4a376cb6929680cebccced37d7bc389c612420f8df62042a0a17dd969c67

沒有要求礦工必須遵循塊模板。只要他們的區塊遵循共識規則,他們就可以建構自己認為合適的區塊。不能要求塊匹配塊模板,因為每個節點可以根據他們知道的交易生成不同的模板。如果每個節點都產生相同的塊模板,那麼我們就不需要探勘來就交易的順序形成共識。

區塊版本很大程度上可以是礦工想要的任何值。它只有一些限制,主要是它不能是特定的值,而不是它必須是特定的值。3fff0004是一個完全有效的值。

礦工可以選擇更改版本號以使用稱為 ASICBoost 的優化。使用版本號作為附加的 nonce 欄位可以讓他們擁有更高的雜湊率,所以很多礦工都會這樣做。

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