Bitcoins, redeemable by anyone.

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!