Bitcoin Forum

Local => Español (Spanish) => Topic started by: Cristan on January 09, 2013, 08:07:07 PM



Title: Problema con trasacción
Post by: Cristan on January 09, 2013, 08:07:07 PM
Hola a todos, hace tiempo estuve generando bitcoin, luego de dejarlo decidí almacenar mis bitcoin para venderlos mas tarde.

Ahora que llega el momento de venderlo me ocurre lo siguiente.

El monedero ha estado aproximadamente bajando bloques una semana hasta llegar al 100% completo, después de ello , tenía en la web donde producia los bitcoin unos 10 bitcoin que decidí mandarme a mi cuenta llamemosla "X"

Después de bajar casi todos los bloques pasé a tener mis bitcoin al completo, el problema es que automáticamente los 10bticoin que me había mandado a X se han mandado a otra que se llama "Y" y mi monedero a cambiado de dirección a Y. ahora se llama Y.

Otra cosa que me ocurre, es que mandé 12Btc a otra cuenta y no se completa nunca, está con una "?" interrogación y en estado muestra 0/no confirmado.

Que está pasando? Que puedo hacer?

Aquí dejo una imagen de los detalles

http://i47.tinypic.com/10er5he.png


Inicialmente tenía mis 15 BTC, ingresé 10 desde la web a mi monedero y el mismo día abandonaron a otra cuenta???

Después mandé 12 a otra cuenta con mi permiso y no se completa nunca.
Saludos


Title: Re: Problema con trasacción
Post by: Polvos on January 09, 2013, 10:06:03 PM
A ver si puedo ayudarte, pero con la terminología que empleas no sé si puedo entenderte bien (hablas de "cuentas", "monedero" etc).

Bueno vamos a ver qué conseguimos averiguar:

Empecemos por lo importante.

Veo que recibiste varias veces con la misma dirección de tu billetera (la 1R38...) diversos pagos. Así que lo más probable es que tengas configurada esa dirección bitcoin como dirección a la que el pool te envía el pago.

También veo que, poco tiempo después de recibir las cantidades en tu dirección son transferidas íntegramente a otras dos direcciones diferentes.

¿Son tuyas las direcciones a las que se reenvía el dinero? ¿Has ordenado tú esas transacciones?


Title: Re: Problema con trasacción
Post by: Cristan on January 09, 2013, 10:36:15 PM
A ver si puedo ayudarte, pero con la terminología que empleas no sé si puedo entenderte bien (hablas de "cuentas", "monedero" etc).

Bueno vamos a ver qué conseguimos averiguar:

Empecemos por lo importante.

Veo que recibiste varias veces con la misma dirección de tu billetera (la 1R38...) diversos pagos. Así que lo más probable es que tengas configurada esa dirección bitcoin como dirección a la que el pool te envía el pago.

También veo que, poco tiempo después de recibir las cantidades en tu dirección son transferidas íntegramente a otras dos direcciones diferentes.

¿Son tuyas las direcciones a las que se reenvía el dinero? ¿Has ordenado tú esas transacciones?

Gracias por la respuesta.

Verás , la 1R38.. es mi monedero , llegué a recibir mis BTC a esa dirección pero de repente se mandaron el mismo día unas horas después a otra dirección a la 1Dit... Sin hacer yo exactamente nada, esa dirección no es mía nisiquiera.

La única operación que he realizado con mi permiso es la primera que sale la de los -12 a 1Nz... y sale una interrogación y no se completa nunca...


Saludos


Title: Re: Problema con trasacción
Post by: Polvos on January 09, 2013, 11:03:39 PM
Vale, me voy haciendo una idea de lo que pasa.

¿Alguien ha accedido a equipo? ¿Has tenido siempre la billetera cifrada? ¿Puede alguien haberte robado la contraseña de la billetera o haberte instalado un troyano en el equipo?

Porque tiene muy mala pinta. Verás

Parece que, casi inmediatamente después de recibir los bitcoins en, una de las direcciones de tu billetera concretamente en la que recibes los pagos del pool, los bitcoins han sido transferidos a otra dirección.

La transacción de 12 BTC que te aparece con el interrogante es en parte debido al robo que has sufrido, junto con que no tenías actualizada la cadena de bloques en tu equipo. Me explico.

El día 1 de enero recibes un pago del pool de 15 BTC. La cadena de bloques está actualizada y el pago aparece correctamente en tu cliente bitcoin. A los pocos minutos el hacker que dispone de todas las claves privadas de tu billetera transfiere los BTC a una dirección de su propiedad.

Al día siguiente conectas tu cliente bitcoin y el balance de BTC permanece tal y como el programa interpretó la cadena de bloques por última vez. Sin embargo todavía tiene que actualizar todos los bloques que quedan pendientes desde el día anterior.

Así que, mientras el cliente va actualizando la cadena de bloques, decides transferir 12 BTC a una dirección externa para realizar algún pago o lo que sea. Como la actualización de la cadena de bloques tarda un poco, el cliente todavía no ha descargado el bloque en el que el hacker transfirió tus bitcoins de tu dirección, y por lo tanto el programa permite que construyas una transacción de 12 BTC y la publica en la red.

Esa transacción es registrada en tu cliente como "pendiente" porque es inmediatamente rechazada por todos los nodos de la red bitcoin porque es un intento de doble gasto (double expending) ya que estos nodos sí disponen de la cadena actualizada en la que aparece la transacción previa en la que el hacker se los ha enviado a su dirección.

Por último, cuando tu cliente termina de actualizar la cadena de bloques, aparece tu balance de la billetera a 0 porque el hacker te ha vaciado la cuenta y las transacciones que has intentado realizar mientras tu cliente no estaba actualizado te aparecen como "pendientes", aunque nunca se llevarán a cabo porque esos bitcoins te los han robado y la red interpreta la transacción como un intento de doble gasto.


Mi opinión a modo de resumen:

Alguien ha accedido a tus claves privadas y te ha robado los bitcoins. Las transacciones pendientes son transacciones que el programa te permitió publicar porque todavía no tenía conocimiento de que tus BTC del balance de la billetera ya habían sido transferidos desde las direcciones comprometidas de tu propiedad hasta las del hacker. En el momento en que la cadena de bloques de tu equipo es actualizada completamente aparecen las transacciones que el hacker hizo con tus claves y las posteriores que tu hiciste se quedarán para siempre como "pendientes".


Title: Re: Problema con trasacción
Post by: Polvos on January 09, 2013, 11:07:15 PM
¿Es la contraseña de tu billetera completamente segura, larga y única? ¿Has extraído las claves privadas de tu billetera y las has introducido en algún otro cliente (por ejemplo Blockchain.info o en algún exchanger tipo MtGox)?


Title: Re: Problema con trasacción
Post by: Cristan on January 09, 2013, 11:29:38 PM
Vale, me voy haciendo una idea de lo que pasa.

¿Alguien ha accedido a equipo? ¿Has tenido siempre la billetera cifrada? ¿Puede alguien haberte robado la contraseña de la billetera o haberte instalado un troyano en el equipo?

Porque tiene muy mala pinta. Verás

Parece que, casi inmediatamente después de recibir los bitcoins en, una de las direcciones de tu billetera concretamente en la que recibes los pagos del pool, los bitcoins han sido transferidos a otra dirección.

La transacción de 12 BTC que te aparece con el interrogante es en parte debido al robo que has sufrido, junto con que no tenías actualizada la cadena de bloques en tu equipo. Me explico.

El día 1 de enero recibes un pago del pool de 15 BTC. La cadena de bloques está actualizada y el pago aparece correctamente en tu cliente bitcoin. A los pocos minutos el hacker que dispone de todas las claves privadas de tu billetera transfiere los BTC a una dirección de su propiedad.

Al día siguiente conectas tu cliente bitcoin y el balance de BTC permanece tal y como el programa interpretó la cadena de bloques por última vez. Sin embargo todavía tiene que actualizar todos los bloques que quedan pendientes desde el día anterior.

Así que, mientras el cliente va actualizando la cadena de bloques, decides transferir 12 BTC a una dirección externa para realizar algún pago o lo que sea. Como la actualización de la cadena de bloques tarda un poco, el cliente todavía no ha descargado el bloque en el que el hacker transfirió tus bitcoins de tu dirección, y por lo tanto el programa permite que construyas una transacción de 12 BTC y la publica en la red.

Esa transacción es registrada en tu cliente como "pendiente" porque es inmediatamente rechazada por todos los nodos de la red bitcoin porque es un intento de doble gasto (double expending) ya que estos nodos sí disponen de la cadena actualizada en la que aparece la transacción previa en la que el hacker se los ha enviado a su dirección.

Por último, cuando tu cliente termina de actualizar la cadena de bloques, aparece tu balance de la billetera a 0 porque el hacker te ha vaciado la cuenta y las transacciones que has intentado realizar mientras tu cliente no estaba actualizado te aparecen como "pendientes", aunque nunca se llevarán a cabo porque esos bitcoins te los han robado y la red interpreta la transacción como un intento de doble gasto.


Mi opinión a modo de resumen:

Alguien ha accedido a tus claves privadas y te ha robado los bitcoins. Las transacciones pendientes son transacciones que el programa te permitió publicar porque todavía no tenía conocimiento de que tus BTC del balance de la billetera ya habían sido transferidos desde las direcciones comprometidas de tu propiedad hasta las del hacker. En el momento en que la cadena de bloques de tu equipo es actualizada completamente aparecen las transacciones que el hacker hizo con tus claves y las posteriores que tu hiciste se quedarán para siempre como "pendientes".


Estás seguro de eso? No hay algún modo de asegurarnos de que eso ha pasado? No podemos reconstruir las cadenas para asegurarnos bien?

Que solución existe?

No tengo ningún tipo de constancia de que ningún hacker haya accedido a mi monedero...


Title: Re: Problema con trasacción
Post by: Polvos on January 09, 2013, 11:47:09 PM
Pues seguro al 100% no estoy, pero si me dices que las direcciones en las que han terminado los BTC no son tuyas... y que tú no has ordenado esas transacciones, algo grave está ocurriendo.



Title: Re: Problema con trasacción
Post by: tbcoin on January 10, 2013, 12:32:04 AM
Lo siento, pero te han robado y ademas lo han hecho hace mucho.

Tu no te has enterado porque no habías sincronizado, pero ahora, al sincronizar, el cliente te muestra la fecha de las transacciones cuando las recibio, aunque en realidad ocurrieron hace tiempo.

Si te fijas en el blockchain, veras como los primeros 15 te los robaron en marzo del año pasado:
http://blockchain.info/tx/f62ea237dd406f24a272f7ebd63d6adff49f7ba1ecb5d6d9375dd6729de6a089

Y ahora, al volver a depositar en la misma dirección, te han vuelto a robar.

En la dirección del segundo robo (1DitbjtDAyzZ2gMB46AbFPFidomqi36wZo), he encontrado una transacción desde una dirección etiquetada del usuario davilla24c (https://bitcointalk.org/index.php?action=profile;u=17057), a lo mejor puedes hablar con el.

http://blockchain.info/tx/141d06a4a8212fbe7fbefab06fd3bd1749a89c6bf11b6e16743535b131c63a1e

No vuelvas a utilizar ninguna cartera que haya tocado ese ordenador y cambia todas tus claves de servicios online desde un equipo seguro.

Sorry


Title: Re: Problema con trasacción
Post by: paraipan on January 10, 2013, 02:18:41 AM
Si no tienes idea de esas transacciones entonces significa que alguien te ha robado, igual como te dicen polvos y tbcoin.


...
En la dirección del segundo robo (1DitbjtDAyzZ2gMB46AbFPFidomqi36wZo), he encontrado una transacción desde una dirección etiquetada del usuario davilla24c (https://bitcointalk.org/index.php?action=profile;u=17057), a lo mejor puedes hablar con el.

http://blockchain.info/tx/141d06a4a8212fbe7fbefab06fd3bd1749a89c6bf11b6e16743535b131c63a1e
...

Ademas de eso en Hack Forums hay otra persona quejándose de lo mismo, hacia la misma dirección bitcoin:

http://webcache.googleusercontent.com/search?q=cache:bAW4taE-jIgJ:www.hackforums.net/showthread.php%3Ftid%3D3088011+&cd=9&hl=es&ct=clnk&gl=es&client=ubuntu


Title: Re: Problema con trasacción
Post by: tbcoin on January 10, 2013, 02:52:17 AM
Usuario davilla24c informado.


Title: Re: Problema con trasacción
Post by: majamalu on January 10, 2013, 05:56:39 AM
No tengo ningún tipo de constancia de que ningún hacker haya accedido a mi monedero...

¿Lo habías encriptado? Lamento lo ocurrido, pero estoy interesado en conocer los detalles del caso - si no te molesta compartirlos.


Title: Re: Problema con trasacción
Post by: Cristan on January 10, 2013, 12:35:42 PM
No tengo ningún tipo de constancia de que ningún hacker haya accedido a mi monedero...

¿Lo habías encriptado? Lamento lo ocurrido, pero estoy interesado en conocer los detalles del caso - si no te molesta compartirlos.

No estaban encriptados, aún estaban en la versión vieja de Bitcoin y el programa oficial no encriptaba nada.

Pero realmente me sorpende que me hayan robado esos bitcoin ya que.. el PC no ha dado ningún sintoma de ello, muy extraño... En fin no podré recuperar ni podré hacer nada verdad?


Title: Re: Problema con trasacción
Post by: Polvos on January 10, 2013, 01:41:20 PM
Lo siento. Las transacciones, en BTC, son irreversibles.

Pero no hay mal que por bien no venga, así que, viéndolo por el aspecto positivo, aprender sobre seguridad en el mundo BTC te ha costado sólamente 25 BTC.

Puede que para ti esto no suponga ningún consuelo, pero imagina lo que hubiera podido pasar si el hacker hubiera esperado a que llenases mucho más tu billetera antes de vaciártela.

Lo más recomendable es que guardes una billetera encriptada offline (impresa en papel, en forma de brainwallet o guardada en varios pincho USB) y metas allí todos los BTC que no vayas a usar inmediatamente. Es lo que los guiris llaman "cold storage", de manera que ningún hacker pueda acceder a tus ahorros.

En tu cliente conectado a internet guarda una cantidad simbólica que te alerte cuando algún hacker te robe de que tu equipo está comprometido.


Title: Re: Problema con trasacción
Post by: majamalu on January 10, 2013, 04:40:52 PM

Lo más recomendable es que guardes una billetera encriptada offline (impresa en papel, en forma de brainwallet o guardada en varios pincho USB) y metas allí todos los BTC que no vayas a usar inmediatamente. Es lo que los guiris llaman "cold storage", de manera que ningún hacker pueda acceder a tus ahorros.


+1

Ánimo Cristan! Te dejo un link que puede servirte: http://elbitcoin.org/como-crear-una-caja-fuerte-de-bitcoins-en-solo-4-pasos/


Title: Re: Problema con trasacción
Post by: tbcoin on January 10, 2013, 05:09:50 PM
En cualquier caso, creo que las probabilidades de que te infectaras de forma fortuita con un virus ladrón son muy bajas, lo mas probable es que en algún momento, seguramente el 12 de marzo del año pasado o poco antes ( a lo mejor puedes mirar tus historiales), descargaste algún software vinculado con bitcoin ( espero que no cayeras en alguno de esos generadores mágicos ) y resulto ser malicioso, por ello, aparte de la medidas minimas de seguridad ( cifrado ), no es recomendable mantener la cartera en un equipo para la navegación diaria. No hace falta tener varios ordenadores, las maquinas virtuales son perfectas para aislar entornos.

Suerte :)


Title: Re: Problema con trasacción
Post by: Cristan on January 10, 2013, 10:26:25 PM
En cualquier caso, creo que las probabilidades de que te infectaras de forma fortuita con un virus ladrón son muy bajas, lo mas probable es que en algún momento, seguramente el 12 de marzo del año pasado o poco antes ( a lo mejor puedes mirar tus historiales), descargaste algún software vinculado con bitcoin ( espero que no cayeras en alguno de esos generadores mágicos ) y resulto ser malicioso, por ello, aparte de la medidas minimas de seguridad ( cifrado ), no es recomendable mantener la cartera en un equipo para la navegación diaria. No hace falta tener varios ordenadores, las maquinas virtuales son perfectas para aislar entornos.

Suerte :)

Es que es muy extraño ya que en Marzo del año pasado yo no tenia ya el equipo fabricando Btc..., lo abandoné en Noviembre aproximadamente del año anterior y los datos los guardé en un HDD externo y no los volvía a tocar hasta hace unos días para realizar una venta...


Que raro no?


Title: Re: Problema con trasacción
Post by: tbcoin on January 11, 2013, 05:35:04 AM
En cualquier caso, creo que las probabilidades de que te infectaras de forma fortuita con un virus ladrón son muy bajas, lo mas probable es que en algún momento, seguramente el 12 de marzo del año pasado o poco antes ( a lo mejor puedes mirar tus historiales), descargaste algún software vinculado con bitcoin ( espero que no cayeras en alguno de esos generadores mágicos ) y resulto ser malicioso, por ello, aparte de la medidas minimas de seguridad ( cifrado ), no es recomendable mantener la cartera en un equipo para la navegación diaria. No hace falta tener varios ordenadores, las maquinas virtuales son perfectas para aislar entornos.

Suerte :)

Es que es muy extraño ya que en Marzo del año pasado yo no tenia ya el equipo fabricando Btc..., lo abandoné en Noviembre aproximadamente del año anterior y los datos los guardé en un HDD externo y no los volvía a tocar hasta hace unos días para realizar una venta...


Que raro no?

Una vez infectado, supongo que bastaria con que conectaras el disco externo para se pusiera a buscar una cartera en el o puede que quede alguna antigua copia de tu cartera en tu equipo.


Title: Re: Problema con trasacción
Post by: Tacticat on January 11, 2013, 11:01:39 AM
Pregunta de novato: ¿Qué ocurriría si él enviara ahora 12+ BTC a su cartera? ¿Se gastarían inmediatamente en la transacción anterior?
¿Habría alguna manera de cancelar la transacción anterior?


Title: Re: Problema con trasacción
Post by: Nueve on January 11, 2013, 12:21:42 PM
Tienes que tener en cuenta que el ladrón pudo hacerse con una copia de tu cartera, en el 2011, durante los primeros días en que comenzaste a minar. En aquella época todo esto era aún muy nuevo y posiblemente mucha gente no le dio la importancia a la seguridad que requería esto. A finales de ese año el precio del bitcoin era bastante inferior y el montante de dichas cantidades no resultaba tan importante. Pero el ladrón, con una copia de la cartera (seguramente en posesión de más carteras de otros usuarios de la misma época) aguardó agazapado con ésta sincronizada esperando que recibiera fondos, en cuanto este hecho se produjo y se dio cuenta de ello, rápidamente transfirió los fondos a otra dirección que solamente él controlaba. Ésta operación la repetirá tantas veces como ocasiones en la que la cartera reciba fondos.

De modo que, aunque el primer robo de fondos se produjo en marzo de 2012, el acceso a las claves privadas de tu cartera pudo darse en el 2011, durante los primeros días en los que comenzaste a minar, puesto que para ello tuviste que crear tu dirección de pago de bitcoins para el pool de minería. En aquel momento puede que tuvieras instalado, incluso, otro sistema operativo en tu equipo y aún no le hubieras dado la importancia que requería la seguridad en bitcoin, posiblemente porque en aquellos momentos pareciera simplemente una especie de experimento informático. Desgraciadamente para ti, bitcoin siguió cobrando fuerza y año y medio más tarde aquellas monedas adquirieron un valor bastante superior al que la mayoría de los usuarios ocasionales de aquel momento estimaron.


Title: Re: Problema con trasacción
Post by: majamalu on January 11, 2013, 01:23:31 PM
Esto:

Tienes que tener en cuenta que el ladrón pudo hacerse con una copia de tu cartera, en el 2011, durante los primeros días en que comenzaste a minar.

Las copias de wallet.dat no encriptadas deberían ser tratadas como material radioactivo.


Title: Re: Problema con trasacción
Post by: Cristan on January 12, 2013, 02:43:10 AM
Gracias a todos por las respuestas, solo me queda aprender del error  :'(


Title: Re: Problema con trasacción
Post by: majamalu on January 12, 2013, 12:10:18 PM
Gracias a todos por las respuestas, solo me queda aprender del error  :'(

Quizás esto te sirva de consuelo: el mismo error le costó - en Junio de 2011 - 25.000 (sí: veinticinco mil) bitcoins a un único usuario. https://bitcointalk.org/index.php?topic=16457.0


Title: Re: Problema con trasacción
Post by: Polvos on January 13, 2013, 12:01:09 AM
Pregunta de novato: ¿Qué ocurriría si él enviara ahora 12+ BTC a su cartera? ¿Se gastarían inmediatamente en la transacción anterior?
¿Habría alguna manera de cancelar la transacción anterior?

Estas son unas preguntas muy interesantes Tacticat.

Para la primera pregunta te respondo ya: si enviase 12 BTC a su wallet se los robarían inmediatamente. Si previamente cifrase la billetera y posteriormente enviase los BTC de nuevo, se los volverían a robar porque las claves privadas han sido previamente comprometidas. La solución es limpiar el ordenador de virus, borrar la billetera y así el programa generaría otra billetera nueva que inmediatamente deberíamos encriptar.

Para la tercera pregunta: no hay forma de cancelar una operación publicada en la red bitcoin. En este caso la operación no es incluida por los mineros en ningún bloque porque se trata de un intento de doble gasto. Pero podría ocurrir que, aun siendo una operación válida, se quedase mucho tiempo en espera porque no tuviese suficientes comisiones para resultar interesante para la mayoría de mineros.

La solución a ese problema sería esperar pacientemente a que algún minero al que no le importe tramitar transacciones con pocas o ninguna comisiones incorporadas la incluyera en su bloque recién minado. Otra opción sería reenviar la misma transacción pero modificada para que albergase una comisión mayor.

El cliente bitcoin-qt está diseñado para, si en un período de tiempo prudente alguna de las transacciones que ha enviado no han sido incorporadas a algún bloque, volver a reenviarlas hasta que sean añadidas por algún minero. En el ejemplo del autor del hilo, su cliente seguiría reenviando la operación hasta que la actualización de su propia cadena de bloques avisase al cliente-qt de que la operación no puede realizarse porque ya no existen en la billetera los bitcoins que el usuario intenta enviar. Y entonces las publicaciones en la red de esa transferencia parte de su cliente-qt cesarían y los nodos dejarían de recibir esas peticiones de transacción que automáticamente descartaban y se negaban a reenviar porque las detectaban como fraudulentas.


Title: Re: Problema con trasacción
Post by: Polvos on January 13, 2013, 12:24:21 AM
Y ahora te respondo la pregunta más complicada de las tres que has formulado. ¿Qué pasaría si el usuario recibe un pago en su billetera mayor de 12 BTC?¿Se gastarían inmediatamente en la operación anterior?

NO SE GASTARÍAN.

Es más, ni siquiera se gastarían en la operación anterior aunque los nuevos BTC fueran recibidos por la misma dirección desde la que se ha ordenado el pago en la operación anterior.

¿Por qué? Pues porque Bitcoin no funciona como una cuenta bancaria tal y como todos tenemos en mente. El protocolo Bitcoin no funciona tal y como el interface del cliente-qt nos hace entender. No tenemos una "cuenta" con la que hacer un balance contable y decir "las gallinas que entran por las que salen". De hecho ese balance contable no puede hacerse ni siquiera dentro de una misma dirección bitcoin.

Para poder entender lo que digo debemos, ante todo, comprender cómo es una transacción bitcoin según el protocolo.

Una transacción bitcoin es esto:

Code:
Input:
Previous tx: f5d8ee39a430901c91a5917b9f2dc19d6d1a0e9cea205b009ca73dd04470b9a6
Index: 0
scriptSig: 304502206e21798a42fae0e854281abd38bacd1aeed3ee3738d9e1446618c4571d10
90db022100e2ac980643b0b82c0e88ffdfec6b64e3e6ba35e7ba5fdd7d5d6cc8d25c6b241501

Output:
Value: 5000000000
scriptPubKey: OP_DUP OP_HASH160 404371705fa9bd789a2fcd52d2c580b65d35549d
OP_EQUALVERIFY OP_CHECKSIG

Por lo tanto, cualquier pago que hacemos con bitcoin, esto es, cualquier transacción. Consta de dos partes muy diferentes. Un input y un output.

El input de la transacción consta, por así decirlo, de la referencia a una transacción anterior (previous tx) y de la demostración fuera de toda dudas de que estás autorizado a transmitir esos bitcoins a otras direcciones bitcoins (scriptsig).

Por lo tanto, entender lo que significan los inputs no es muy difícil. Hace falta una referencia a una transacción previa porque, al igual que en la economía doméstica, uno sólamente está autorizado legalmente a gastar un dinero que previamente le ha llegado. Demuestras que los bitcoins han llegado a tu dirección bitcoin poniendo en la variable previous_tx el identificador de la transacción con la que te los hicieron llegar y con scriptsig firmas con la clave privada de la dirección bitcoin para demostrar que eres el legítimo propietario de ellos. Así que con los inputs estamos anunciando qué bitcoins vamos a transferir y demostramos que somos los propietarios legítimos de las direcciones bitcoin desde las que van a salir.

Los output dicen la cantidad de bitcoins, medidos en satoshis, que van a ser transferidos (value) y las direcciones bitcoin en base 58 a la que van destinados (scriptpuvkey).

En realidad es un poco más complicado (no me meteré a explicar los tipos de transacciones que se pueden obtener según los scriptsig/scriptpuvsig que podemos obtener). Pero a grandes rasgos esa es una transacción Bitcoin.

Hay que tener en cuenta algunas cosas más:

- Podemos incorporar múltiples inputs y outputs a una misma transacción
- El valor de los bitcoins de los inputs debe ser igual o mayor que el de la suma de los outputs. Todos los bitcoins que superen el valor de los outputs pasarán a ser comisiones de la transacción.

¿Qué quiero decir con todo este rollo sobre cómo funciona el protocolo Bitcoin?

Pues que, aunque recibas más bitcoins en la dirección de tu billetera desde la que enviaste una transacción que ha quedado "en el limbo", no serán gastados automáticamente.

Y esto es así porque, aunque los nuevos bitcoins recibidos han llegado a la misma dirección bitcoin de tu billetera, tienen una "previous_tx" diferente a la de los bitcoin que pululan en la transacción que ha quedado pendiente en el limbo.

Para terminar, intentaré explicarlo con el símil de la cuenta corriente bancaria. Y seguro que me hago entender mejor:

Un pago con el protcolo bitcoin desde una cuenta bancaria sería muy diferente a lo que estamos acostumbrados. Sería algo así para el pago del seguro del coche.

Code:
Input:
Previous tx:
Codigo Swift de la transferencia en la que mi empresa ha realizado el pago de nóminas a sus trabajadores.
Index:
Número ordinal en la que aparece el pago a mi cuenta como trabajador en la transferencia especificada en previous_tx.
scriptSig:
Mi firma del certificado digital que demuestra que soy el legítimo propietario de la cuenta que ha recibido el abono de la nómina.

Output:
Value: 467.000000 (euros, pero recuerda que en bitcoin son satoshis)
scriptPubKey: código de cuenta de la compañía de seguros


Si mi madre decidiese ingresar en mi cuenta algo de dinero por mi cumpleaños, sería imposible que ese dinero fuese gastado inmediatamente ya que el previous_tx sería diferente que el del ingreso de la nómina.

Bueno, lo mejor será ir poco a poco con las dudas porque esto es muy complicado de explicar. Digamos que, con bitcoin, no enviamos dinero "de una cuenta a otra" sino que, cogemos outputs de las direcciones bitcoin de nuestra billetera, los colocamos en una transacción como inputs, los firmamos y los enviamos a las direcciones destinatarias como nuevos outputs. Seguramente me he explicado como un libro cerrado. :(

P.D. He cometido un error en la transferencia bancaria mode bitcoin que acabo de escribir, a ver si alguien es capaz de darse cuenta (un error que me saldría bastante caro, por cierto)


Title: Re: Problema con trasacción
Post by: majamalu on January 13, 2013, 03:53:00 AM
Gracias por tomarte el trabajo, Polvos. Lo tuyo es la docencia  :)


Title: Re: Problema con trasacción
Post by: Polvos on January 13, 2013, 10:30:38 AM
Gracias majamalu. ¿Sabés dónde está el carísimo error que estaría cometiendo en la transacción bancaria que he puesto en modo bitcoin?

Pista: es un error crítico y muy común ahora que se ha puesto de moda el realizar transacciones manualmente fuera del cliente-qt (raw transactions)   ;D


Title: Re: Problema con trasacción
Post by: Polvos on January 13, 2013, 11:03:29 AM
Bueno, pues voy a poner ya en qué consiste el error de la transacción:

Antes os he comentado que la suma de los bitcoins de los inputs debe ser igual o superior a la de los outputs. Todos los bitcoins que superen la cantidad de los outputs pasarán a ser comisiones de transacción. En el ejemplo sólamente hay un output (los 467 euros que son transferidos hasta la cuenta corriente de la compañía de seguros).

Así que, si la transacción que utilizo como input (el ingreso de mi nómina en este caso) es superior a los 467 euros que voy a transferir a la compañía de seguros, la cantidad restante va a parar al minero que la incorpore a un bloque en forma de comisión de transacción.

Es por esto por lo que algunos usuarios están pagando muy caros los jueguecitos con las raw transactions. Algunos han llegado a pagar más de 100 BTC en forma de comisión de transacción.

La forma de evitar que esto suceda es poner siempre como mínimo dos outputs. Uno con el pago que deseamos realizar (la compañía aseguradora del vehículo en el ejemplo) y otro output con el "cambio" para que los bitcoins restantes vuelvan a alguna dirección de mi posesión (mi cuenta corriente en este caso).

En el caso del ejemplo y suponiendo que el abono de mi nómina fuese de 1800€, debería incorporar un segundo output con la dirección donde quiero que lleguen los 1800-467=1323 € de cambio. Sería así:

Code:
Input:
Previous tx:
Codigo Swift de la transferencia en la que mi empresa ha realizado el pago de nóminas a sus trabajadores.
Index:
Número ordinal en la que aparece el pago a mi cuenta como trabajador en la transferencia especificada en previous_tx.
scriptSig:
Mi firma del certificado digital que demuestra que soy el legítimo propietario de la cuenta que ha recibido el abono de la nómina.

Output:
Value: 467.000000 (euros, pero recuerda que en bitcoin son satoshis)
scriptPubKey: código de cuenta de la compañía de seguros

Value: 1323.000000
scriptPubKey: código de mi cuenta corriente



Dirigir el cambio a otra dirección bitcoin de nuestra propiedad lo hace automáticamente el cliente-qt. Pero hay que tener cuidado si intentamos hacer una "raw transaction" nosotros a mano para no cometer el error de pagar el cambio como comisiones de transacción.

Y aunque penséis que "nadie va a hacer una transacción fuera de los clientes habituales" os equivocáis. Es algo que va a empezar a extenderse y a generalizarse por seguridad. Esa transacción puede ser elaborada en un equipo comprometido que no disponga de las claves privadas. Después ser llevada a otro equipo con las claves privadas y aislado de internet donde será firmada, llevada de nuevo una vez firmada al equipo comprometido y transmitida a toda la red bitcoin para su validación.

De esta forma las claves privadas siempre están a salvo en un equipo aislado de internet y que símplemente se limita a firmar las transacciones previamente construidas a mano y que le llevamos con un pincho USB o con un código qr


Title: Re: Problema con trasacción
Post by: tbcoin on January 13, 2013, 11:28:58 AM
Muy buena la aclaración  :)

Como bien dices, estos errores han alegrado a los mineros mas de una vez  :D. La verdad es que me sorprendió el desenlace del esta situación en un hilo reciente ( al que  creo que haces referencia ), ya que pudo contactar con el admin del pool que resolvió el bloque( con su mas que generosa comisión) y recupero casi el 92% del importe.

Mi reacción hubiera sido mas parecida a esta:

http://25.media.tumblr.com/tumblr_lskru2nJ0u1qd7bw2o1_500.gif


Title: Re: Problema con trasacción
Post by: fernarios on January 13, 2013, 01:18:42 PM
pudo contactar con el admin del pool que resolvió el bloque( con su mas que generosa comisión) y recupero casi el 92% del importe.
Wow genial :D... bien por el admin del pool.

Gracias por la explicación polvos, ha sido muy interesante.


Title: Re: Problema con trasacción
Post by: nikkus on January 13, 2013, 06:38:46 PM
Mi reacción hubiera sido mas parecida a esta:

http://25.media.tumblr.com/tumblr_lskru2nJ0u1qd7bw2o1_500.gif

Y la mia! Y solo pararía cdo la chiquilla esa tbm pare! :P


Title: Re: Problema con trasacción
Post by: LuisCar on January 13, 2013, 07:56:34 PM
Excelente explicación sobre el diseño del protocolo bitcoin, Polvos. Gracias por ella.


Title: Re: Problema con trasacción
Post by: nikkus on January 13, 2013, 08:13:47 PM
Excelente explicación sobre el diseño del protocolo bitcoin, Polvos. Gracias por ella.

Po zi! GRACIAS POLVOS!!!

Sobre seguridad:

Creo que el mas relevante es, si tienes previsto que vas a recibir bitcoins con cierta frecuencia, igual no estaria demas tomar ciertas precauciones.

1) Podrías crear una bitcoin address, copiar la dirección publica(q es la que necesitas para recibir los bitcoins), y tener el monedero bien cifrado, ademas de eso, hacer un backup del wallet.dat(o de la clave privada) y mantenerlo a MUY buen recaudo, una vez echo eso, DESINTALE la billetera de tu PC, y controla lo que recibes por el blockexplorer.com. Y solamente cuando necesites utilizar ese dinero de alguna manera, vuelves a restaurar el backup que ya se hizo con anterioridad.

2) Mantenga su S.O.(Sistema Operativo) seguro. Soy un linuxero, pero no hace falta ser linuxero para tener su sistema limpio, para mantener un minimo de seguridad en tu sistema, mantenlo actualizado, garantiza que quien lo esté utilizando a parte de ti(ej.: Tu mujer, hijos o quien sea) NO TENGA permisos de administración, vamos que no pueda ni instalar nada sin TU permiso. Manten tu SO y su respectivo antivirus(anti: Malware, rootkit y etc) al día.

3) A pesar de todo eso:

- NO cliques en emails sospechosos: Un amigo tuyo que mal sabe el propio Español te envia un email en perfecto inglés! Entonces NO CLIQUES! Un amigo tuyo que no sabe mas que hablar de futbol, de repente te envia un email hablando maravillas sobre "no-se-que" sistema piramidal! NO CLIQUES! y un LARGOOOOO etc... Si utilizamos un pelin que sea del sentido común, nos libramos de muchas cosas.

Y por ultimo, si has recibido suficientes BTC en la dirección destinada para ello, y quieres utilizarlo, pero crees q tu SO esta comprometido. NO ABRAS EXCEPCIONES! Buscate un ordenador que NO este infectado y desde él accede a tu billetera...

Recuerda eso:
Si sospechas de tu SO! Deja de suponer y busca otra opción! En la duda, que no te quede en duda! ;)

P.D.: Eso es solo para complementar lo que ya han dicho y muy bien dicho los compañeros anteriormente!


Title: Re: Problema con trasacción
Post by: Polvos on January 13, 2013, 09:00:09 PM
Ahí le has dado, nikkus


Title: Re: Problema con trasacción
Post by: nikkus on January 13, 2013, 09:08:57 PM
Ahí le has dado, nikkus
Gracias campeón!  ;D


Title: Re: Problema con trasacción
Post by: Jazb on January 14, 2013, 08:41:41 PM
Muy buenas información polvos me sirvió para indagar y entender muchas cosas sobre las transacciones en modo raw que casualidad que estaba leyendo el hilo  ;D


Title: Re: Problema con trasacción
Post by: Tacticat on January 15, 2013, 12:23:24 PM
Disculpad la respuesta tardía.
¡Muchas gracias polvos!

Me ha servido muchísimo la explicación y te agradezco muchísimo que te hayas tomado el tiempo para explicarlo.

Entonces he de entender que la transacción de OP quedará en algún momento cancelada, pues no dispone ya de los fondos provenientes de las Tx anteriores ya que estos se han gastado en el robo que ha sufrido. ¿Cierto?


Title: Re: Problema con trasacción
Post by: Polvos on January 15, 2013, 04:53:19 PM
En realidad, no la cancela nadie (recordad que Bitcoin es descentralizado y gracias a eso nadie puede cancelar, censurar o inhibir a nadie). Digamos que su transacción no es distribuída por la red porque los primeros nodos a los que llega, si tienen la cadena de bloques actualizada, la detectan como fraudulenta y rechazan reenviarla. La detectan como fraudulenta porque el hacker ya los transfirió a su cuenta tiempo atrás. Su cliente_qt intentará volver a reenviarla hasta que la actualización de su cadena de bloques le "ponga al día" con la infeliz noticia de que sus 12 bitcoins ya no están en la dirección que él creía. Es más que nada un problema de sincronización. Si el usuario hubiese esperado a tener actualizada completamente la cadena de bloques en su equipo, el cliente no le hubiera permitido lanzar esa transacción.