9 ms·
A successful Bitcoin double spend – USD 10000
- maaku 14y agoShould be noted that the money was returned.
- w-ll 14y agoI might be wrong, but it wasn't returned, but that doesn't matter, all the mining ops switched to the 0.7 chain, and the transaction is now in limbo (for lack of a better term); the forked 0.8 chain.
- waterlesscloud 14y agoHe paid it back, he said something about it in the irc channel this morning. Still, it's an exploitable vulnerability. Very difficult to make the conditions happen, but if they happen naturally it's something that can be taken advantage of. It'll need to be addressed in one way or another.
- skcin7 14y ago> he said something about it in the irc channel What IRC channel out of curiosity?
- waterlesscloud 14y ago#bitcoin, I think. That or #bitcoin-dev.
- eric_bullington 14y agoIt was returned, and an OKPay rep confirmed it (with not much gratitude, in my opinion): https://bitcointalk.org/index.php?topic=152348.80 https://bitcointalk.org/index.php?topic=152348.80
- maaku 14y agoThe guy used a $10,000 double spend to publicly extort OKPay to expedite a smaller refund, rather than go through support. I'm not sure I'd be very gracious either, or ever do business with this guy again.
- eric_bullington 14y agoI got the impression he had tried to go through support, and got no response until he ended up with $10,000 of their money. Then all of a sudden, they solved his problem. But if it happened like you think, I definitely agree with you.
- tantalor 14y agoCan somebody explain without the technical jargon?
- jmillikin 14y agoBitcoin's security is based on the idea of a "block chain", which is sort of a mutually agreed-upon list of transactions. As long as all participants in the Bitcoin economy are using the same block chain, then double-spending money is (for all practical purposes) impossible. It was recently discovered that a change in Bitcoin 0.8 caused an entry in the block chain that old versions can't process. The old versions, unable to verify the 0.8 block chain, automatically started their own block chain based on the last block they could deal with. 0.8-readable block chain continues | ---> | | | <- 0.7-readable block chain splits off | / |/ * <- block that old versions can't process | | (history) For technical reasons, it was decided that the 0.8 block chain would be abandoned, and all clients should switch to the "forked" block chain that was accidentally created by old clients. dead | <- 0.7-readable block chain is now "official" | | ---> _ | | | | / |/ * <- block that old versions can't process | | (history) This causes a problem, because until that switch happens, a person could issue a transaction to a 0.8 client that would be accepted only by clients running the "bad" 0.8 blockchain. The OP states that he has done this successfully. He submitted a transaction to a BTC<->USD service running 0.8. The service, checking the bad block chain, thought it had received Bitcoins and therefore sent him USD. But his transaction was never sent to the "official" block chain, so according to the rest of the Bitcoin world, he still has his original Bitcoins. This is significant because prevention of double-spending is a fundamental feature of Bitcoin. If it can be bypassed, then the entire Bitcoin economy is endangered.
- deleted 14y ago[deleted]
- ctz 14y agoWhat happened to bitcoins 'mined' on the 0.8 chain in the meantime? Did people lose their currency?
- nostromo 14y agoI've actually thought about putting some play money in Bitcoin, but these stories prevent me from doing so. This guy is (apparently?) unhappy, and he's knowledgable enough about bitcoin to know to inspect forks and vins and OKPAY transactions -- and then to make two double (?) spend transactions. If this guy is getting screwed, I'd surely manage to lose twice my investment somehow.
- snitko 14y agoTechnical problems resulting in people losing money happen all the time outside of the Bitcoin economy. In fact, the way these recent events were handled by Bitcoin developers and the community are way more encouraging than, say, actions taken by Visa after someone supposedly stolen a million credit card numbers. So, philosophically speaking, Bitcoin encourages people to start thinking about being more responsible about their money safety (which they anyway have to do, regardless of what they use, Bitcoin or a bank), at the same time providing a much better way to perform transactions and save for the future.
- taligent 14y agoSure technical problems happen all the time. But there are tens/hundreds of thousands of engineers/testers across the world who get paid very well to fix them. Bitcoin doesn't have that sort of infrastructure. And if you are responsible about money safety then putting your money into Bitcoin is pretty stupid. Banks around the world insure credit card losses for any fraudulent transactions.
- snitko 14y agoYour logic is slightly wrong. When a project is opensourced and popular, odds are you actually have more engineers looking at it and fixing things, than when you have isolated teams working on software for each individual bank. And that's not even talking about testers. Then you also are paying much higher fees for what is supposed to be more safety. These fees come in various forms: government taxes, inflation, transaction fees.
- zby 14y agoThere was a visible fork of the blockchain - a clearly exceptional condition showing that the network did not work correctly at that moment. All merchants should stop accepting payments for duration of that - this can easily be automated.
- URSpider94 14y agoForks of the blockchain happen all the time as a natural side effect of the distributed nature of blockchain calculation. How do you propose that a merchant detect a pathological fork? If you're going to tell me that it depends upon the length of the fork, then you'd better be waiting at least that many blocks before you verify a transaction.
- nazgulnarsil 14y agothis is already built into the protocol.
- URSpider94 14y agowhat is 'this'? If you mean waiting for x validations before accepting a transaction, yes -- but do you really think that it's practical to wait 30 minutes before delivering goods for a transaction? That's going to be a really long time spent staring at the little spinny thing over a line of text saying "verifying your payment" ...
- nazgulnarsil 14y agoIt's completely reasonable. Bitcoin is not a good candidate for a medium of exchange despite what some adopters will tell you. It is more like virtual gold. You can see in the real world that mediums of exchange and stores of value aren't the same thing because the properties that are desirable in one are not desirable in the other.
- eric_bullington 14y ago
- rms 14y agoYet the price keeps rising...
- gusgordon 14y agoRising price doesn't mean confidence in the currency. If that were the case growth would be exponential (it's not). It should exclusively be the other way around.
- tudorizer 14y agoCan you elaborate on this?
- gusgordon 14y agoOk - let's say the price of a dollar rises 10 cents. If that meant an increase in confidence, then the price would rise even more and it would go on and the price would rise really fast. In reality the price rises and some people are more confident and some are thinking that the price will drop soon and they will buy again.
- bdcravens 14y agoIndeed, every time a negative story comes out, proponents always talk about the MtGox price and how that indicates how strong BitCoin is. BitCoin's raison d'etre isn't for conversion to fiat currency - it's to become an alternative to fiat currency. I'd love to see a breakdown of how much has been converted into fiat currency vs. how much has been spent for goods/services. Likely, I bet it's well over 100:1. So what has happened? BitCoin is helping put more fiat currency in people's hands as it grows, which is (theoretically) being spent on iPhones and bubble gum, strengthening the value of fiat currency in general.
- aianus 14y agoEven if Bitcoin fails at everything except conversion into and out of fiat currency, it's still a major win. It significantly undercuts existing services for international payments while also circumventing currency controls, AML regulations, and censorship.
- johnsoft 14y agoThis was only possible because of an obscure bug in a database library used by the reference client, which the developers are in the process of migrating away from. The latest 0.8-beta release inadvertently caused a size restriction on some part of the block structure to be loosened. Since the majority of the network's mining power had upgraded, older clients wouldn't accept these blocks, and the blockchain diverged, with 0.7 and 0.8 each on a different fork, seeing an inconsistent view of recent transactions. Miners were quickly contacted and asked to downgrade to 0.7, and once the 0.7 chain caught up with the 0.8 chain, the network resolved the problem and the view of transactions became consistent again. One of his transactions was on the 0.8 chain (during its short life, and the other was on the 0.7 chain. So it's better to think of it as a transaction being invalidated rather than double-spent, because in the end there were no outputs that didn't come from an input. This was only possible to to extraordinary circumstances, and as long as the majority of the network is running software that plays by the same rules, this kind of thing isn't possible.
- URSpider94 14y agoOne of his transactions was on the 0.8 chain (during its short life, and the other was on the 0.7 chain. So it's better to think of it as a transaction being invalidated rather than double-spent, because in the end there were no outputs that didn't come from an input. This is using semantics to try to minimize the severity of what happened. For a time, the world thought there were more bitcoins in circulation than there actually were. Someone thought they were holding BTC which turned out not to exist, since after the chains were merged, those extra BTC just ceased to exist. That isn't a big deal if both sets of BTC were sitting in a holding account somewhere. On the other hand, it IS a big deal if (as is the case in most financial transactions), the parties exchanged another item of value (say, $1000 cash) in return for receiving each BTC transaction. One of those parties now has -$1000 and zero BTC to show for it.
- runn1ng 14y ago>as long as the majority of the network is running software that plays by the same rules, this kind of thing isn't possible Isn't this against the idea of decentralization?
- SoftwareMaven 14y agoYou know the next time something like this happens (and, this is software, it will happen), there will be a lot of people trying this attack. It was theoretical before with "enough effort"; now, it is known to be easy. And the problem will get harder to manage as BC becomes more popular. They could restrict damage because the ecosystem is still small, but when if there are millions of merchants? The alternative is centralized processors, which doesn't make BC that much better than cash.
- batgaijin 14y agoshard the currency
- platypii 14y agoOK, so it's not hard to imagine double spends happening during a fork. This incident proves that as long as there is at least one provider willing to exchange BTC automatically, and is unaware of a fork in progress, then one can exploit the fork and double spend. This is bad, and should be fixed with a technical solution if possible. People will be looking for this in the future. Here's the scary thing revealed by this bug however: Causing (intentionally) a fork is WAY easier than I thought! You don't need to control a majority of mining. All you need is to craft a block such that some large % of the mining clients will fail on it. This could be a failure at any point in the bitcoin software. If there is a size limit discrepancy between versions (in this case the DB), or maybe a unicode parsing bug in some library used, or whatever. It doesn't need to be an exploitable code bug. It just needs to cause some % of mining clients to fail and reject a particular block. It's relatively easy to find a bug that causes some software to crash. Most of the time these bugs are minor, and don't allow any remote execution or anything, so programmers don't necessarily worry about them most of the time. But in bitcoin they could potentially cause a blockchain fork! Which could be exploited, as this incident proves. This seems to lower the bar considerably to exploit BTC.
- jimrandomh 14y ago> This could be a failure at any point in the bitcoin software. No, it can only be a failure in the code that determines whether a block is valid. This is a small amount of code, subject to pretty intense scrutiny. And it can only be a bug that makes clients produce conflicting answers, not one that makes clients crash outright. (The 0.7 client, apparently, caught an exception and handled it by treating the block as invalid. We now know that this was a mistake; it should be made to crash instead.) During the fork, 0.7 clients detected that they weren't on the longest chain and received an automatic message saying that their client might be out of date. People are now talking about building fork detection into merchants' systems, to fall back to safe mode if a fork is detected.
- makomk 14y agoThe code that actually determines whether a block is valid is not a small amout of code at all though - that's the entire problem! Whether a block is valid or not depends on subtle behavioural details of huge third-party libraries. The current issue resulted from a quirk of BDB and the developers still haven't managed to fully figure out when exactly it does cause a block to be treated as invalid. We also already knew that block validation inherits some of OpenSSL's quirks which aren't compatible with other, more spec-compliant crypto libraries. It's entirely likely that other code outside of the Bitcoin client also affects which blocks are valid.
- gritzko 14y agohttp://pds.ewi.tudelft.nl/~victor/bitcoin.html http://pds.ewi.tudelft.nl/~victor/bitcoin.html There is a plethora of truly wonderful effects possible once the transaction chain is forked. The guy did the simplest thing possible with the least effort invested after the chain forked on its own, basically. In case we had several BitCoin codebases operating in the wild, such forks would be too easy to trigger. Key point: the technology is crap but the demand is huge.
- marco-fiset 14y agoI was looking forward for BitCoins to be hacked. This tells me it's not secure enough yet.
- unclebucknasty 14y agoThere are people saying that this shouldn't happen again, etc. but it will. Perhaps not in this exact form, but in some form. And, this was an accident. As we know, there are many people with the ill-intent and incentive to look for or create exploits 24/7. Saying this won't happen again is like saying "Ok, this is the LAST FireFox patch you'll ever need. Really. We've thought of everything." This is a game of cat and mouse, similar to one I've involuntarily had to play with fraudsters in my business over the years, and we've all been involved with via viruses, software patches, etc. I am not sure why we continue to have such supreme confidence that we have discovered something even approaching bulletproof here, when history has taught us that we should believe anything but. It's partly the developer mindset, I suppose. We all tend to believe we've thought of every path and that our code is bug free, until someone encounters a bug that is. We need to abandon that overly optimistic mindset and look for solutions that accomodate the inevitability of this happening again, whether they be process, technical, or both. This might include the notion of a central registry on the network, which can help to resolve/identify potential forks, etc. While I know the notion of decentralization is sacrosanct in the BTC community, it is really a fallacy that there is not centralization now. The "core team" is actually playing that role, albeit manually, and what this issue shows is that it may well be a necessary role. I am not talking about doing away with the P2P nodes or controlling them centrally, just acknowledging that pure P2P has strong merits, but also introduces vulnerabilities. This incident was containable and manageable. In the future (and especially at scale), it may well be infeasible for such manual intervention to clean up the mess. Rather than all convince ourselves that we have now thought of everything, we need to assure ourselves that we haven't and never will, then use our collective brainpower to build in the kinds of safeguards and redundancies that will help avert catastrophe when the inevitable happens.
- cadetzero 14y agoI submitted the exact same a day ago. https://news.ycombinator.com/item?id=5365083 https://news.ycombinator.com/item?id=5365083