I understand it's in the miner's best interest to receive as many fees as possible for his hopefully-accepted block, hence it should include the most rewarding (fee / size) txs - up to the 1MB limit.

However, what algorithm do the miners use? It seems like a knapsack problem, which is NP-Hard, so I doubt miners actually go for the optimal solution.


1 Answer 1


No. this is not knapsack problem and no one need to find optimal solution.

Sort your transactions in mempool by two rules:

  • subsequent transactions can not be to the left of parent ones
  • most profitable transactions (fee/size) gravitate to left

and take leftmost transactions from mempool until 1 mb limit

  • Great, thanks. Where can I find the code that implements this behavior?
    – Itay
    Commented Nov 2, 2017 at 12:22
  • somewhere in github.com/bitcoin/bitcoin (cy, Captain Obvious)
    – amaclin
    Commented Nov 2, 2017 at 12:43
  • 1
    this isnt the full truth, and miners likely differ in their implementations. one way to prove this isnt the full truth is to look at the existence of transactiln accelerators, another to look at blocks with 0 transactions and a third to look at blocks with some transaction types excluded. Commented Nov 3, 2017 at 7:22

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.