¿Por qué nos referimos a transacciones anteriores en cada transacción?

¿No es suficiente tener solo la dirección de entrada, la dirección de salida, el monto y la firma para cada transacción?

Respuestas (2)

No nos referimos a transacciones anteriores, sino a salidas específicas de transacciones anteriores. Cuando las transacciones transfieren dinero a un destinatario, crean una "Salida de transacción no gastada" o UTXO identificable de forma única. Las entradas de transacciones, a su vez, gastan estos "UTXO" para impulsar las transacciones. Dado que las direcciones se pueden reutilizar, las direcciones por sí solas son insuficientes para identificar con precisión los bitcoins que se gastan.

Si solo tuviera "Dirección de entrada, Dirección de salida, Monto y Firma para cada transacción". Esto se rompería trivialmente:
digamos que Alice mantiene todos sus fondos en la dirección A1y le paga a Bob 0.1 BTC de alquiler a la dirección B1. Bob le paga a Mallet para que arregle el calentador de Alice B1usando los fondos que recibió de Alice. Cuando Alice le pague a Bob el próximo mes nuevamente de una dirección A1a otra B1, Mallet puede reproducir la transacción de Bob para sí mismo para que le paguen nuevamente.

Supongo que la pregunta entonces es, ¿por qué necesita identificar con precisión los bitcoins que se gastan? ¿Por qué no es suficiente asegurarse de que una dirección no gaste más de lo que ha recibido?
@BT: Porque identificar con precisión el dinero que gastas hace que sea mucho más sencillo evitar el doble gasto.
¿Podrías explicar eso más? No veo muy bien por qué ese es el caso.
@Murch Entonces, ¿está diciendo que no es posible evitar el doble gasto sin tener como referencia los resultados de transacciones anteriores?
Es posible, por ejemplo, Ethereum con su diseño basado en cuentas no tiene UTXO. Sin embargo, entonces es necesario realizar un seguimiento del orden de las transacciones y necesita identificadores de secuencia. Si bien el diseño basado en UTXO es un poco más difícil de asimilar, es mucho más simple de implementar y más versátil para la creación de transacciones.
@Murch Re versatilidad: ¿cuál es un ejemplo de algo que puede hacer con un diseño UTXO que no puede hacer con un diseño basado en cuentas?
@BT: envíe una transacción de alta prioridad con una tarifa alta mientras una transacción de baja prioridad aún no está confirmada.

Bitcoin no rastrea los saldos de las cuentas como la contabilidad tradicional, solo mantiene un registro de dónde proviene BTC y a qué dirección se envía. Por lo tanto, su dirección de recepción técnicamente no tiene un saldo registrado, solo un saldo calculado para todas las transacciones recibidas en esa dirección. Una vez que envía Bitcoin, la salida de transacción no gastada a la que hace referencia cuando envía se gasta y el saldo calculado para esa dirección que recibió originalmente se convierte en cero.

Puede encontrar este video de ayuda:
Cómo funciona Bitcoin bajo el capó