Bitcoin-Core
為什麼區塊頭版本值與比特幣區塊鏈中的getblocktemplate版本值不同?
在查看塊 746632 的塊標頭時,我看到版本是
1073676292
or3fff0004
or when reversed0400ff3f
,但我從getblocktemplate
請求中收到的版本是536870912
or20000000
or 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 欄位可以讓他們擁有更高的雜湊率,所以很多礦工都會這樣做。