Supongamos que estoy usando el cliente original para recibir pagos. ¿Es posible el siguiente escenario?
Mi billetera recibe una notificación de una transacción no confirmada con id 12 en la que una de las salidas es una dirección que me pertenece.
Alguien cambia la identificación de la transacción a 13 y se la transmite al minero que encuentra el siguiente bloque.
Mi billetera recibe una notificación de un bloque que contiene una transacción con id 13 en el que una de las salidas es una dirección que me pertenece.
La transacción con id 13 obtiene 6 confirmaciones, pero la transacción con 12 se atasca en mi billetera como una transacción no confirmada.
Si muestro a mis clientes sus transacciones no confirmadas, entonces el cliente verá una transacción confirmada con id 13 y una transacción no confirmada con id 12. ¿Es correcto? ¿O QT eliminará automáticamente la primera transacción?
¿Qué puedo hacer para prevenir esto?
Si espera una transacción confirmada, estará bien. El error común que cometen las personas/los grandes intercambios es cuando construyen transacciones de "retiro" a partir de transacciones de "depósito" no confirmadas. Esos invalidan rápidamente debido a las reglas de doble gasto. El cliente de Satoshi hace esto como último recurso cuando selecciona salidas no gastadas.
El código que lo trata está aquí , removeConflicts
está definido aquí .
Una transacción no confirmada no se puede gastar. Fin de la historia de verdad.
Pero en aras de la integridad, si intenta gastarlo, su transacción también permanecerá sin confirmar con la persona a la que pagó. Ninguna de estas transacciones entrará jamás en la cadena de bloques.
muro
Emre Kenci
Juan T.
removeConflicts
comprueba el grupo de memoria en busca de entradas en conflicto aquí .Emre Kenci
Juan T.