[Ethereum] Do mining pool or miners decide on which transaction to be included in the next block

miningmining-pools

This question is about mining pools specifically, which is why I don't think it's a duplicate of this question.

I understand that with most Bitcoin mining pools, the mining pool computes the header that miners then add a random nonce to. That header is shared across all miners in a mining pool, as a way to minimize the amount of computation that individual miners have to do.

Is it the same for Ethereum mining pools? Do we even know what strategy each mining pool uses to pick which transactions to include? I assume it considers gas price of transactions, but surely there's got to be more. For instance, it appears that f2pool includes significantly fewer transactions than etermine in their blocks. So surely they don't use the same strategy to include transactions.

Related: is most mining pool software open-source? The best I could find is etherchain's ethpool-core, but that's not the full source code. Or is that mostly proprietary code?

Best Answer

In general, miners tend to prioritize transactions that pay the highest fees first, with many having a minimum gas price that they will accept. Pools that include fewer transactions in their blocks probably have a higher minimum accepted fee.

Pools that mine empty blocks often do so to avoid the overhead of having to process transactions at all--they can simply stamp out the next block header and begin mining immediately.

Some pools will adopt a hybrid approach: immediately after solving a block, they will begin mining the next block without transactions while validating and deciding which transactions to include. This allows them to avoid underutilizing miners while computing the next block's headers with transactions included, on the off chance they immediately solve the next block within that window (rare, but possible).

Related Topic