Post
Topic
Board Development & Technical Discussion
Re: Do pending transactions live forever on Eligius mempool?
by
amaclin
on 17/04/2014, 04:07:35 UTC
Well it looks like Eligius hasn't found any blocks for the past 5 hours, so that's probably why your tx is not mined...
Or the blocks with my tx were rejected as invalid by the rest of network? Hehe.

Quote
How do you directly dump rawmempool on a remote node?
I said before, that I have my own program, which connects to the peer, sends and receives data.

Code:
[...skip...]
write ( packet ( "mempool", mempoolPacket ( ) ) );
//--------------------------------------------------------------
[...skip...][...skip...][...skip...]
//--------------------------------------------------------------
const QByteArray NetSocket::packet ( const char* type, const QByteArray& payload )
{
  return MyByteArray ( )
    .putInt32 ( MAGIC_ID )
    .putAscii ( type, 12 )
    .putInt32 ( payload.size ( ) )
    .append ( MyKey32 ( payload.constData ( ), payload.size ( ) ).constData ( ), 4 )
    .append ( payload );
}
//--------------------------------------------------------------
[...skip...][...skip...][...skip...]
//--------------------------------------------------------------
void Bitcoin::conflicts ( QList& unspent, const Transaction& tx ) const
{
  for ( int i ( tx.countInputs ( ) ); --i >= 0; )
  {
    const TxInput in ( tx.getInput ( i ) );
    for ( int j ( unspent.size ( ) ); --j >= 0; )
    {
      const UxTo& uxto ( unspent.at ( j ) );
      if ( uxto.getTxHash ( ) == in.getHash ( ) && uxto.getIndex ( ) == in.getHashIndex ( ) )
      {
        _trace ( QString ( "pooltx: %1").arg ( tx.getKey ( ).toString ( ) ) );
        _trace ( QString ( "conflict: [%1:%2]" ).arg ( uxto.getTxHash ( ).toString ( ) ).arg ( uxto.getIndex ( ) ) );
        unspent.removeAt ( j );
      }
    }
  }
}

nat.router.dashjr.org holds about 3k transactions in its pool. My program saves downloaded txs on disk cache to save traffic. So I have in my cache some txs which were in Eligius pool yesterday,