Bitcoin Forum
April 23, 2024, 11:28:41 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 [2]  All
  Print  
Author Topic: Problema con trasacción  (Read 3738 times)
Cristan (OP)
Newbie
*
Offline Offline

Activity: 12
Merit: 0


View Profile
January 12, 2013, 02:43:10 AM
 #21

Gracias a todos por las respuestas, solo me queda aprender del error  Cry
1713871721
Hero Member
*
Offline Offline

Posts: 1713871721

View Profile Personal Message (Offline)

Ignore
1713871721
Reply with quote  #2

1713871721
Report to moderator
1713871721
Hero Member
*
Offline Offline

Posts: 1713871721

View Profile Personal Message (Offline)

Ignore
1713871721
Reply with quote  #2

1713871721
Report to moderator
1713871721
Hero Member
*
Offline Offline

Posts: 1713871721

View Profile Personal Message (Offline)

Ignore
1713871721
Reply with quote  #2

1713871721
Report to moderator
Bitcoin addresses contain a checksum, so it is very unlikely that mistyping an address will cause you to lose money.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1713871721
Hero Member
*
Offline Offline

Posts: 1713871721

View Profile Personal Message (Offline)

Ignore
1713871721
Reply with quote  #2

1713871721
Report to moderator
1713871721
Hero Member
*
Offline Offline

Posts: 1713871721

View Profile Personal Message (Offline)

Ignore
1713871721
Reply with quote  #2

1713871721
Report to moderator
majamalu
Legendary
*
Offline Offline

Activity: 1652
Merit: 1000



View Profile WWW
January 12, 2013, 12:10:18 PM
 #22

Gracias a todos por las respuestas, solo me queda aprender del error  Cry

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

http://elbitcoin.org - Bitcoin en español
http://mercadobitcoin.com - MercadoBitcoin
Polvos
Hero Member
*****
Offline Offline

Activity: 597
Merit: 500



View Profile
January 13, 2013, 12:01:09 AM
Last edit: January 13, 2013, 10:32:54 AM by Polvos
 #23

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.

Polvos
Hero Member
*****
Offline Offline

Activity: 597
Merit: 500



View Profile
January 13, 2013, 12:24:21 AM
Last edit: January 13, 2013, 01:35:28 AM by Polvos
 #24

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. Sad

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)

majamalu
Legendary
*
Offline Offline

Activity: 1652
Merit: 1000



View Profile WWW
January 13, 2013, 03:53:00 AM
 #25

Gracias por tomarte el trabajo, Polvos. Lo tuyo es la docencia  Smiley

http://elbitcoin.org - Bitcoin en español
http://mercadobitcoin.com - MercadoBitcoin
Polvos
Hero Member
*****
Offline Offline

Activity: 597
Merit: 500



View Profile
January 13, 2013, 10:30:38 AM
 #26

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)   Grin

Polvos
Hero Member
*****
Offline Offline

Activity: 597
Merit: 500



View Profile
January 13, 2013, 11:03:29 AM
 #27

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

tbcoin
Legendary
*
Offline Offline

Activity: 1022
Merit: 1000



View Profile WWW
January 13, 2013, 11:28:58 AM
 #28

Muy buena la aclaración  Smiley

Como bien dices, estos errores han alegrado a los mineros mas de una vez  Cheesy. 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:


Sorry for my bad english Wink
Bitcoin card for deposit and payment + Little POS
Donations:1N65efiNUhH6sEQg7Z6oUC76kJS9Yhevyf
fernarios
Hero Member
*****
Offline Offline

Activity: 616
Merit: 501



View Profile
January 13, 2013, 01:18:42 PM
 #29

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 Cheesy... bien por el admin del pool.

Gracias por la explicación polvos, ha sido muy interesante.
nikkus
Legendary
*
Offline Offline

Activity: 1522
Merit: 1005


View Profile
January 13, 2013, 06:38:46 PM
 #30

Mi reacción hubiera sido mas parecida a esta:



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

1NikkusCFVtadafW15HZw3up9xo23fi5UD
LuisCar
Legendary
*
Offline Offline

Activity: 1820
Merit: 1017



View Profile
January 13, 2013, 07:56:34 PM
 #31

Excelente explicación sobre el diseño del protocolo bitcoin, Polvos. Gracias por ella.

nikkus
Legendary
*
Offline Offline

Activity: 1522
Merit: 1005


View Profile
January 13, 2013, 08:13:47 PM
 #32

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! Wink

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

1NikkusCFVtadafW15HZw3up9xo23fi5UD
Polvos
Hero Member
*****
Offline Offline

Activity: 597
Merit: 500



View Profile
January 13, 2013, 09:00:09 PM
 #33

Ahí le has dado, nikkus

nikkus
Legendary
*
Offline Offline

Activity: 1522
Merit: 1005


View Profile
January 13, 2013, 09:08:57 PM
 #34

Ahí le has dado, nikkus
Gracias campeón!  Grin

1NikkusCFVtadafW15HZw3up9xo23fi5UD
Jazb
Newbie
*
Offline Offline

Activity: 17
Merit: 0



View Profile
January 14, 2013, 08:41:41 PM
 #35

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  Grin
Tacticat
Full Member
***
Offline Offline

Activity: 210
Merit: 100



View Profile
January 15, 2013, 12:23:24 PM
 #36

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?

Tips and donations:

15nqQGfkgoxrBnsshD6vCuMWuz71MK51Ug
Polvos
Hero Member
*****
Offline Offline

Activity: 597
Merit: 500



View Profile
January 15, 2013, 04:53:19 PM
Last edit: January 15, 2013, 05:05:04 PM by Polvos
 #37

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.

Pages: « 1 [2]  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!