Cómo funciona la protección de reproducción Segwit2x | de Jimmy Song | Charla sobre tecnología Bitcoin

Category: Tarjetas De Regalo
Author:
13 enero, 2021
Cómo funciona la protección de reproducción Segwit2x | de Jimmy Song | Charla sobre tecnología Bitcoin

Nota: ¡Este esquema de protección de reproducción se ha revertido desde entonces! Asegúrese de NO utilizar el esquema de protección de este artículo para nada, ya que NO estará protegido antes o después de la bifurcación dura 2x.

Jeff Garzik se fusionó ayer en un esquema de protección de reproducción opcional para Segwit2x. En esta publicación, voy a explicar cómo funciona, qué necesitarás hacer y por qué lo hicieron de esta manera.

Antes de explicar el esquema exacto de la protección de reproducción, es importante comprender primero qué son los ataques de reproducción. En el caso de un hard fork sin protección de repetición, las transacciones que gastan monedas antes del fork son válidas en ambas cadenas. Es decir, si Alice envía una moneda a Bob 1 en la cadena X, la misma transacción será válida en la cadena Y.

Alice puede tener la intención de enviar Bob 1 XCoin y 1 YCoin, en cuyo caso estaría transmitiendo la transacción en ambas cadenas y no tendría ninguna vulnerabilidad. Sin embargo, si quería enviar a Bob solo 1 XCoin y no 1 YCoin, tenemos un problema. Alice, por supuesto, transmitirá la transacción en la cadena X, pero la transacción ahora es pública y eso abre una vulnerabilidad de seguridad.

Un atacante puede tomar la transacción pública que envía 1Xcoin de Alice a Bob desde la cadena X y reproducirla en la cadena Y. Esto haría que Bob obtuviera 1 YCoin. Esto se denomina ataque de repetición y provoca muchas transacciones no deseadas.

Protección de reproducción es el término generalizado que describe cómo puede evitar que un atacante ejecute ataques de reproducción. En otras palabras, haga que las transacciones de la cadena X no sean válidas en la cadena Y y viceversa.

La sólida protección de reproducción bidireccional significa que las transacciones de la cadena X nunca son válidas en la cadena Y después del hard fork y viceversa. Es decir, todas las transacciones tienen algún marcador que deja claro para qué cadena están destinadas.

Bitcoin Cash logró esto marcando las firmas, lo que requiere cada transacción. Esto hizo que las transacciones en su cadena no fueran válidas en Bitcoin y viceversa. A esto se le llama protección de repetición “fuerte” porque no hay forma de que nadie se exponga accidentalmente a ataques de repetición. La protección sólida contra la reproducción se parece mucho a una puerta que se cierra automáticamente y evita que la transacción se escape de la cadena X.

La protección de reproducción opt-in significa que las transacciones de la cadena X deben hacer algo especial para que no sean válidas en la cadena Y.Es decir, de forma predeterminada, las transacciones están expuestas a ataques de repetición, pero si manipula su transacción de cierta manera, la transacción ganó no será válido en la cadena Y. La protección de reproducción opt-in es más como una puerta que debe recordar bloquear, porque de lo contrario la transacción puede escapar de la cadena X y entrar en la cadena Y.

Los desarrolladores de Segwit2x se decidieron por un esquema de protección de reproducción Opt-in particular como en la solicitud de extracción anterior. Alice, cuando envíe monedas en la cadena Legacy a Bob, tendrá que enviar una pequeña cantidad a 3Bit1xA4apyzgmFNT2k8Pvnd6zb6TnwcTi para que la transacción no sea válida en la cadena 2x. Se eligió esta dirección porque es algo fácil de ver visualmente (comienza 3Bit) y es bastante fácil de gastar ya que la clave privada es bien conocida.

Se están considerando otros esquemas de protección de reproducción opcional, como poner una cadena especial en OP_RETURN, hacer un valor mágico de nSequence o ignorar transacciones con ciertos bits de versión (este aún puede suceder), pero este esquema fue elegido, muy probablemente, porque es relativamente fácil de hacer, incluso con billeteras que no son conscientes del hard fork.

Ahora, antes de que empieces a intentar enviar monedas a la dirección anterior, tengo una advertencia. Este esquema de protección de reproducción solo se activa después de la división de la cadena. Es decir, es inútil enviar una pequeña cantidad a la dirección anterior hasta el 18 de noviembre aproximadamente, cuando se extrae el bloque 494784. En ese momento, el envío de una transacción que incluya una pequeña cantidad a la dirección anterior en la cadena Legacy no se podrá reproducir en la cadena 2x.

Los desarrolladores de Segwit2x sienten que serán la cadena mayoritaria después del hard fork. Como tal, quieren que todas las carteras actuales que existen en el ecosistema de Bitcoin sean compatibles con 2x y no requieran actualizaciones. Es decir, las billeteras y los servicios no necesitarán actualizar su software con la protección de reproducción opcional. Su opinión es que una fuerte protección contra la reproducción causaría una división en el ecosistema más grande de lo necesario.

Cuando BCH se bifurcó el 1 de agosto, casi no había billeteras que admitieran BCH específicamente porque su esquema de protección de reproducción era sólido y porque los desarrolladores de billeteras no habían tenido la oportunidad de codificar los ajustes necesarios para que las transacciones fueran válidas en BCH. Parece que Segwit2x está tratando de evitar esto haciendo que las transacciones funcionen con las billeteras, comerciantes y servicios de Bitcoin actuales que existen.

Desafortunadamente, cualquier esquema de protección de repetición fuerte requiere un hard fork. Muchos desarrolladores de Core consideran que las bifurcaciones duras requieren mucho tiempo de espera y consenso de la comunidad, lo cual es una gran razón para el debate actual con la gente de 2x. Como tal, parece poco probable que en el futuro se cuente con un esquema de protección de reproducción sólido.

Primero querrá mover sus monedas Legacy a nuevas direcciones (su billetera Legacy), pero cada una de estas transacciones deberá enviar una pequeña cantidad a 3Bit1xA4apyzgmFNT2k8Pvnd6zb6TnwcTi. Si no le importa mucho la privacidad, puede realizar una transacción gigante que envíe todos sus bitcoins actuales a otra dirección o conjunto de direcciones. Solo asegúrese de que también se envíe una pequeña cantidad a 3Bit1xA4apyzgmFNT2k8Pvnd6zb6TnwcTi en la misma transacción.

Después de eso, puede enviar sus monedas 2x a diferentes direcciones y esa sería su billetera 2x.

Las bifurcaciones duras plantean muchos problemas con los que la comunidad de Bitcoin no ha tenido que lidiar antes. Los ataques de repetición es uno de ellos. Como siempre, tenga mucho cuidado al realizar transacciones con Bitcoin y manténgase informado sobre bifurcaciones duras como esta antes de enviar Bitcoins a cualquier lugar.

¿Quieres recibir noticias técnicas sobre Bitcoin seleccionadas? ¡Suscríbase al boletín de Bitcoin Tech Talk!

¿Eres un desarrollador que quiere entrar en Bitcoin y blockchain? ¡Inscríbase en el Seminario de programación Blockchain en Stanford, Londres o Seúl!