Properly, that is the best way I’ve tried:
When a mined block arrives to my node, I evaluate it in opposition to a transaction choice algorithm utilizing my mempool. (I do know my mempool is totally different than the miner’s, and that is the purpose so preserve studying 😉 )
The transaction choice algorithm kinds transactions within the common grasping approach: utilizing the common Ancestor Set Primarily based (ASB) algorithm described right here, and contemplating transaction dependencies and CPFP, so mainly is identical as invoking getblockTemplate
with the state of my mempool simply earlier than the block arrives. (I additionally evaluate the incoming block by utilizing the final getBlockTemplate
results of bitcoind however because it’s solely calculated every 30s the outcomes usually are not correct).
An instance of a comparability is proven right here, (my webpage, in growth). I divide the transactions in units whether or not they had been ignored by the miner (from my node perspective), are in widespread with me, ignored by me, relayed to me, or not relayed to me.
And, in fact, I additionally measure the charges I might have collected in comparison with the miner’s block (bearing in mind the incoming block coinbase transaction measurement for higher accuracy). You may verify the outcomes of the final blocks right here, and an mixture for the miners right here.
This might give me an concept about how good a miner is deciding on its transactions and/or has good community connectivity (in common, and in opposition to my mempool), however as I’ve no approach of realizing the state of the miners mempool earlier than they mine a block (nor once I obtain it), this effort appears inaccurate.
I make the idea {that a} obtained block and my block template might be in contrast. However because the block propagation time shouldn’t be, by any means, negligible, the comparability is skewed giving the concept that my algorithm/community scenario is best. The truth is that I’m receiving transactions whereas the block is being propagated to me, and thus, I’ve usually an even bigger mempool than the miner when the block was mined. An even bigger mempool provides my algorithm the chance to seek for higher transactions which had no alternative to be mined by miners.
So, is the accuracy of this system worthy? I’ve assumed its not. However as block propagation time is getting smaller (see this) And the outcomes for some blocks/miners appears actually totally different (see this block for instance) I’ve my doubts.
Thanks prematurely.