¿La prueba de trabajo contribuye directamente a evitar el doble gasto?

Sé que se han hecho preguntas similares antes (por ejemplo, cómo la prueba de trabajo evita el doble gasto ), pero me cuesta visualizar la solución al doble gasto que depende directamente de la prueba de trabajo.

Imagina a un minero, Bob, tratando de gastar el doble de 1 BTC enviándose tanto a Alice como a Jim. Puede incluir ambas transacciones para Alice y Jim en un solo bloque defectuoso que extrae, en cuyo caso el bloque será rechazado incluso con un PoW válido. O puede transmitir su primera transacción (válida) a Alice y dejar que otra persona la extraiga y luego extraiga su propio bloque defectuoso más tarde con la transacción a Jim, que nuevamente será rechazada independientemente de tener una Prueba de trabajo válida. Entonces, ¿el doble gasto está realmente protegido en el nivel de validación de transacciones que realiza cada nodo completo en la red? Lo que significa que PoW en realidad no detiene directamente el doble gasto; lo que detiene el doble gasto es simplemente que los nodos están al tanto de las transacciones previamente confirmadas. ¿Y la razón por la que podemos confiar en que todas las transacciones en la cadena de bloques están "confirmadas" es PoW?

Si eso es correcto, y PoW es más una solución de alto nivel para todo el sistema, aquí hay una pregunta final que espero que alguien pueda aclarar: ¿por qué no podemos reemplazar PoW con una adición automática de bloques de 10 minutos basada en una marca de tiempo simple? ? ¿Es porque es una tarea tan crítica (que implica la confianza de todo el sistema) que, a diferencia del cálculo de dificultad (en el que confiamos en las marcas de tiempo), debemos encontrar una alternativa en la que no se pueda falsificar el valor del tiempo? (aunque si lo fuera, los nodos individuales presumiblemente podrían rechazarlo en tiempos falsos). ¿Es incorrecto pensar en la Prueba de trabajo como básicamente un reemplazo para confiar en un servidor de marca de tiempo (hackeable/falsificable) que podría regular los 'bloques cada 10 minutos'?

Respuestas (1)

Hay múltiples definiciones del término "doble gasto" en juego aquí. Primero, está la definición real de doble gasto: gastar el mismo dinero varias veces. Un ejemplo simple de esto es la moneda en una cuerda en una máquina expendedora. Atas una cuerda a una moneda, cuando pones la moneda en la máquina, cree que pagaste, obtienes lo que quieras de la máquina, luego usas la cuerda para sacar la moneda y poder gastarla nuevamente. en algún otro lugar.

Según esta definición, el intercambio de bienes ha ocurrido, pero el dinero utilizado para pagarlo es utilizado por el pagador para pagar otro bien más tarde. En efecto, creó múltiples transacciones que entraron en conflicto entre sí y todas se consideran liquidadas (es decir, definitivas e irreversibles) en el sistema contable de ese dinero.

Luego está la definición de "doble gasto" en el contexto de las transacciones de Bitcoin. El doble gasto a menudo se usa para decir que hay múltiples transacciones no confirmadas que entran en conflicto entre sí. Pero las transacciones no confirmadas no se consideran liquidadas, por lo que tiene transacciones conflictivas no liquidadas bajo esta definición.

El objetivo de la cadena de bloques es resolver estas transacciones conflictivas no resueltas. Su propósito es garantizar que todas las transacciones no entren en conflicto entre sí y que se consideren liquidadas. Entonces, para no tener gastos dobles, necesita dos propiedades para las transacciones: irreversible y no conflictiva.

La parte que no está en conflicto es manejada por nodos. Los nodos validan bloques y transacciones. Rechazan bloques si contienen transacciones que entran en conflicto con otras transacciones en ese bloque o en la cadena de bloques. Entonces, lo que previene el aspecto de conflicto de los gastos dobles son los nodos.

La Prueba de trabajo es lo que permite el aspecto irreversible. Requiere que los mineros gasten tiempo y energía para crear un bloque. Para cambiar el contenido de un bloque, se debe gastar tiempo y energía para crear un nuevo bloque que entre en conflicto con uno que ya existe.

La Prueba de trabajo también se utiliza para resolver conflictos de blockchain. Si hay varias cadenas de bloques candidatas que se derivan de un punto de bifurcación común, los nodos siguen al que tiene el mayor trabajo acumulativo porque esa cadena es en la que se gastó la mayor cantidad de energía para crear.

La parte de la cadena de la cadena de bloques crea un factor compuesto, de modo que para reemplazar un bloque en la cadena de bloques, también debe reemplazar los bloques que están encima, gastando mucho más tiempo y energía. Debido a que hay otras personas minando en la cadena de bloques original, también debe poder minar más rápido que ellos para que su cadena de bloques tenga más trabajo que la original para que la suya sea aceptada por todos los demás.

Debido a que reemplazar bloques requiere un gasto significativo de tiempo y energía, uno puede suponer razonablemente que un bloque y las transacciones que contiene nunca cambiarán una vez que se hayan minado varios bloques encima. Esto nos da el aspecto irreversible. Por eso se dice que las transacciones confirmadas son irreversibles.

¿Por qué no podemos reemplazar PoW con una adición automática de bloques de 10 minutos basada en una marca de tiempo simple?

Porque eso no está descentralizado. ¿Quién crea los bloques? Si varias personas pueden crear bloques como con la minería, ¿por qué mecanismo se rompen los lazos? ¿Cómo resuelves dos personas diferentes creando bloques diferentes? ¿Qué impide que alguien falsifique las marcas de tiempo y reemplace la cadena de bloques con su propia versión?

La forma más fácil de resolver esto es hacer que los bloques solo los produzca un grupo limitado y confiable de personas. Así que ahora está centralizado. Felicidades, creaste Paypal, pero menos eficiente.

Todo el propósito de la Prueba de trabajo es permitir un sistema descentralizado en el que todos puedan estar de acuerdo con la verdad sin que una autoridad central dicte cuál es esa verdad. Si todos siguen las mismas reglas, eventualmente todos concluirán cuál es la verdad. El uso del gasto de energía en la Prueba de trabajo evita que alguien reescriba la historia con diferentes bloques porque es costoso hacerlo. El desempate de usar la cadena con más trabajo permite que los nodos converjan en la misma cadena de bloques. El uso de la Prueba de trabajo responde a las preguntas que planteé anteriormente sin depender de una autoridad central.

En conclusión, la Prueba de trabajo permite que las transacciones se liquiden y sean irreversibles. Permite que los nodos converjan en la misma cadena de bloques y hace que sea extremadamente costoso, hasta el punto de un costo imposible, reescribir la historia, lo que hace que las transacciones en la cadena de bloques sean irreversibles. La garantía real de que no existen transacciones conflictivas en la cadena de bloques y, por lo tanto, la prevención real de los gastos dobles se deja a los nodos que validan la cadena de bloques.

gracias por dar una respuesta tan completa!
@Andrew Chow gracias por la gran explicación. Todavía tengo algunas dudas sobre la utilidad del PoW. ¿Qué pasa si hay una verdad obvia e incuestionable para cada conflicto de bloques y, por lo tanto, ya no necesitamos consenso? En esta situación, ¿todavía necesitamos el PoW?
por verdad obvia e incuestionable me refiero a que cuando hay un conflicto de bloques, cada nodo indudablemente puede concluir sobre la misma verdad sobre cuál es el correcto, al igual que siempre podemos concluir que dos más grandes que uno es cierto.
@swampcypress Claro, si hubiera una forma descentralizada de hacerlo, entonces no necesitaríamos PoW.