Hago la pregunta aca ya que se ha empezado el tema en este hilo.
Alguien podría explicar en forma sencilla, a los que no tenemos un conocimiento tan profundo del mecanismo interno en las transferencias de bitcoin que es esto del doble gasto?
Desde lo de mtgox se ha transformado casi en una pandemia que ha tirado el precio bastante abajo.
Basicamente mis dudas son:
¿Cualquier transferencia desde cualquier wallet puede sufrir el problema este del "doble gasto"? ¿O está sucediendo sólo en los monederos de mtgox? Lo pregunto porque yo he transferido muchas de veces y nunca me ha pasado, o al menos no me he dado cuenta y mis transferencias han llegado siempre en tiempo y forma. El tema es saber si afecta sólo a exchanges que han hecho algo mal o es un problema implícito en el sistema Bitcoin.
Yendo al problema en si: si me pasa esto con un pago, es un "inconveniente" temporal de unas horas/días que se termina resolviendo solo, o finalmente se terminan perdiendo los bitcoins transferidos, dado que una transferencia de bitcoins no se puede revertir.
A la hora de hacer un pago, ¿Hay alguna cosa que podamos hacer para tener menos posibilidades de caer en este tipo de problema del doble gasto? ¿algún recaudo que podamos tomar o algun "vicio" que debamos evitar?
Desde ya, muchas gracias.
Creo que es importante entender el tema del mal llamado "doble gasto". En realidad es un ataque que aprovecha la posibilidad de crear dos transacciones iguales, con la misma firma, pero con distinto hash (Transaction Malleability). NUNCA SE LLEGA A CONFIRMAR UN DOBLE GASTO. Ojo con eso. Ese ataque se hace sobre un exchange, no sobre el blockchain y consiste en lo siguiente:
El atacante debe tener bitcoins en MtGox y enviar sus bitcoins desde MtGox a otra dirección suya.
Después debe mirar esa transacción en la red, copiar los datos y crear una nueva transacción idéntica, pero cambiando un dato irrelevante, de los que no van firmados, para que el hash resultante (el ID de la transacción) sea ahora distinto.
Ambas transacciones estan correctamente firmadas, es más, tienen la misma firma y por tanto ambas se considerarán válidas, pero evidentemente al final sólo una de ellas se confirmará y la otra será desechada por considerarse un doble gasto de la anterior.
El atacante logrará su objetivo si al final tiene suerte y se confirma la transacción creada por él. En ese caso llamará a MtGox para decirles que la transacción no se ha confirmado, MtGox buscará la transacción por su ID y efectivamente comprobará que no se ha confirmado, por lo que repondrá el saldo del atacante.
Si además de su ID MtGox hubiese comprobado otros datos de la transacción, por ejemplo los inputs de la dirección a la que iban destinados los bitcoins, podría ver que la transacción se confirmó, aunque con otro ID.
El problema es que MtGox sólo comprobaba la transacción por su ID, ese es el error que cometían. Supongo que también contribuye el hecho de que MtGox es un mercado continuo 24/7 en el que no hay cierres que permitan verificar saldos con facilidad.
Por último le diré a todos los que echan pestes de MtGox, que se preparen, porque como estas habrá muchas más. Por lo menos MtGox ha demostrado varias veces estar a la altura. Yo confío en ellos y estoy seguro de que responderán bien y saldrán reforzados. Nadie está exento de meter la pata, así que sólo les podemos valorar por cómo responden una vez que les ha pasado. Ya veremos cómo responde MtGox.