Is there a way to get the memory pool in order of newest first?

1

I'm trying to list out the results of getrawmempool by newest transactions first.

Here's what I've got:

getrawmempool returns the memory pool in order of transaction hash, so I'm using PHP to sort it:

<?php
// Get an array of the memory pool transactions
$getrawmempool = $bitcoin->getrawmempool(true); // true = verbose

// Create a new array of "txid" => "time" (just so I can sort it)
foreach (array_keys($getrawmempool) as $txid) {
     $mempool[$tx] = $getrawmempool[$txid]['time'];
}

// Sort the new array
arsort($mempool);

// Print results
print_r($mempool);
?>

Now, this isn't terribly slow, but sorting 10,000+ array values isn't terribly snappy.

Questions:

  • Is there a way of getting the mempool in order of newest first from bitcoin-cli?
  • If not, is there a faster/better way of sorting the returned results?

I'd like to play around with all the mempool transactions using PHP. So if I can get the mempool transactions in order along with all the verbose information about each one, that would be handy.

inersha

Posted 2016-05-24T17:58:23.567

Reputation: 2 236

Answers

2

I think you have two options:

1) Patch bitcoin-core and make getrawmempoolentry return the mempool transaction sorted after entry_date. There is boost multi index that would be capable to fast sort the mempool transaction (https://github.com/bitcoin/bitcoin/blob/master/src/txmempool.h#L303)

2) You can try to improve your PHP sort speed. IMHO Arsort is not the best choice.

Jonas Schnelli

Posted 2016-05-24T17:58:23.567

Reputation: 5 465