jl2012 (OP)
Legendary
Offline
Activity: 1792
Merit: 1111
|
|
February 10, 2014, 01:45:25 PM Last edit: February 10, 2014, 01:56:22 PM by jl2012 |
|
Let's assume we have a bank called "Bitcoin Bank". People can open accounts at the bank, get an account number (bitcoin address), and send money to their account. Money is transferred with cheque.
Gox opened many accounts at the Bitcoin Bank, with many account numbers. They give one account number to one customer. By monitoring these accounts, gox will know which customer has sent money to them, and credit to their gox account
When a customer submits a withdrawal request, gox will sign a cheque for one of its accounts at the bitcoin bank. They take a photo of the cheque, and use it as an evidence of delivery. However, some of the cheques issued by gox have dirt on them. Some customers cleaned the cheque first, then sent to Bitcoin Bank and got paid. The related gox bank account is then emptied.
Unlike a traditional bank, the bitcoin bank will publish the photos of all accepted cheques. Gox compares their photo records with the public records. Since the accepted cheque looks different from the original cheque (dirt is removed), gox can't recognize it and falsely believes that the related bank accounts still have money. Therefore, when another customer requests for withdrawal, they try to sign another cheque with the now emptied bank account. The Bitcoin Bank will reject this double spending cheque, and lead to all those withdrawal issues we have seen.
Even worse, some customers find the gox's bug and try to exploit it. After they cashed the cleaned cheque, they complain to gox saying that they have not received a cheque. Since gox can't find the cheque in the record of Bitcoin Bank, they credit the bitcoin back to the customer's gox account so the customer doubled his bitcoin at the expense of gox's fund (there is NO double-spending at the Bitcoin Bank)
So gox now blames the Bitcoin Bank that it should not accept the altered but yet valid cheque.
Gox also proposes that people should not trace a cheque by comparing photo. Instead, they should trace the unique ID of each cheque, as the ID is non-modifiable. They require the Bitcoin Bank officially endorse this practice before the re-open bitcoin withdraw.
-----------------
So what is the practice of the standard bitcoin client (i.e. bitcoin-qt)? Instead of comparing the photo of cheque, bitcoin-qt actually monitors the account balance. Therefore, whether the cheque is altered is totally irrelevant.
Conclusion: Gox uses a WRONG way to trace transaction, and blame the Bitcoin Bank when everything is fucked up
|
Donation address: 374iXxS4BuqFHsEwwxUuH3nvJ69Y7Hqur3 (Bitcoin ONLY) LRDGENPLYrcTRssGoZrsCT1hngaH3BVkM4 (LTC) PGP: D3CC 1772 8600 5BB8 FF67 3294 C524 2A1A B393 6517
|
|
|
wang_yan
|
|
February 10, 2014, 01:47:17 PM |
|
Let's assume we have a bank called "Bitcoin Bank". People can open accounts at the bank, get an account number (bitcoin address), and send money to their account. Money is transferred with cheque.
Gox opened many accounts at the Bitcoin Bank, with many account numbers. They give one account number to one customer. By monitoring these accounts, gox will know which customer has sent money to them, and credit to their gox account
When a customer submits a withdrawal request, gox will sign a cheque for one of its accounts at the bitcoin bank. They take a photo of the cheque, and use it as an evidence of delivery. However, some of the cheques issued by gox have dirt on them. Some customers cleaned the cheque first, then sent to Bitcoin Bank and got paid. The related gox account is then emptied.
Unlike a traditional bank, the bitcoin bank will publish the photos of all accepted cheques. Gox compares their photo records with the public records. Since the accepted cheque looks different from the original cheque (dirt is removed), gox can't recognize it and falsely believes that the related accounts still have money. Therefore, when another customer requests for withdrawal, they try to sign another cheque with the now emptied account. The bitcoin bank will reject this double spending cheque, and lead to all those withdrawal issues we have seen.
Even worse, some customers find the gox's bug and try to exploit it. After they cashed the cleaned cheque, they complain to gox saying that they have not received a cheque. Since gox can't find the cheque in the record of Bitcoin Bank, they credit the bitcoin back to the customer's gox account so the customer doubled his bitcoin at the expense of gox's fund
So gox now blames the Bitcoin Bank that it should not accept the altered but yet valid cheque.
Gox also proposes that people should not trace a cheque by comparing photo. Instead, they should trace the unique ID of each cheque, as the ID is non-modifiable. They require the Bitcoin Bank officially endorse this practice before the re-open bitcoin withdraw.
-----------------
So what is the practice of the standard bitcoin client (i.e. bitcoin-qt)? Instead of comparing the photo of cheque, bitcoin-qt actually monitors the account balance. Therefore, whether the cheque is altered is totally irrelevant.
Conclusion: Gox uses a WRONG way to trace transaction, and blame the Bitcoin Bank when everything is fucked up
Great post, thank you so much!
|
|
|
|
Danglebee
|
|
February 10, 2014, 01:49:38 PM |
|
stupid developer does no follow rule. i hungry. maybe soiled
|
|
|
|
bleukind
Member
Offline
Activity: 66
Merit: 10
|
|
February 10, 2014, 01:50:46 PM |
|
I really love your explanation! Thx For it!
|
Bad english? Don't blame me, blame my english teacher. Proud dutch
|
|
|
leopard2
Legendary
Offline
Activity: 1372
Merit: 1014
|
|
February 10, 2014, 01:52:50 PM |
|
stupid developer does no follow rule. i hungry. maybe soiled still need diapers at five? bit of a retarted kid hm?
|
Truth is the new hatespeech.
|
|
|
Lauda
Legendary
Offline
Activity: 2674
Merit: 2965
Terminated.
|
|
February 10, 2014, 02:03:46 PM |
|
Good explanation. Thank you. Now I wonder, why someone doesn't open a bank called 'The Bitcoin Bank' and operate it in a country like Germany, Finland or the other few that actually regulated bitcoin in a positive way?
|
"The Times 03/Jan/2009 Chancellor on brink of second bailout for banks" 😼 Bitcoin Core ( onion)
|
|
|
georgeb657
Newbie
Offline
Activity: 9
Merit: 0
|
|
February 10, 2014, 02:04:36 PM |
|
Great post. You should post this on reddit and some generous users may tip you a beer
|
|
|
|
|
rammy2k2
Legendary
Offline
Activity: 1974
Merit: 1003
|
|
February 10, 2014, 02:20:10 PM |
|
nice !
|
|
|
|
il--ya
Newbie
Offline
Activity: 47
Merit: 0
|
|
February 10, 2014, 02:26:43 PM |
|
However, some of the cheques issued by gox have dirt on them. Some customers cleaned the cheque first, then sent to Bitcoin Bank and got paid. The related gox bank account is then emptied.
One important point here is that this all was fine, as long as banks accepted both dirty and clean receipts, and dirty receipts issued by gox were actually more likely to reach the bank, because all receipts are sent by post, and it would take significant amount of effort for the customer to intercept those receipts and modify them. But at some point banks have changed their policy and decided not to accept dirty receipts to prevent exactly this form of of fraud - modification of receipts. There are many ways to produce dirty receipt, but only way to produce clean. So they rejected them and simply throw dirty receipts away. And that's when some customers were able to collect those rejected recepts, clean them and re-submit to make them processed (unnoticed by Gox). There is still exist a hypothetical problem of malicious banks, but it has very low impact, and will be addressed in the future bitcoin releases.
|
|
|
|
jl2012 (OP)
Legendary
Offline
Activity: 1792
Merit: 1111
|
|
February 10, 2014, 02:31:48 PM |
|
However, some of the cheques issued by gox have dirt on them. Some customers cleaned the cheque first, then sent to Bitcoin Bank and got paid. The related gox bank account is then emptied.
One important point here is that this all was fine, as long as banks accepted both dirty and clean receipts, and dirty receipts issued by gox were actually more likely go to the bank, because all receipts are actually sent by post, and it would take significant amount of effort for the customer to intercepts those receipts and modify them. But at some point banks have changed their policy and decided not to accept dirty receipts to prevent some forms of fraud. They simply throw them away. And that's when some customers were able to collect those rejected recepts, clean them and re-submit to make them processed (unnoticed by Gox). A cheque with valid signature, no matter dirty or clean, is a valid cheque. The Bitcoin Bank is a decentralized bank. Anyone with a mining rig could become part of the bank (miner). Some miners do not like dirty cheque (although they are still valid), so customers have to manually clean the cheque before they could cash it. However, this is really up to the policy of each miner.
|
Donation address: 374iXxS4BuqFHsEwwxUuH3nvJ69Y7Hqur3 (Bitcoin ONLY) LRDGENPLYrcTRssGoZrsCT1hngaH3BVkM4 (LTC) PGP: D3CC 1772 8600 5BB8 FF67 3294 C524 2A1A B393 6517
|
|
|
il--ya
Newbie
Offline
Activity: 47
Merit: 0
|
|
February 10, 2014, 02:39:57 PM |
|
A cheque with valid signature, no matter dirty or clean, is a valid cheque.
The Bitcoin Bank is a decentralized bank. Anyone with a mining rig could become part of the bank (miner). Some miners do not like dirty cheque (although they are still valid), so customers have to manually clean the cheque before they could cash it. However, this is really up to the policy of each miner.
Valid point, it's not a network rule, although it may become one at some point. Still it's a good practice accepted nowadays in most of the "banks" and post offices - not to accept dirty receipts, which exposed those MtGox vulnerabilities.
|
|
|
|
jl2012 (OP)
Legendary
Offline
Activity: 1792
Merit: 1111
|
|
February 10, 2014, 02:47:32 PM |
|
A cheque with valid signature, no matter dirty or clean, is a valid cheque.
The Bitcoin Bank is a decentralized bank. Anyone with a mining rig could become part of the bank (miner). Some miners do not like dirty cheque (although they are still valid), so customers have to manually clean the cheque before they could cash it. However, this is really up to the policy of each miner.
Valid point, it's not a network rule, although it may become one at some point. Still it's a good practice accepted nowadays in most of the "banks" and post offices - not to accept dirty receipts, which exposed those MtGox vulnerabilities. The problem is, there is indefinite ways to alter a cheque without invalidate it. We need to live with transaction malleability and actually it's no big deal
|
Donation address: 374iXxS4BuqFHsEwwxUuH3nvJ69Y7Hqur3 (Bitcoin ONLY) LRDGENPLYrcTRssGoZrsCT1hngaH3BVkM4 (LTC) PGP: D3CC 1772 8600 5BB8 FF67 3294 C524 2A1A B393 6517
|
|
|
whtchocla7e
Full Member
Offline
Activity: 392
Merit: 116
Worlds Simplest Cryptocurrency Wallet
|
|
February 10, 2014, 03:22:53 PM |
|
If you are five, you probably will not be able to explain the Bitcoin malleability issue.
The title of this thread is a huge fail.
|
▂▂▂▂▂▂▂▂▂▂▂▂▂▃▅▆█ L E A D █▆▅▃▂▂▂▂▂▂▂▂▂▂▂▂ World's Simplest and Safest Decentralized Cryptocurrency Wallet! ▬▬▬▬▬▬▬ • STORE • SEND • SPEND • SWAP • STAKE • ▬▬▬▬▬▬
|
|
|
cp1
|
|
February 10, 2014, 03:25:31 PM |
|
I don't understand what getting dirt on a check means. Can you explain it like you're an adult?
|
|
|
|
jl2012 (OP)
Legendary
Offline
Activity: 1792
Merit: 1111
|
|
February 10, 2014, 04:02:49 PM |
|
I don't understand what getting dirt on a check means. Can you explain it like you're an adult?
It is well known for years that a bitcoin transaction is malleable in many ways. One way is to pad some garbage in the signature. If this is done properly, the transaction is still valid. By malleability, however, you can't change the payer, payee, and the amount paid, so no one could steal others bitcoin in this way. Just like in the real world, spilling some coffee on a cheque won't invalidate it. The rightful payee will still get the money. In the gox case, they mistakenly padded their transaction with garbage (dirt on a cheque). Although the transaction is still valid, many miners do not like garbage in transaction and refuse to confirm gox's translations. Therefore, some users try to remove the garbage (clean the cheque), and the transaction got confirmed. So the user is happy. However, as the transaction looks different now (without garbage, different hash), gox's stupid customized wallet can't realize that the transaction is already confirmed, and falsely think that the coin is unspent.
|
Donation address: 374iXxS4BuqFHsEwwxUuH3nvJ69Y7Hqur3 (Bitcoin ONLY) LRDGENPLYrcTRssGoZrsCT1hngaH3BVkM4 (LTC) PGP: D3CC 1772 8600 5BB8 FF67 3294 C524 2A1A B393 6517
|
|
|
justusranvier
Legendary
Offline
Activity: 1400
Merit: 1013
|
|
February 10, 2014, 04:09:00 PM |
|
is a mathematically true statement. is mathematically true, and in fact is the same statement. They've got different hash values though, because hash functions care about binary representations, not mathematical equivalence.
|
|
|
|
Barek
|
|
February 10, 2014, 04:12:43 PM |
|
It is well known for years that a bitcoin transaction is malleable in many ways. One way is to pad some garbage in the signature. If this is done properly, the transaction is still valid. By malleability, however, you can't change the payer, payee, and the amount paid, so no one could steal others bitcoin in this way. Just like in the real world, spilling some coffee on a cheque won't invalidate it. The rightful payee will still get the money.
In the gox case, they mistakenly padded their transaction with garbage (dirt on a cheque). Although the transaction is still valid, many miners do not like garbage in transaction and refuse to confirm gox's translations. Therefore, some users try to remove the garbage (clean the cheque), and the transaction got confirmed. So the user is happy. However, as the transaction looks different now (without garbage, different hash), gox's stupid customized wallet can't realize that the transaction is already confirmed, and falsely think that the coin is unspent.
The big question is how long has this been going on and has someone actively exploited it?
|
|
|
|
jl2012 (OP)
Legendary
Offline
Activity: 1792
Merit: 1111
|
|
February 10, 2014, 04:18:34 PM |
|
It is well known for years that a bitcoin transaction is malleable in many ways. One way is to pad some garbage in the signature. If this is done properly, the transaction is still valid. By malleability, however, you can't change the payer, payee, and the amount paid, so no one could steal others bitcoin in this way. Just like in the real world, spilling some coffee on a cheque won't invalidate it. The rightful payee will still get the money.
In the gox case, they mistakenly padded their transaction with garbage (dirt on a cheque). Although the transaction is still valid, many miners do not like garbage in transaction and refuse to confirm gox's translations. Therefore, some users try to remove the garbage (clean the cheque), and the transaction got confirmed. So the user is happy. However, as the transaction looks different now (without garbage, different hash), gox's stupid customized wallet can't realize that the transaction is already confirmed, and falsely think that the coin is unspent.
The big question is how long has this been going on and has someone actively exploited it? This is simply gox's problem, as they shouldn't follow the transaction flow this way in the first place.
|
Donation address: 374iXxS4BuqFHsEwwxUuH3nvJ69Y7Hqur3 (Bitcoin ONLY) LRDGENPLYrcTRssGoZrsCT1hngaH3BVkM4 (LTC) PGP: D3CC 1772 8600 5BB8 FF67 3294 C524 2A1A B393 6517
|
|
|
dynodog
Member
Offline
Activity: 97
Merit: 10
|
|
February 10, 2014, 04:24:22 PM |
|
for those who own btc with gox, it seems like the issue is going to be the extent to which gox "re-issued" bitcoin deliveries to customers bc the recipients lied and said they had not received it. if there were many double deliveries, then gox may not have the bitcoin to pay remaining owners all the bitcoin to which they are entitled. a few issues/questions come to mind:
1. why the other exchanges are not having the same problem 2. would mtgox be able to figure out which customers claimed failed delivery but lied, and were then paid twice. 3. it seems like the gox omnibus acct should net out even at the end of the day. double deliveries would raise red flags (one would think) when all has been netted
|
|
|
|
|