Si reutilizo la misma dirección, ¿se puede reutilizar una transacción utilizada anteriormente?

Me preguntaba si usé una dirección adr0 para gastar algunas monedas en una transacción tx0 que entrega las monedas a una dirección diferente adr1, y eventualmente, después de un tiempo, recibo algunas monedas (completamente ajenas) a la misma dirección adr0. ¿Alguien puede tomar la transacción tx0 que firmé y publicarla para gastar las monedas nuevas con la transacción anterior? (después de todo, pertenecen a la misma dirección, y ya firmé y di una transacción que gasta monedas desde esta dirección).

Si es así, ¿cómo es que la reutilización de direcciones no está directamente prohibida? si no, ¿puedes detallar por qué?

Respuestas (2)

¿Alguien puede tomar la transacción tx0 que firmé y publicarla para gastar las monedas nuevas con la transacción anterior?

No.

En primer lugar, ya se sabe que se han utilizado las entradas de transacciones. Cualquier nodo que examine el bloque sabrá que la transacción de repetición tiene entradas no válidas.

En segundo lugar, espero (pero no lo he comprobado) que las entradas de la firma incluyan ambas direcciones. Esto evita que la firma sea mal utilizada en la forma que sugieres. (Vea la aclaración de Murch en el comentario a continuación)

Puede ayudar (si no a usted, a algunos otros lectores) recordar que los bitcoins no existen fuera o dentro de la cadena de bloques. Lo único que existe son entradas y salidas de transacciones. No puede usar una transacción firmada con las entradas A, B y C para usar las entradas D y E. La firma le impide alterar los contenidos firmados sin invalidar la firma.

¿Cómo es que la reutilización de direcciones no está directamente prohibida? si no, ¿puedes detallar por qué?

Las direcciones se pueden reutilizar. El problema más obvio es el de la privacidad. Si le das a alguien una dirección para que pueda comprarte $0.01 en estacas, entonces puede ver en la cadena de bloques que también recibiste $300,000,000 recientemente en esa dirección y comprar un gran martillo y venir a visitarte a las 3 a.m.

Pequeña nota: la privacidad no es la única preocupación, aunque quizás sea la más pertinente. Tener varias firmas de la misma clave privada podría potencialmente debilitar las suposiciones de seguridad de la criptografía de clave asimétrica; aunque actualmente no se conocen ataques, no es imposible que se descubra uno en el futuro. Esta es una pequeña preocupación que podría solucionarse si fuera necesario, pero vale la pena mencionarla.
Tenga en cuenta que hay un pequeño caso extremo, donde si una transacción se firma con SIGHASH_SINGLE, pero el vin dado está fuera de los límites de la transacción, ¡esa firma es válida para cualquier salida de transacción a esa dirección, pasada, presente o futura!
Puede ser útil aclarar que el utxo se identifica de forma única a través del punto de salida. Estrictamente hablando, la firma no se compromete con la dirección de entrada, sino que solo cumple con el script de salida correspondiente al que se bloquearon los fondos. En el caso de P2PKH, esto pasa a hacer referencia a la dirección para identificar al gastador previsto. ;)

Para ello deberías echar un vistazo a un sistema llamado "salidas de transacciones no gastadas" (utxo). Este sistema funciona de la siguiente manera:

Cada transacción consta de una o más entradas y una o más salidas. La entrada especifica de dónde provino el dinero al hacer referencia a una salida anterior. Y el resultado describe quién y/o cómo se puede gastar el dinero.

Entonces, cuando envió las monedas en tx0, gastó la salida, en la que recibió el dinero en primer lugar. Como esta salida ya se gastó, no se puede volver a referenciar. Y a raíz de eso, su tx0 utilizado anteriormente que fue firmado por usted no se puede volver a utilizar. No sería válido porque intenta gastar una salida ya gastada. Para conocer las razones por las que no debe reutilizar las direcciones, consulte esto