I realize that this is a general question with no "correct" answer, as every miner can operate differently.

Having said that, I'd like to be able to display a list of transactions that would be considered a fair representation of the transactions in the memory pool that are poised to be mined.

So far I have been:

  • Using getblocktemplate to get the list of transactions.
  • Refreshing the list when a new block arrives, or at 1 minute intervals.

Using getblocktemplate seems logical, as I imagine the majority of miners would like to get the most amount possible in fees from their blocks.

I'm then guessing that miners would want to refresh their candidate block at certain intervals to check for higher-fee transactions in the mempool.

Is it likely that miners would be inclined to refresh their candidate blocks much more (or less) than every minute?

There's several factors at play, one of them is that the underlying implementation of the Stratum protocol on many miners. Due to the way they are implemented many miners will drop a connection with their pool if they have not seen any updates in 30 seconds, as a result most pools will push work updates at this frequency.

Optimally, mining pools would update their work based on the block reward rather than a fixed timer. If the fee amount in their template has not moved it is not optimal for them to push new work, but if it has increased by a substantial monetary value it is optimal for them to push new work regardless of how recent the last update was.


Historically restarting work took a long time, but modern ASICs tend to take hundreds of milliseconds to alter the work they are performing, whereas older miners like HashFast could take tens of seconds.

Yes, fetching getblocktemplate is enough for a mining software. Softwares like bfgminers uses longpoll to do that, so the software is always up-to-date. If you disable longpoll on bfgminer you can set a refresh-rate for the getblocktemplate API.

Take not that BFGminer wouldn't poll the bitcoind RPC for less than every 5 seconds, despite the lower you set the refresh rate.

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.