I wrote a script that compares the transactions listed in the memory pool with the transactions included in getblocktemplate:


(I've ordered the transactions by [current priority], and highlighted the ones included in getblocktemplate in blue.)

  • How does getblocktemplate choose which transactions to include from the memory pool in a candidate block?

  • Why aren't transactions being selected from highest to lowest priority?

1 Answer 1


The whole mempool won't fit in a block; getblocktemplate returns enough transactions for a block. Blocks are, by default, limited to 750kb by policy, but many miners increase the size to the block limit of 1mb (which can be done by command-line flag).

The specific piece of code that decides on the transactions that should be included in a block can be found here. It's reasonably well documented, and not terrible to read, I'd suggest taking a look through it to see where your script operates differently.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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