¿Cómo conoce la red la cadena legítima en un intento de doble gasto?

Disculpas si esto se ha cubierto, pero hay un área de la red de Bitcoin que no tengo clara y está íntimamente relacionada con el problema del doble gasto.

Supongamos que la Persona A está comprando un artículo en una tienda. Ellos "pagan" a la Persona B 1 BTC por un bien y transmiten esta transacción a la red, que la Persona B ve como no confirmada. La transacción se incluye en un bloque ( Bloque 1 ) cuya Prueba de Trabajo ahora se está encontrando/resolviendo.

Supongamos que la Persona A controla el 30 % de la red de minería de Bitcoin (alta proporción arbitraria) y, en cambio, hace que sus mineros extraigan un bloque diferente ( Bloque 2 ) que contiene una transacción que gasta el mismo BTC en una billetera diferente controlada por la Persona A.

Supongamos que la Prueba de trabajo para el Bloque 2 se obtiene primero, contra todo pronóstico, y el minero "corrupto" que encuentra el hash requerido lo transmite a toda la red de bitcoin. Aquí es donde mi entendimiento se rompe. ¿Qué sucede exactamente cuando el 70% restante ve esta transacción? ¿Dejan de minar el Bloque 1 ? ¿En qué momento puede quedar huérfano el Bloque 1 ?

Cambiaría la redacción: "... a una billetera diferente controlada por la Persona A" con "... para pagar a la Persona C por otro bien".
Según tengo entendido, el 70% de los mineros no están trabajando todos en bloques idénticos Block1, sino cada uno en su propio bloque, que puede incluir o no la primera o la segunda transacción, dependiendo de su esquema de prioridad de transacciones, las transacciones disponibles y pronto. Ningún minero incluirá ambas transacciones contradictorias en su bloque. No hay garantía de qué transacción gana, pero garantiza que solo una persistirá.
Sí, eso fue una simplificación excesiva para el ejemplo. Se suponía que el bloque 1 representaba cualquier bloque que contenía la transacción legítima pero no contenía la transacción ilegítima

Respuestas (2)

Imagina la cadena de bloques como... una cadena de bloques

La situación es:

A -> B -> C
      \-> C'

Pero algunos nodos lo ven como A -> B -> C y el mío sobre el bloque C

y algunos otros ven A -> B -> C' y el mío sobre el bloque C'

Si el nodo ve algo como esto:

A -> B -> C -> D -> E...
      \-> C'-> D'-> E'...

debe seleccionar la cadena más grande cumulative difficulty(la más larga) y olvidarse de la cadena huérfana

Entonces, las dos preguntas inmediatas que vienen a la mente son: (1) ¿cómo decide un nodo que es A->B->C en lugar de A->B->C'? ¿Es quienquiera que estaba trabajando en C en lugar de C'? y (2) ¿En qué punto un nodo "seleccionaría la cadena con mayor dificultad acumulada"? Si C' se encuentra primero, ¿cambiarían de inmediato y olvidarían el bloque que contiene la transacción legítima?
(1) si tiene C y C', compare su dificultad y suelte una. De hecho, puede descartar cualquiera de ellos porque normalmente C+D > dC' y C'+D' > C
(2) en cualquier punto
sí, las transacciones en la cadena huérfana se olvidan y vuelven al estado sin confirmar si no se incluyen en la cadena principal

¿Qué sucede exactamente cuando el 70% restante ve esta transacción? ¿Dejan de minar el Bloque 1?

Digamos que comenzaron a minar Block1 cuando la cadena era -A-B-C->. Estaban minando en la parte superior del bloque C. Cuando se extrae el bloque 2 en la parte superior de C, la situación se convierte en -A-B-C-Block2->. Este 70 % ahora deja de minar Block1y pasa a minar encima de Block2. La primera transacción no se agrega a la cadena y se rechaza y la segunda transacción se confirma (con una longitud de confirmación de 1 bloque). (Después de un tiempo, cuando se extraiga el siguiente bloque Block2, se confirmará con una longitud de 2 bloques).

¿En qué momento puede quedar huérfano el Bloque 1?

Block1nunca se agregó a la cadena, por lo que no queda huérfano.

Entonces, ¿está diciendo que en mi ejemplo, el ataque de doble gasto habría tenido éxito y no hay forma de evitarlo?
Las monedas no se gastarían dos veces. Las monedas se gastaron solo en Block2. Entonces se rechaza la primera transacción y la persona B no envió el bien. La persona B enviaría los bienes solo si la primera transacción lograra minarse, pero no fue así en su ejemplo.
Suponiendo que la Persona B entregó las mercancías en 0/sin confirmar...
Él no haría eso porque no sería inteligente y contrario al concepto de bitcoin. No sé cuál es la práctica, pero enviaría los productos solo cuando la transacción se confirme en un bloque (por lo tanto, se agregue a la cadena de bloques) y tenga un bloque adicional además de eso.
Entonces, supongo que espera 6 confirmaciones, momento en el que me dirá que hay una baja probabilidad de que los mineros "ilegítimos" hayan estado trabajando en una cadena secreta durante el tiempo suficiente para reemplazar la cadena legítima.
Sí. Esto es cierto, siendo 6 un número discutible.
cambie "un bloque adicional más" en mi comentario anterior, con "varios bloques adicionales". Creo que el número 6 que mencionas proviene del hecho de que un grupo de minería una vez extrajo 6 bloques seguidos.