¿Por qué las bifurcaciones duras necesitan reglas especiales para permitir la protección de reproducción?

He visto muchos métodos que usan las cadenas bifurcadas para proporcionar una protección de reproducción sólida y opcional para que las transacciones solo sean válidas en una de las cadenas. Los ejemplos de tales reglas incluyen el uso de una salida de invalidación de transacciones y el uso de una OP_RETURNcadena específica.

Mi pregunta es ¿por qué alguno de estos mecanismos es necesario para proteger a un titular de un ataque de repetición? Más específicamente, ¿por qué una persona que tiene monedas antes de la bifurcación no puede protegerse simplemente gastando un par de transacciones de división de monedas en cada cadena como esta?

  1. Alice tiene conocimiento exclusivo de la clave privada necesaria para gastar UTXO, Aque tiene un valor de 1 "LegacyCoin" antes de la bifurcación dura.
  2. La bifurcación dura crea una nueva moneda llamada "NewCoin" basada en el historial de blockchain de LegacyCoin.
    • UTXO Aahora contiene 1 LegacyCoin según la red LegacyCoin y 1 NewCoin según la red NewCoin porque así es como funcionan las bifurcaciones duras.
  3. Alice crea y firma dos transacciones: una que gasta Aen By otra que gasta Aen C(ambas de las cuales Alice también tiene conocimiento exclusivo de la clave privada).
  4. Luego, Alice transmite simultáneamente estas transacciones firmadas en las dos redes: transmite la transacción A->Bsolo en la red LegacyCoin y la transacción A->Csolo en la red NewCoin.
  5. Ambas transacciones se confirman en sus respectivas redes y ahora Alice ha dividido efectivamente el valor original de UTXO Aen las dos cadenas de bloques en ausencia total de mecanismos de protección de repetición implementados por NewCoin. Las monedas ahora se pueden considerar divididas porque incluso si ella gasta B, nadie más puede gastar C(y viceversa) porque son UTXO diferentes y requieren firmas diferentes para gastar. Además, obviamente nadie puede gastar Aporque ya está gastado en ambas cadenas.

¿Por qué la declaración en el paso 5 no es verdadera? ¿Dónde se rompe esta lógica que requiere que las cadenas bifurcadas implementen un mecanismo de protección de reproducción real?

Respuestas (2)

Es cierto que lo que propone dividiría efectivamente las monedas y evitaría más repeticiones, si tuviera éxito.

Sin embargo, sufre los siguientes problemas:

  • Cada persona que quiera dividir sus monedas debe crear una transacción adicional para hacerlo (y pagar una tarifa de transacción). Presumiblemente, nadie realmente quiere estar sujeto a ataques de repetición, por lo que todos querrán hacer esto. Eso es costoso para los usuarios y es una gran cantidad de transacciones. Por ejemplo, Bitcoin tiene actualmente unos 50 millones de utxos; dividirlos a todos requeriría suficientes transacciones para llenar unos 5000 bloques, por lo que toda la red se atascaría durante varias semanas y las tarifas de transacción se dispararían.

  • Es posible que algunas personas no conozcan este requisito y, sin darse cuenta, pueden someterse a tales ataques. Incluso si el software lo hace automáticamente, es posible que todavía estén usando el software LegacyCoin antiguo que no lo hace. Eso no es muy fácil de usar.

  • Un atacante puede derrotarlo, al menos temporalmente. Suponga que Alice transmite sus transacciones A->B y A->C como usted propone. Mallory, un malvado minero de NewCoin, ve la transacción A->B en la red de LegacyCoin y decide intentar reproducirla en la red de NewCoin. Pone A->B en su bloque de candidatos (¡lo cual puede hacer porque es reproducible!) y tiene la suerte de minarlo antes de que nadie más confirme la transacción A->C. Ahora las monedas de Alice viven en utxo B en ambas redes, que es exactamente lo que está tratando de evitar. En el mejor de los casos, se da cuenta de que esto sucede y tiene que comenzar de nuevo (y pagar otra tarifa de transacción), hasta que logre que los mineros honestos confirmen las transacciones correctas en ambas redes. En el peor de los casos, ella no se da cuenta y, sin saberlo, es vulnerable a futuras repeticiones.

La red LegacyCoin y la red NewCoin no están claramente separadas entre sí. A menos que se cambien los puertos y la magia de la red, los nodos de LegacyCoin podrán conectarse a los nodos de NewCoin y probablemente muchos se conectarán entre sí. Entonces, si transmite una transacción A->Ben la red LegacyCoin, es probable que llegue a un nodo NewCoin que luego hace que la transacción también se transmita en la red NewCoin.

Además, incluso si las redes están claramente separadas, las personas pueden operar un nodo tanto en la red LegacyCoin como en la red NewCoin. Sin protección de repetición, alguien puede tomar transacciones que está escuchando en la red LegacyCoin y transmitirlas a través de su nodo NewCoin y viceversa.

Por último, la protección de repetición bidireccional debería ser obligatoria porque el proceso de dividir sus monedas con contaminación UTXO es bastante difícil. Debe tener un conocimiento técnico decente para hacerlo y es probable que necesite tener un software modificado para hacerlo. No es algo que los usuarios comunes probablemente puedan hacer sin algunas instrucciones muy específicas y existe una alta probabilidad de que lo arruinen y posiblemente pierdan monedas.

Entonces, para aclarar, dice que el proceso se descompone en el paso 4: es posible que Alice no tenga la capacidad de elegir que las transacciones se transmitan en redes separadas porque es posible que en realidad no sean redes separadas e incluso si lo son, todavía existe la posibilidad de que alguien pueda interceptar una de sus transacciones y reproducirla de todos modos en la "otra" red sin el conocimiento o permiso de Alice?
Sí. Por eso se llama "ataque de repetición de transacción"; su transacción se está reproduciendo en otra red posiblemente sin que usted lo sepa.
Derecho. Sé que es posible anular este método de protección de reproducción, pero ¿no sería poco probable que sucediera el evento de reproducción a menos que hubiera un incentivo económico para que alguien lo hiciera (que presumiblemente no existiría porque Alice todavía controla las claves privadas de B y C? )?
Es una razón más general para tener protección de repetición. Aquellos que no saben cómo hacer este tipo de división terminarán reproduciendo sus transacciones normales accidentalmente o posiblemente por la persona que recibe la transacción que desea ganar monedas en la otra cadena.