sum(VOUT) > sum(VIN) -- ¿Es este un escenario posible?

tengo una transaccion Esta transacción tomaba un valor AddrXy se lo enviaba a sí misma en una especie de "división". En la transacción hay uno VINde 98000000. Esta transacción dividió la pila y tiene dos VOUT. Ellos son ambos 49000000.5. Hay una tarifa de transacción de 1.00.

En este caso, el total VOUTes 98000001el que excede al total VINde 98000000. Sin embargo, esa diferencia se encuentra en la tarifa de transacción.

Por lo que he entendido sobre la cadena de bloques y las transacciones, la tarifa de transacción es: Fee: sum(vin) - sum(vout)por lo que resulta en una -1tarifa de transacción.

Mi problema aquí es que si estuviera creando una base de datos para rastrear esta dirección, terminaría restando 98000000de su saldo y luego sumaría los dos valores entrantes de los 49000000.5cuales terminaría colocando su saldo total después de esta transacción 98000001, lo que sería incorrecto. Ahora, podría agregar lógica para eliminar la tarifa de transacción incurrida manualmente; sin embargo, habría asumido que esta transacción no sería válida porque el total VOUTera mayor que el total VIN.

¿Sería posible esta situación? Hasta ahora, de las transacciones que he visto, la tarifa de transacción ya se ha aplicado a una de ellas VOUTy, por lo tanto, no causaría este error. Si es posible, ¿cómo puedo detectarlo y remediarlo?

Respuestas (2)

Tales transacciones no serían válidas. Si bien podría crearlos, todos los nodos los rechazarían como no válidos y tales transacciones nunca se confirmarían. Si esto fuera posible, entonces sería posible crear dinero de la nada (excepto en las transacciones de Coinbase) y eso debería ser imposible.

Ha construido su transacción incorrectamente o la está interpretando incorrectamente.

Entonces, si esto hubiera sucedido en una cadena de bloques, ¿hay algún problema en la base de código?
Significa que posiblemente haya un problema en el código de validación de un cliente determinado, no necesariamente un problema con las reglas de consenso en sí o con la moneda. Que un cliente acepte una transacción tan inválida significa que el cliente tiene un problema.
Volviendo a esto más adelante, ¡parece que esto se debe a que está relacionado con una cadena de bloques de prueba de participación!

Las reglas del protocolo bitcoin https://en.bitcoin.it/wiki/Protocol_rules#.22tx.22_messages (regla 14) evitan esto. Es un criterio de rechazo para los nodos.