Ok, so I checked the transactions and there was one which I actually won -> a96a3cc6284df89c4d670722e6c2705b7d3709673be8e7207c53e02f35220d45
Thing is, the pay out address, it is not mine. I'm using the bitcoin-qt client at version 0.6.2.2, so I'm pretty sure that's not the problem. Where did satoshidice come up with the address? It is not mentioned in the bet tx at all. So, all in all, I placed 7 bets and received 4 payouts for losing, so I'm missing 2 loosing payouts and one win.
What should I do? Stop betting?
Transaction: a96a3cc6284df89c4d670722e6c2705b7d3709673be8e7207c53e02f35220d45
UpdateTime: Thu May 24 14:56:48 PDT 2012
Inputs:
in:0 <- 55eacb8699a780561ca42012a3ea47e2eab100d01f89a18749666a94bc88938e:1
1K6UuRxtomeyGhYsTCXq9HdRDQVMDPQeEe
[72]30450220239628fbc434ac378f1f0f52d02ec0004e8d0ae930467eee649daabaf210e409022100b
3d836a99f48b9bec9136c77efc4dd9721924ab291df4fca33006095ad2d04a101
So Blockexplorer and blockchain.info say 1MgH8iNkdZrDW8rsfzifDzsqJnCjBVyRBV
My software says 1K6UuRxtomeyGhYsTCXq9HdRDQVMDPQeEe
The input script is identical. Very strange.
Ok, returning from a dive into whatever this insanity is.
http://blockchain.info/tx-index/4611323/5d34b39c5e531e939801ff573553189d9f6ee417b1ce053dbb29d6474c263619Take a look at this, a normal transaction.
In the script inputs section there are two elements:
3045022100a22956219bfb38b6f89eeaecd7c1bf3626efbd13fb53a4bf694f613cfcb493c202206
dbe153a64cc05f017a0e4e3070780ae1ce00ca22c45699c1f825a1da0e7cbbc01 04550138da91fd693ac9865af4d3412d5f03f776a50e852f348b270402946e5079ce3a8a6b5cb40
2a181439151e1453da6d75b515c86ddf9f34206dffeff32a46e
The second one, that starts with 0455 is the public key. It is pretty important.
Now take a look at our favorite transaction:
http://blockchain.info/tx-index/6712457/a96a3cc6284df89c4d670722e6c2705b7d3709673be8e7207c53e02f35220d45It just has one element:
30450220239628fbc434ac378f1f0f52d02ec0004e8d0ae930467eee649daabaf210e409022100b
3d836a99f48b9bec9136c77efc4dd9721924ab291df4fca33006095ad2d04a101
Now this is probably valid. Blockexplorer and Blockchain.info seem to understand it but my BitcoinJ implementation does not. In fact, it misunderstands is so hard that it isn't know it is misunderstanding it and hashes the entire input script as if it is the public key. So that produces an address so my software goes on fine and pays that address, which no one has the key to.
I have my software now ignoring any such transactions that it sees. This isn't optimal but at least it prevents them from being paid to the wrong address.
I hope in the next few days some people in the BitcoinJ development circle can shed some light and I can put in a real solution.
In the mean time I will pay out nelisky separately to make that right and run a program to see if there were any more of these.
I think this was caused because the output in question was fresh from a mined block and had the output in the older OP_CHECKSIG style.
http://blockchain.info/tx-index/6313254/55eacb8699a780561ca42012a3ea47e2eab100d01f89a18749666a94bc88938eHowever, I could easily be misunderstanding what is going on there.