The getblocktemplate is designed for miners, and is constructed from the local mempool. All miners necessarily need a validating full-node to provide them with unconfirmed, valid transactions.

The mempool differs from one node to the other, and this may not be so relevant for merchants or individuals validating transactions, but this is highly relevant for miners, increasingly so as the transaction fee part of the block reward increases over time.

The sooner your node is able to accept new valid transactions, the more efficiently you can mine for blocks with the highest fees. The blocktemplate function reflects this. A well-connected node will produce block templates optimised with better fees than one that only has a subset of the transaction mempool.

Some may argue that transactions make up only a small part of the miner reward, and in some cases today mining empty blocks may be worth the extra hashing time that would otherwise be idling whilst the most optimal block template is constructed. This may be true today, but the system security rests on the incentive of miners to confirm a given transaction. This is the confirmation fee-market between users and miners.

If miner rewards solely consisted of subsidy (inflation), there would be no opportunity cost to censorship, and therefore the system security would be zero. Therefore, a system that allows data to propagate across mempools as efficiently as possible, facilitating the creation of the most rewarding block templates is highly relevant for the confirmation fee-market to function efficiently.

Article First Published here