<p>Going out on a limb here, but I would guess that your node is not running 24/7.</p>
<p>Full nodes only rebroadcast transactions once when they first hear about them. If your node is only online intermittently, it would only hear about new transactions getting submitted to the network. However, each node builds its block templates from the mempool that it locally maintains.</p>
<p><a href="https://i.sstatic.net/5RiSz.png" rel="nofollow noreferrer"><img src="https://i.sstatic.net/5RiSz.png" alt="enter image description here" /></a>
<sup>via <a href="https://jochen-hoenicke.de/queue/#BTC,2d,weight,40" rel="nofollow noreferrer">jochen-hoenicke.de</a></sup></p>
<p>Especially in the past day, where blocks were mostly clearing transactions broadcast much earlier, your node would not be aware of the majority of the transactions mining nodes were tracking in their mempools and including in their blocks. Your node would only learn about most of the transactions as blocks get found and announced.</p>
<p>This is substantiated by your block template only collecting ₿7.45954254 in mining reward, whereas the block you link to collected an additional ₿1.68 in fees for a total reward of ₿9.14729350, i.e. the miner was simply aware of more valuable transactions to include in their block than you.</p>
<blockquote>
<p>The version of the mined block is 0x2fffe000 instead of 536870912.</p>
</blockquote>
<p>Only a few of the version field bits are constrained. Some miners have been using the remaining field to generate additional entropy, and to employ a mining optimization called <a href="https://bitcoin.stackexchange.com/a/56518/5406"><em>Overt ASICBoost</em></a>. Those uses result in various different values for the version field, which do not impact validity of blocks, though.</p>

CC BY-SA 4.0
2021-04-24T14:58:36.003Z
Thank you for the answer! Yes, my node was not running 24/7. I did the initial sync and then wanted to look at a block template. So, if I would have started mining with the block template that I received, are the chances the same compared to nodes that run 24/7?
Andy
CC BY-SA 4.0
2021-04-24T15:03:04.707Z
Your chance to succeed per hash that you try would be the same, but your block reward would be lower as described.
Murch
CC BY-SA 4.0
2021-04-24T14:21:07.377Z
2021-04-24T15:47:37.650Z
2021-04-24T15:47:37.650Z
Murch
<blockquote>
<p>The version of the mined block is <code>0x2fffe000</code> instead of <code>536870912</code>.</p>
</blockquote>
<p>Many miners employ a strategy known as overt Asicboost. This strategy requires modifying the version number like the nonce, so we often see blocks that have strange version numbers.</p>
<blockquote>
<p>Only 194 transactions from the block template are in the mined block, e.g. f0fcac28b1dec7b8e67f73229052639c58f7f175bdb87ea068f499a4728bb35d. The other 1257 transactions are missing.</p>
</blockquote>
<p>Each node has a different view of the set of unconfirmed transactions that depends on how long they have been running, where they are located, and any custom rules that they are using. It may be that your node has not been running for as long as the miner's node and so it has not seen all of the same transactions that the miner has seen. It may be that your node is using different rules than the miner is, possibly due to different versions of the same software, or possibly because some miners may be using custom software. Additionally, some miners offer a service where they will prioritize transactions after being paid out of band, so such transactions can end up in a block when they do not appear in a block template produced by your node.</p>
<blockquote>
<p>What would have happened if a miner found a block hash for the received block template and submitted it? Would the mined block then have a different version and the missing transactions (including the transaction that was not even mined yet)?</p>
</blockquote>
<p>There is no &quot;current template&quot; for the entire network. If there were, then there wouldn't need to be a blockchain as that would mean every node is actually in sync with every other node. As such, when a miner finds a block, they broadcast the block in full. When nodes receive a block, they verify it without creating their own block template. There are no requirements that the block contain the transactions a node expects it to contain. The only requirements are that the block contains valid transactions and that the block header is valid. Whether your node has seen those transactions before and whether it would include them itself are irrelevant.</p>

CC BY-SA 4.0
2021-04-24T15:02:48.177Z
Thank you for your answer! So, is it allowed to change the version, even if it is not in the mutable array? .. A transaction that I received in the block template was never mined. What happened to this transaction?
Andy
CC BY-SA 4.0
2021-04-24T15:03:20.813Z
Ah, good point, I didn't address the funny version business. Have a +1.
Murch
CC BY-SA 4.0
2021-04-24T17:43:52.183Z
@andy Miners have complete authority over the contents of their blocks. You include a fee in your transactions to incentivize them to include it. If a transaction is not included, it is left in mempools, and thus can be picked up again in later blocks.
Pieter Wuille
CC BY-SA 4.0
2021-04-24T21:43:41.313Z
@Andy Yes, the version can be changed, within the consensus rule restrictions. As stated previously, there is no requirement for blocks to conform to the block template.
Ava Chow
CC BY-SA 4.0
2021-04-24T14:30:50.900Z
2021-04-24T14:30:50.900Z
Ava Chow
<p>I am looking at the specific block at height <a href="https://btc.com/00000000000000000004dbd66fa71fdcd62658bf8c8e2e153521257ad5858c71?page=1&amp;order_by=tx_block_idx&amp;asc=1" rel="nofollow noreferrer">680175</a>.</p>
<p>At the time when the block was not mined yet, I received the block template via <code>bitcoin-cli getblocktemplate '{&quot;rules&quot;: [&quot;segwit&quot;]}'</code> with 1451 transactions:</p>
<pre><code>{
    &quot;capabilities&quot;: [
        &quot;proposal&quot;
    ],
    &quot;version&quot;: 536870912,
    &quot;rules&quot;: [
        &quot;csv&quot;,
        &quot;!segwit&quot;
    ],
    &quot;vbavailable&quot;: {},
    &quot;vbrequired&quot;: 0,
    &quot;previousblockhash&quot;: &quot;00000000000000000008465bf3145011298dddb04f026e077d8deb5b9ac5cf7f&quot;,
    &quot;transactions&quot;: [
        {
            &quot;data&quot;: &quot;..&quot;,
            &quot;txid&quot;: &quot;f0fcac28b1dec7b8e67f73229052639c58f7f175bdb87ea068f499a4728bb35d&quot;,
            &quot;hash&quot;: &quot;2a4aa6c2b5a6bee592e3690a843ee63b2598315da01954c05c4c0aa77d57af34&quot;,
            &quot;depends&quot;: [],
            &quot;fee&quot;: 160000,
            &quot;sigops&quot;: 5,
            &quot;weight&quot;: 953
        },
        ..,
        {
            &quot;data&quot;: &quot;..&quot;,
            &quot;txid&quot;: &quot;e0ae05fa82edb0dee7e9d11ca9471bf3ee1a90e19ac8abf1013511338613b814&quot;,
            &quot;hash&quot;: &quot;e0ae05fa82edb0dee7e9d11ca9471bf3ee1a90e19ac8abf1013511338613b814&quot;,
            &quot;depends&quot;: [],
            &quot;fee&quot;: 103950,
            &quot;sigops&quot;: 4,
            &quot;weight&quot;: 1388
        },
        ..,
        {
            &quot;data&quot;: &quot;..&quot;,
            &quot;txid&quot;: &quot;8d55bd874acea1fbc03b98e82d585c39021be083645dde83e8306171e32258d5&quot;,
            &quot;hash&quot;: &quot;8d55bd874acea1fbc03b98e82d585c39021be083645dde83e8306171e32258d5&quot;,
            &quot;depends&quot;: [],
            &quot;fee&quot;: 16425,
            &quot;sigops&quot;: 8,
            &quot;weight&quot;: 904
        }
    ],
    &quot;coinbaseaux&quot;: {},
    &quot;coinbasevalue&quot;: 745954254,
    &quot;longpollid&quot;: &quot;00000000000000000008465bf3145011298dddb04f026e077d8deb5b9ac5cf7f3670&quot;,
    &quot;target&quot;: &quot;0000000000000000000bef930000000000000000000000000000000000000000&quot;,
    &quot;mintime&quot;: 1619115663,
    &quot;mutable&quot;: [
        &quot;time&quot;,
        &quot;transactions&quot;,
        &quot;prevblock&quot;
    ],
    &quot;noncerange&quot;: &quot;00000000ffffffff&quot;,
    &quot;sigoplimit&quot;: 80000,
    &quot;sizelimit&quot;: 4000000,
    &quot;weightlimit&quot;: 4000000,
    &quot;curtime&quot;: 1619117253,
    &quot;bits&quot;: &quot;170bef93&quot;,
    &quot;height&quot;: 680175,
    &quot;default_witness_commitment&quot;: &quot;6a24aa21a9ed82637c9b63e2165105a672c4f6edcfa0187d961843a8d2b9c7a6bceeda109a65&quot;
}
</code></pre>
<p>When comparing the block template to the mined block, there are some differences:</p>
<ul>
<li>The version of the mined block is <code>0x2fffe000</code> instead of <code>536870912</code>.</li>
<li>Only 194 transactions from the block template are in the mined block, e.g. <a href="https://btc.com/f0fcac28b1dec7b8e67f73229052639c58f7f175bdb87ea068f499a4728bb35d" rel="nofollow noreferrer">f0fcac28b1dec7b8e67f73229052639c58f7f175bdb87ea068f499a4728bb35d</a>.  The other 1257 transactions are missing.
<ul>
<li>The transaction <a href="https://btc.com/8d55bd874acea1fbc03b98e82d585c39021be083645dde83e8306171e32258d5" rel="nofollow noreferrer">8d55bd874acea1fbc03b98e82d585c39021be083645dde83e8306171e32258d5</a> was mined in a later block.</li>
<li>The transaction <a href="https://btc.com/notfound" rel="nofollow noreferrer">e0ae05fa82edb0dee7e9d11ca9471bf3ee1a90e19ac8abf1013511338613b814</a> was not mined at all.</li>
</ul>
</li>
</ul>
<p>Does anyone know how these differences can be explained?</p>
<p>What would have happened if a miner found a block hash for the received block template and submitted it? Would the mined block then have a different version and the missing transactions (including the transaction that was not even mined yet)?</p>

<mining-theory><mining-reward><mempool><transaction-propagation><getblocktemplate>
Why does the mined block differ so much from the block template?
Andy
# Why does the mined block differ so much from the block template?

(Asked by: username_0 on 2021-04-24)

I am looking at the specific block at height [680175](https://btc.com/00000000000000000004dbd66fa71fdcd62658bf8c8e2e153521257ad5858c71?page=1&order_by=tx_block_idx&asc=1).

At the time when the block was not mined yet, I received the block template via `bitcoin-cli getblocktemplate '{"rules": ["segwit"]}'` with 1451 transactions:

```
{
    "capabilities": [
        "proposal"
    ],
    "version": 536870912,
    "rules": [
        "csv",
        "!segwit"
    ],
    "vbavailable": {},
    "vbrequired": 0,
    "previousblockhash": "00000000000000000008465bf3145011298dddb04f026e077d8deb5b9ac5cf7f",
    "transactions": [
        {
            "data": "..",
            "txid": "f0fcac28b1dec7b8e67f73229052639c58f7f175bdb87ea068f499a4728bb35d",
            "hash": "2a4aa6c2b5a6bee592e3690a843ee63b2598315da01954c05c4c0aa77d57af34",
            "depends": [],
            "fee": 160000,
            "sigops": 5,
            "weight": 953
        },
        ..,
        {
            "data": "..",
            "txid": "e0ae05fa82edb0dee7e9d11ca9471bf3ee1a90e19ac8abf1013511338613b814",
            "hash": "e0ae05fa82edb0dee7e9d11ca9471bf3ee1a90e19ac8abf1013511338613b814",
            "depends": [],
            "fee": 103950,
            "sigops": 4,
            "weight": 1388
        },
        ..,
        {
            "data": "..",
            "txid": "8d55bd874acea1fbc03b98e82d585c39021be083645dde83e8306171e32258d5",
            "hash": "8d55bd874acea1fbc03b98e82d585c39021be083645dde83e8306171e32258d5",
            "depends": [],
            "fee": 16425,
            "sigops": 8,
            "weight": 904
        }
    ],
    "coinbaseaux": {},
    "coinbasevalue": 745954254,
    "longpollid": "00000000000000000008465bf3145011298dddb04f026e077d8deb5b9ac5cf7f3670",
    "target": "0000000000000000000bef930000000000000000000000000000000000000000",
    "mintime": 1619115663,
    "mutable": [
        "time",
        "transactions",
        "prevblock"
    ],
    "noncerange": "00000000ffffffff",
    "sigoplimit": 80000,
    "sizelimit": 4000000,
    "weightlimit": 4000000,
    "curtime": 1619117253,
    "bits": "170bef93",
    "height": 680175,
    "default_witness_commitment": "6a24aa21a9ed82637c9b63e2165105a672c4f6edcfa0187d961843a8d2b9c7a6bceeda109a65"
}

```

When comparing the block template to the mined block, there are some differences:

* The version of the mined block is `0x2fffe000` instead of `536870912`.
* Only 194 transactions from the block template are in the mined block, e.g. [f0fcac28b1dec7b8e67f73229052639c58f7f175bdb87ea068f499a4728bb35d](https://btc.com/f0fcac28b1dec7b8e67f73229052639c58f7f175bdb87ea068f499a4728bb35d). The other 1257 transactions are missing.
  + The transaction [8d55bd874acea1fbc03b98e82d585c39021be083645dde83e8306171e32258d5](https://btc.com/8d55bd874acea1fbc03b98e82d585c39021be083645dde83e8306171e32258d5) was mined in a later block.
  + The transaction [e0ae05fa82edb0dee7e9d11ca9471bf3ee1a90e19ac8abf1013511338613b814](https://btc.com/notfound) was not mined at all.

Does anyone know how these differences can be explained?

What would have happened if a miner found a block hash for the received block template and submitted it? Would the mined block then have a different version and the missing transactions (including the transaction that was not even mined yet)?

**Tags:** mining-theory, mining-reward, mempool, transaction-propagation, getblocktemplate


---

## 2 answers

### Answer by username_2 on 2021-04-24. Score: 8 | Accepted answer

> The version of the mined block is `0x2fffe000` instead of `536870912`.

Many miners employ a strategy known as overt Asicboost. This strategy requires modifying the version number like the nonce, so we often see blocks that have strange version numbers.

> Only 194 transactions from the block template are in the mined block, e.g. f0fcac28b1dec7b8e67f73229052639c58f7f175bdb87ea068f499a4728bb35d. The other 1257 transactions are missing.

Each node has a different view of the set of unconfirmed transactions that depends on how long they have been running, where they are located, and any custom rules that they are using. It may be that your node has not been running for as long as the miner's node and so it has not seen all of the same transactions that the miner has seen. It may be that your node is using different rules than the miner is, possibly due to different versions of the same software, or possibly because some miners may be using custom software. Additionally, some miners offer a service where they will prioritize transactions after being paid out of band, so such transactions can end up in a block when they do not appear in a block template produced by your node.

> What would have happened if a miner found a block hash for the received block template and submitted it? Would the mined block then have a different version and the missing transactions (including the transaction that was not even mined yet)?

There is no "current template" for the entire network. If there were, then there wouldn't need to be a blockchain as that would mean every node is actually in sync with every other node. As such, when a miner finds a block, they broadcast the block in full. When nodes receive a block, they verify it without creating their own block template. There are no requirements that the block contain the transactions a node expects it to contain. The only requirements are that the block contains valid transactions and that the block header is valid. Whether your node has seen those transactions before and whether it would include them itself are irrelevant.

> **Comments:**
> **username_0**: Thank you for your answer! So, is it allowed to change the version, even if it is not in the mutable array? .. A transaction that I received in the block template was never mined. What happened to this transaction?  
> **username_1**: Ah, good point, I didn't address the funny version business. Have a +1.  
> **username_3**: @username_0 Miners have complete authority over the contents of their blocks. You include a fee in your transactions to incentivize them to include it. If a transaction is not included, it is left in mempools, and thus can be picked up again in later blocks.  
> **username_2**: @username_0 Yes, the version can be changed, within the consensus rule restrictions. As stated previously, there is no requirement for blocks to conform to the block template.  

---

### Answer by username_1 on 2021-04-24. Score: 4

Going out on a limb here, but I would guess that your node is not running 24/7.

Full nodes only rebroadcast transactions once when they first hear about them. If your node is only online intermittently, it would only hear about new transactions getting submitted to the network. However, each node builds its block templates from the mempool that it locally maintains.

[![enter image description here](https://i.sstatic.net/5RiSz.png)](https://i.sstatic.net/5RiSz.png)
via [jochen-hoenicke.de](https://jochen-hoenicke.de/queue/#BTC,2d,weight,40)

Especially in the past day, where blocks were mostly clearing transactions broadcast much earlier, your node would not be aware of the majority of the transactions mining nodes were tracking in their mempools and including in their blocks. Your node would only learn about most of the transactions as blocks get found and announced.

This is substantiated by your block template only collecting ₿7.45954254 in mining reward, whereas the block you link to collected an additional ₿1.68 in fees for a total reward of ₿9.14729350, i.e. the miner was simply aware of more valuable transactions to include in their block than you.

> The version of the mined block is 0x2fffe000 instead of 536870912.

Only a few of the version field bits are constrained. Some miners have been using the remaining field to generate additional entropy, and to employ a mining optimization called [*Overt ASICBoost*](https://bitcoin.stackexchange.com/a/56518/5406). Those uses result in various different values for the version field, which do not impact validity of blocks, though.

> **Comments:**
> **username_0**: Thank you for the answer! Yes, my node was not running 24/7. I did the initial sync and then wanted to look at a block template. So, if I would have started mining with the block template that I received, are the chances the same compared to nodes that run 24/7?  
> **username_1**: Your chance to succeed per hash that you try would be the same, but your block reward would be lower as described.  

---

