Author

Topic: Do pending transactions live forever on Eligius mempool? (Read 1739 times)

legendary
Activity: 1232
Merit: 1094
Eligius nodes reject all txs from/to "correct horse.." address and some other blacklisted addresses
https://gitorious.org/bitcoin/luke-jr-bitcoin/source/7da290756fafb61369994f736f238ed990c3a45c:src/script.cpp#L1740

Interesting link.  It looks like they accept all transactions except if they have non-canonical pushes (and the blacklists, as you said).
legendary
Activity: 1260
Merit: 1019
OK, i've realized that Eligius pool has its own rules (even stronger than classic bitcoind) for accepting and relaying transactions
For example,
Eligius nodes reject all txs from/to "correct horse.." address and some other blacklisted addresses
https://gitorious.org/bitcoin/luke-jr-bitcoin/source/7da290756fafb61369994f736f238ed990c3a45c:src/script.cpp#L1740

I am not sure now that it is possible to connect to main-eligius-node directly to check its mempool and send tx to it. Seems to me that there are only "frontend" nodes available from internet with their memory-pools
legendary
Activity: 1260
Merit: 1019
I did some tests with some nodes, trying to push non-standard txs
I wrote down the txs, which these nodes already have in their memory-pool
Here are the results:

Code:
68.168.105.168  running: "/Satoshi:0.8.5/Eligius:3/"
--------------
tx: d8a9efcedd91d017b8a0962e31d1d52d71554b72c7e02f17a85e1c70723a12cc
  redeems: 2ee6d8ea223e118075882edba876f01b30f407eb6c6d31c40bd6664a17f20f0c:0
  value: 0.0049
  fee: 0.0001
  size: 1240
  to: 19pZQFrG2B6tWPLY8tQPMprtp82exuc2oS
tx: 083e2af0b48d4c6e044f3f78eeaadabd95810360499c0c63551d4d32a2fd67fb
  redeems: 12a8d1d62d12307eac6e62f2f14d7e826604e53c320a154593845aa7c8e59fbf:0
  value: 0.0009
  fee: 0
  size: 86
  to: 19AQTg49nNmrU1yoWqxpyaVx3vk8i1w5gV
tx: 8dcc4ae94b577a779fe8069a90b179c12cf3c628c12bd85bbcd5afcfeee84a11
  redeems: ab149362ea4e119d2bc5211b35083c23ec41842af6bbc2ff3c5f1e55941199cc:0
  value: 0.005
  fee: 0
  size: 87
  to: 19LznyKCqP6ZXwa1xDigUr3Wj2usHbPitT

Code:
192.3.11.20   running: "/Satoshi:0.8.4/#Bitcoin-Watch:1/"
-----------
tx: 7afdcb9067f6549a569116a79cb1256920a0c566ff36cf4dce88718d57402f4f
  redeems: ab149362ea4e119d2bc5211b35083c23ec41842af6bbc2ff3c5f1e55941199cc:0
  value: 0.0049
  fee: 0.0001
  size: 87
  to: 1E3PxAgn5owmpPoeBmGBbrFBTkL3Wwfdt3
tx: d9f8694b157fca880b138c0348fca44d10d63bc9b42174cd09ca69ad0972646e
  redeems: 12a8d1d62d12307eac6e62f2f14d7e826604e53c320a154593845aa7c8e59fbf:0
  value: 0.0008
  fee: 0.0001
  size: 223
  to: 1E3PxAgn5owmpPoeBmGBbrFBTkL3Wwfdt3

Code:
98.70.227.41   running: "/Satoshi:0.8.99/next-test:20130721/"
------------
tx: 0eb816e8d25301b695d6ad68b7397d590ef9196262d2eccd2f21398fb2063437
  redeems: 12a8d1d62d12307eac6e62f2f14d7e826604e53c320a154593845aa7c8e59fbf:0
  value: 0.0008
  fee: 0.0001
  size: 234
  to: 1E3PxAgn5owmpPoeBmGBbrFBTkL3Wwfdt3
tx: bb1ebbe8855043440037260250c5c048a400106c535d7ef0b4dd95069c4316cc
  redeems: 2ee6d8ea223e118075882edba876f01b30f407eb6c6d31c40bd6664a17f20f0c:0
  (and several other inputs - it is my tx!)

I do not know how old are these transactions - holding time is not a bitcoin rule, but a client feature
We should ask Luke
1) What is the actual IP-address of Eligius node
2) What is the actual FEE for non-standard txs on Eligius pool
3) Are there additional restrictions for non-standard txs on Eligius (blacklists etc)

Luke-Jr, come here and answer our questions please! Smiley
legendary
Activity: 1260
Merit: 1019
Quote
Isn't there a limit to multisig transaction sizes?
This is client limit to accept/relay, not a protocol rule.

There was 20-of-20 transaction https://blockchain.info/tx/c4aaf7fbec7a9a079e670e50f6a672315451c7618814494ab1f89cf3fd97b3bb
And it was spent by somebody Shocked in https://blockchain.info/ru/tx/da738e29f64e90ae46dcc3e6b4154041d6324abbe7919e722d486a4a3148b7dc (mined by Eligius of course)
jr. member
Activity: 55
Merit: 2
Isn't there a limit to multisig transaction sizes? See this:

https://bitcointalksearch.org/topic/m.5625950

Sure but larger tx are merely nonstandard, not invalid. Eligius pool allows nonstandard tx to be included as long as fees are paid, but it will not propagate the tx to other nodes.
legendary
Activity: 3682
Merit: 1580
Isn't there a limit to multisig transaction sizes? See this:

https://bitcointalksearch.org/topic/m.5625950
legendary
Activity: 1260
Merit: 1019
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,
jr. member
Activity: 55
Merit: 2

How did you try to redeem this output? There is a web-form http://eligius.st/~wizkid057/newstats/pushtxn.php but we do not know is it connected directly to the pool-node-accepting-non-standard-txs or not. The second way is connect to the node with non-standard client and send raw tx from console. But what is Eligius ip-address?

To answer your question, yes I've trying the web-form.

How do you directly dump rawmempool on a remote node? And how do you find out which tx has conflicts with your tx? I have added the node to my bitcoin.conf but when I type "bitcoin-cli getrawmempool" it just dumps my local mempool, right?
jr. member
Activity: 55
Merit: 2
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... let's wait a bit longer.

Anyway thanks for the info!
legendary
Activity: 1260
Merit: 1019
Quote
Do pending transactions live forever on Eligius mempool?
Nothing is forever imho. Just until restart.
Anyway, only Luke-Jr can answer this question.

Quote
I've been watching this 16-of-16 multisig tx for a while (2ee6d8ea223e118075882edba876f01b30f407eb6c6d31c40bd6664a17f20f0c)... it has never been redeemed even though the solution is not hard to arrive at.

My conclusion is that someone has been spamming Eligius with a valid redemption tx but it is never included in a block due to insufficient fees. But because it is already in the mempool, no other valid tx can be accepted.

So does that mean the tx can never be redeemed?

How did you try to redeem this output? There is a web-form http://eligius.st/~wizkid057/newstats/pushtxn.php but we do not know is it connected directly to the pool-node-accepting-non-standard-txs or not. The second way is connect to the node with non-standard client and send raw tx from console. But what is Eligius ip-address?

I was interested also in this question. So, I wrote a program which parses the whole blockchain, locates all spendable-by-me outputs, connects to Eligius (nat.router.dashjr.org:8333 but I am not sure), asks for memory pool (this is important), resolves conflicts (pool will not accept my double-spending attempt) and sends redeem transaction.

I sent the redeem transaction with the fee 0.00010000 from several inputs (including my standard inputs from my account and this one) today. Next time I run my program the transaction came to me from the pool - so I definetetely know that it was correct and was accepted. Wow! But it was not mined for several hours - may be the fee is too low or this node is not a pool, but only a Luke's node with old client on it.

tx hash is bb1ebbe8855043440037260250c5c048a400106c535d7ef0b4dd95069c4316cc
(it was not accepted by all other standard nodes, so you can not google it until (and if) it will be mined)

Code:
"txid" : "2ee6d8ea223e118075882edba876f01b30f407eb6c6d31c40bd6664a17f20f0c",
"vout" : 0,
"scriptSig" : {
"asm" : "0 30450221009dda0de70d944bac4d077088e5dd80ded212bfc9f79f36e2636387800ed81bfe022016a18a1c4352975e6497834bdd5ead22f3d031e62bf66e6fc2174184bb0367f701 OP_DUP OP_DUP OP_DUP OP_DUP OP_DUP OP_DUP OP_DUP OP_DUP OP_DUP OP_DUP OP_DUP OP_DUP OP_DUP OP_DUP OP_DUP",
"hex" : "004830450221009dda0de70d944bac4d077088e5dd80ded212bfc9f79f36e2636387800ed81bfe022016a18a1c4352975e6497834bdd5ead22f3d031e62bf66e6fc2174184bb0367f701767676767676767676767676767676"
},
"sequence" : 4294967295

I can discard this transaction (by double-spending my standard outputs on the rest of network) and resend to Eligius with higher fees. Let's wait a couple of days.

By the way. This node (nat.router.dashjr.org) holds thousands of spam transactions 1Sochi&1Enjoy in it's memory pool. Is it a bug or a feature? I dont know. But if it is Eligius - so it keeps pending transactions for a looooong time - month or two or may be more.

Sorry for my poor English

jr. member
Activity: 55
Merit: 2
I've been watching this 16-of-16 multisig tx for a while (2ee6d8ea223e118075882edba876f01b30f407eb6c6d31c40bd6664a17f20f0c)... it has never been redeemed even though the solution is not hard to arrive at.

My conclusion is that someone has been spamming Eligius with a valid redemption tx but it is never included in a block due to insufficient fees. But because it is already in the mempool, no other valid tx can be accepted.

So does that mean the tx can never be redeemed?
Jump to: