novitski / bitcoinj

Automatically exported from code.google.com/p/bitcoinj
Apache License 2.0
0 stars 0 forks source link

"Saw two pending transactions double spend each other" -- still the invalid tx is allowed into the wallet #533

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
See attached log and look for 
62a6fcb5fdde6d7b68ad3973b929563889804320c2d8dbdd5864f6ab4dd20ba1.

At one point is says:

wallet.958692225.log:08:36:47.356 [NioClientManager] Wallet - Received a 
pending transaction 
62a6fcb5fdde6d7b68ad3973b929563889804320c2d8dbdd5864f6ab4dd20ba1 that spends 
0.06710348 BTC from our own wallet, and sends us 0.06690348 BTC
wallet.958692225.log:08:36:47.357 [NioClientManager] Wallet - commitTx of 
62a6fcb5fdde6d7b68ad3973b929563889804320c2d8dbdd5864f6ab4dd20ba1
wallet.958692225.log:08:36:47.359 [NioClientManager] Wallet - Saw two pending 
transactions double spend each other: 
62a6fcb5fdde6d7b68ad3973b929563889804320c2d8dbdd5864f6ab4dd20ba1 vs 
223a45da91c16ee2f066d5bfe0c0907b5d81e0149da3b9bbc44e42f7eee4ce25
wallet.958692225.log:08:36:47.361 [NioClientManager] Wallet - ->pending: 
62a6fcb5fdde6d7b68ad3973b929563889804320c2d8dbdd5864f6ab4dd20ba1

This leads to a stuck (outgoing) transaction. The wallet contains four of these 
stuck transactions, all looking the same. Are they mutations? For some reason, 
they keep getting relayed by some nodes (in the above case by a 
/Satoshi:0.8.6/) yet I can't find these txns on biteasy.com or bc.i.

Original issue reported on code.google.com by andreas....@gmail.com on 8 Mar 2014 at 8:44

Attachments:

GoogleCodeExporter commented 9 years ago
I really wonder why these two transactions even have a different tx hash. I 
copied & pasted all the data from bc.i for the one transaction and the wallet 
dump for the other, and I cannot see the difference. Is there any hidden 
information relevant to the hash that is not printed?

tx 223a45da91c16ee2f066d5bfe0c0907b5d81e0149da3b9bbc44e42f7eee4ce25 (from bc.i)
304402202beca8174eb913df7344d0b80fc38ffac30547a7413287e7de5695aa2308ee9e022036ac
7597868d221ee1d57bbc2050fd1f39ca09f1b718126c9da787a207bac54e01
03ce7c330a73d592a7d72aac641743aaea5a127927eb544fa3d97194671fe46519
OP_DUP OP_HASH160 d7557cec8cbb9471679ed0fbedea39b04504cf42 OP_EQUALVERIFY 
OP_CHECKSIG 0.0001 BTC
OP_DUP OP_HASH160 7c6c6bc60860327369a6956940261ffde6570c6c OP_EQUALVERIFY 
OP_CHECKSIG 0.06690348 BTC

tx 62a6fcb5fdde6d7b68ad3973b929563889804320c2d8dbdd5864f6ab4dd20ba1 (from 
wallet dump)
304402202beca8174eb913df7344d0b80fc38ffac30547a7413287e7de5695aa2308ee9e022036ac
7597868d221ee1d57bbc2050fd1f39ca09f1b718126c9da787a207bac54e01
03ce7c330a73d592a7d72aac641743aaea5a127927eb544fa3d97194671fe46519
out  DUP HASH160 [d7557cec8cbb9471679ed0fbedea39b04504cf42] EQUALVERIFY 
CHECKSIG 0.0001 BTC
out  DUP HASH160 [7c6c6bc60860327369a6956940261ffde6570c6c] EQUALVERIFY 
CHECKSIG 0.06690348 BTC

Original comment by andreas....@gmail.com on 8 Mar 2014 at 1:54

GoogleCodeExporter commented 9 years ago
Here is the output from blockexplorer:

{
  "hash":"223a45da91c16ee2f066d5bfe0c0907b5d81e0149da3b9bbc44e42f7eee4ce25",
  "ver":1,
  "vin_sz":1,
  "vout_sz":2,
  "lock_time":0,
  "size":225,
  "in":[
    {
      "prev_out":{
        "hash":"d68dad91ffa8371de21b067496a606c9a4846c8701eba6a76033ad8b2193216c",
        "n":1
      },
      "scriptSig":"304402202beca8174eb913df7344d0b80fc38ffac30547a7413287e7de5695aa2308ee9e022036ac7597868d221ee1d57bbc2050fd1f39ca09f1b718126c9da787a207bac54e01 03ce7c330a73d592a7d72aac641743aaea5a127927eb544fa3d97194671fe46519"
    }
  ],
  "out":[
    {
      "value":"0.00010000",
      "scriptPubKey":"OP_DUP OP_HASH160 d7557cec8cbb9471679ed0fbedea39b04504cf42 OP_EQUALVERIFY OP_CHECKSIG"
    },
    {
      "value":"0.06690348",
      "scriptPubKey":"OP_DUP OP_HASH160 7c6c6bc60860327369a6956940261ffde6570c6c OP_EQUALVERIFY OP_CHECKSIG"
    }
  ]
}

Original comment by andreas....@gmail.com on 8 Mar 2014 at 4:32

GoogleCodeExporter commented 9 years ago
I added a commit that does a hex dump of the transactions. Perhaps this will 
help figure out that specific case. However, the more general issue is that the 
API has no way to express that a transaction is known to be in jeopardy. It 
should.

Original comment by mh.in.en...@gmail.com on 10 Mar 2014 at 4:28

GoogleCodeExporter commented 9 years ago
Thanks, I sent a test version to the user. Hopefully he will reply back with a 
log soon.

Original comment by andreas....@gmail.com on 10 Mar 2014 at 8:25

GoogleCodeExporter commented 9 years ago
Here is another instance of probably the same issue. A user got and (and at 
some time spent) some coins. Later he got exactly the same coins again. Of 
course that was a malleated form and did never confirm.

>>> PENDING:
Sends 0.00 BTC and receives 0.07489999 BTC, total value 0.07489999 BTC.
  c6cede0d959f51fe272ef71e388cc1e12933f86b4cbcc37ef2e8d51fa476d615: Seen by 2 peers. Pending/unconfirmed.
     in   PUSHDATA(71)[3044022010d1e1ab554568a71b6463bdf26ea4abd15b0691c11c8c740b6170f3e27598b5022003963336d49ec763b7cb70b56df3040695babfdbf8d40d490c2fe43ca9511fd201] PUSHDATA(65)[045871d4ad209696e13550aaee4ea43fefd4a508b151b0cab41f23ccc89ff0efb485ae99f06591ca0e6c9e7ff1f9d9c843e7a79c458223b794788730d141e1b466]
          outpoint:c2573bb9b7c88c1ce06641837b1259131704b8131e4057ec65e1f7ca4930e830:1
     out  DUP HASH160 PUSHDATA(20)[27fa2dbf0c55aad5ba0307f0d5acfd6a9dabd89e] EQUALVERIFY CHECKSIG 0.07489999 BTC
     out  DUP HASH160 PUSHDATA(20)[9c6d0274c89db717727bbc5a8951e489aa026537] EQUALVERIFY CHECKSIG 0.20432075 BTC

>>> UNSPENT:
Sends 0.00 BTC and receives 0.07489999 BTC, total value 0.07489999 BTC.
  79607d3d1dbf07eea8301368f0ed035ba5f94f31773e52b4e49bb58a8318cb06: Seen by 1 peer. Appeared in best chain at height 319205, depth 12340.
     in   PUSHDATA(72)[3045022010d1e1ab554568a71b6463bdf26ea4abd15b0691c11c8c740b6170f3e27598b5022100fc69ccc92b61389c48348f4a920cfbf824f41d0ab67492f2b3a27a5026e5216f01] PUSHDATA(65)[045871d4ad209696e13550aaee4ea43fefd4a508b151b0cab41f23ccc89ff0efb485ae99f06591ca0e6c9e7ff1f9d9c843e7a79c458223b794788730d141e1b466]
          outpoint:c2573bb9b7c88c1ce06641837b1259131704b8131e4057ec65e1f7ca4930e830:1 hash160:9c6d0274c89db717727bbc5a8951e489aa026537
     out  DUP HASH160 PUSHDATA(20)[27fa2dbf0c55aad5ba0307f0d5acfd6a9dabd89e] EQUALVERIFY CHECKSIG 0.07489999 BTC Spent by c803ce852d19cdb76ef8d8729d91270a15e882c62473dff251c7cd0ccb6c5d37
     out  DUP HASH160 PUSHDATA(20)[9c6d0274c89db717727bbc5a8951e489aa026537] EQUALVERIFY CHECKSIG 0.20432075 BTC Spent by abfd0f0506e1b2594c993ac1109588f65fe16e2e11ee470ccae50b67b4ac098f

Original comment by andreas....@gmail.com on 27 Nov 2014 at 11:25