While playing with my bitcoin client a few days ago, I noticed someone had sent me money when I wasn’t quite expecting it. It’s unlikely this will happen much more frequently than this – two blog posts about it in a short space of time – but this wasn’t directly sent to me, it turned out to be a bit of a joke transaction.
http://blockexplorer.com/tx/2ee6d8ea223e118075882edba876f01b30f407eb6c6d31c40bd6664a17f20f0c?show_adv=true
I wondered who had sent the money, I checked out the address it came from (129nv7BZkwzCw7KaXha18381g5XmossQ9r) it had nothing to do with me or anyone I knew. When I looked to see what address they had sent it to, the fun began. It was a multi-signature transaction! The transaction needs 16 signatures from the private key corresponding to the public key:
0478d430274f8c5ec1321338151e9f27f4c676a008bdf8638d07c0b6be9ab35c71a1518063243acd4dfe96b66e3f2ec8013c8e072cd09b3834a19f81f659cc3455
Each public key was the same, so it wasn’t a typical multisig where the funds were split up between several signatories – they were redeemable once one person signed it with the right key (albeit 16 times).
Things got exciting when I googled the public key. It turned up some Russian and Chinese sites, adding to the mystery of it all, but an English page on Github revealed all – it was for ‘correct horse battery staple’. Holy shit! It’s a game! I realized I had to have imported the default key on brainwallet.org at some stage. I wouldn’t be seeing this challenge if it wasn’t for that!
So, I created a raw transaction that tried to spend these funds:
./bitcoind createrawtransaction '[{"txid":"2ee6d8ea223e118075882edba876f01b30f407eb6c6d31c40bd6664a17f20f0c","vout":0}]' '{"1PGa6cMAzzrBpTtfvQTzX5PmUxsDiFzKyW":0.0049}' 01000000010c0ff2174a66d60bc4316d6ceb07f4301bf076a8db2e887580113e22ead8e62e0000000000ffffffff01107a0700000000001976a914f444a269154eb560bebd424c2b406f1789ed49d688ac00000000 ./bitcoind signrawtransaction 01000000010c0ff2174a66d60bc4316d6ceb07f4301bf076a8db2e887580113e22ead8e62e0000000000ffffffff01107a0700000000001976a914f444a269154eb560bebd424c2b406f1789ed49d688ac00000000 { "hex" : "01000000010c0ff2174a66d60bc4316d6ceb07f4301bf076a8db2e887580113e22ead8e62e00000000fd810400473044022001667ce56104709e9cc4637c323edab7974635b1ed0bca8d6f9137022b8f872702206e40637ff4e800c80feac6c9a11254df5f852fd3ae39fd7ca4a78fea241d354f01473044022001667ce56104709e9cc4637c323edab7974635b1ed0bca8d6f9137022b8f872702206e40637ff4e800c80feac6c9a11254df5f852fd3ae39fd7ca4a78fea241d354f01473044022001667ce56104709e9cc4637c323edab7974635b1ed0bca8d6f9137022b8f872702206e40637ff4e800c80feac6c9a11254df5f852fd3ae39fd7ca4a78fea241d354f01473044022001667ce56104709e9cc4637c323edab7974635b1ed0bca8d6f9137022b8f872702206e40637ff4e800c80feac6c9a11254df5f852fd3ae39fd7ca4a78fea241d354f01473044022001667ce56104709e9cc4637c323edab7974635b1ed0bca8d6f9137022b8f872702206e40637ff4e800c80feac6c9a11254df5f852fd3ae39fd7ca4a78fea241d354f01473044022001667ce56104709e9cc4637c323edab7974635b1ed0bca8d6f9137022b8f872702206e40637ff4e800c80feac6c9a11254df5f852fd3ae39fd7ca4a78fea241d354f01473044022001667ce56104709e9cc4637c323edab7974635b1ed0bca8d6f9137022b8f872702206e40637ff4e800c80feac6c9a11254df5f852fd3ae39fd7ca4a78fea241d354f01473044022001667ce56104709e9cc4637c323edab7974635b1ed0bca8d6f9137022b8f872702206e40637ff4e800c80feac6c9a11254df5f852fd3ae39fd7ca4a78fea241d354f01473044022001667ce56104709e9cc4637c323edab7974635b1ed0bca8d6f9137022b8f872702206e40637ff4e800c80feac6c9a11254df5f852fd3ae39fd7ca4a78fea241d354f01473044022001667ce56104709e9cc4637c323edab7974635b1ed0bca8d6f9137022b8f872702206e40637ff4e800c80feac6c9a11254df5f852fd3ae39fd7ca4a78fea241d354f01473044022001667ce56104709e9cc4637c323edab7974635b1ed0bca8d6f9137022b8f872702206e40637ff4e800c80feac6c9a11254df5f852fd3ae39fd7ca4a78fea241d354f01473044022001667ce56104709e9cc4637c323edab7974635b1ed0bca8d6f9137022b8f872702206e40637ff4e800c80feac6c9a11254df5f852fd3ae39fd7ca4a78fea241d354f01473044022001667ce56104709e9cc4637c323edab7974635b1ed0bca8d6f9137022b8f872702206e40637ff4e800c80feac6c9a11254df5f852fd3ae39fd7ca4a78fea241d354f01473044022001667ce56104709e9cc4637c323edab7974635b1ed0bca8d6f9137022b8f872702206e40637ff4e800c80feac6c9a11254df5f852fd3ae39fd7ca4a78fea241d354f01473044022001667ce56104709e9cc4637c323edab7974635b1ed0bca8d6f9137022b8f872702206e40637ff4e800c80feac6c9a11254df5f852fd3ae39fd7ca4a78fea241d354f01473044022001667ce56104709e9cc4637c323edab7974635b1ed0bca8d6f9137022b8f872702206e40637ff4e800c80feac6c9a11254df5f852fd3ae39fd7ca4a78fea241d354f01ffffffff01107a0700000000001976a914f444a269154eb560bebd424c2b406f1789ed49d688ac00000000", "complete" : true }
:O It worked! I checked using the haskoin wallet utility, which shown everything was valid, so I tried to broadcast, but got the cover-all ‘TX rejected’ error. Damn. I checked the transaction using a few tools, which all declared it was fine, but each time I tried I ran into trouble. Bitcoind seemed to reject the transaction before it was broadcast at all. Electrum wasn’t going to work because it communicated with a back-end Bitcoin daemon. Armory too. Blockchain decided the signature was invalid, but they don’t normally support these types of transactions, so fair enough. coinb.in/multisig also gave an unspecific broadcasting error.
So this is where I am now! The signed transaction won’t broadcast, so I’ll have to try submtting it directly to a mining pool, one way or another. I have no idea if this will be possible using Bitcoind after doing addnode, because it seemed to fail before it was broadcast to the network.
Now 0.005BTC isn’t exactly worth fighting over, but someone left these funds to be claimed! I’ll post back later if I have any updates, or maybe if you beat me to it you can let me know the last piece of this puzzle!
I am new to this but maybe you can try http://eligius.st/~wizkid057/newstats/pushtxn.php ? I know eligius is supporting non-standard transaction (I am just guessing around though)
Interesting! Thanks for the link. I tried it with the above signed transaction, and it gave this output:
Trying to send…
array(3) {
["result"]=>
string(64) “f4266094f47b76b345f919651bffee7a30f73dd7fbaba35bda0f04235d9c891c”
["error"]=>
NULL
["id"]=>
string(1) “1″
}
Response = 0
It appears to have failed, as it’s not known by my client or on blockchain.
That means a success.
Actually the transanction did show up yesterday at blockchain.info (0 confirmation, I wished I have taken a screenshot). The only thing is the transaction fee is too low so the transaction never gets confirmed (did you put 0.02?, if not probably not you). Because the transaction size is quite big (1kb) i think you will need to put higher fee.
I tried again, just getting a rejected error now from the site. That’s weird, it didn’t get mined anyway! the output looks unspent on blockexplorer but I could be wrong. I’ll check it out again later
Actually I saw several attempt of double spend as well. One is to another address (a fresh one) and another is where it was sent to 2 address (0.003 and 0.0018). Were those yours as well? Because looks like the mining fee is 0.002 as well.
0.0002*.