Pregunta sobre la seguridad de las horquillas

Al leer el documento técnico de Ethereum, se me ocurrieron las siguientes preguntas sobre las bifurcaciones. Me explico:
digamos que envío 1 ETHER a una dirección A1 para comprar algo y esta transacción se registra en el bloque 100 . Después de unas horas, se agregaron más bloques a la cadena de bloques y confirman indirectamente el bloque 100 a través de la información de PreviousHash que contiene cada bloque.
Si ETH se bifurca en el bloque 99, recuperaría mi 1 ETH y podría gastarlo nuevamente. Supongo que esto sería un gasto doble y no es así como funcionan las bifurcaciones.

  1. ¿Cómo suceden las bifurcaciones/ cómo se elige el bloque que separará las dos nuevas cadenas de bloques?
  2. ¿Cuál es el punto de separar una cadena de bloques? Quiero decir que ya existe un consenso común de que el estado actual de la red es correcto, debido a la prueba de trabajo. ¿Por qué bifurcarlo?

Respuestas (3)

¿Cómo suceden las bifurcaciones/ cómo se elige el bloque que separará las dos nuevas cadenas de bloques?

El tiempo promedio de bloqueo de Ethereum es actualmente de alrededor de 14 segundos . Con tiempos de bloque más bajos, existe una mayor posibilidad de que dos (o más) mineros encuentren una solución a la Prueba de trabajo de un bloque determinado al mismo tiempo. Las reglas de consenso significan que uno de estos dos (o más) bloques eventualmente se considerará el correcto, pero hasta ese momento puede crecer una cadena diferente de cada uno de los bloques.

Este es un evento que ocurre "naturalmente" muchas veces al día, y es por eso que Ethereum tiene la idea de los tíos , que ayudan a incorporar transacciones de cualquier cadena que finalmente se considere inválida.


Si ETH se bifurca en el bloque 99, recuperaría mi 1 ETH y podría gastarlo nuevamente. Supongo que esto sería un gasto doble y no es así como funcionan las bifurcaciones.

Las bifurcaciones naturales generalmente ocurren en la cabeza de la cadena, en el último bloque. Si su transacción se incorporó en el bloque 100 y hubo varios bloques construidos encima del bloque 100, entonces es poco probable que ocurra un evento de bifurcación "natural" en el bloque 99. (Un par de advertencias que yo [y @lungj] podemos piense en: a) si la red se particionó de alguna manera en el bloque 99 y luego se volvió a conectar, b) si comienza a minar antes de sincronizar completamente los datos de la cadena).

Quizás lo más probable sería un ataque, en el que un minero atacante deliberadamente eligió bifurcarse del bloque 99 en un esfuerzo por duplicar los fondos gastados de bloques posteriores. Para hacer esto, necesitarían suficiente poder de hash para crear una bifurcación más larga que la bifurcación que todos los demás consideran correcta. Esto es lo que se consideraría un ataque del 51 % .

1 Por "más largo" realmente queremos decir con una mayor dificultad acumulada.

Basado en algunas de las preguntas aquí donde las personas a veces extraen un bloque antes de sincronizar por completo, creo que puede eliminar de manera segura la cobertura "siempre" para cuando se produzcan bifurcaciones :)
Ah, sí, buen punto, no había pensado en eso :-) Editado. ¡Gracias!

En realidad, hay 2 tenedores diferentes para explicar en este contexto.

Horquillas técnicas:

  1. Aquí es cuando todos los mineros están minando juntos de manera efectiva, pero a veces diferentes mineros extraen 2 bloques 100 diferentes, y la red los ve al mismo tiempo, ambos son válidos. Entonces, otros mineros elegirán uno y comenzarán a extraerlo. Esto suele ser de corta duración y da como resultado huérfanos.

  2. Esto no tiene sentido, simplemente sucede naturalmente cuando los mineros intentan ser los más rápidos para obtener un bloque.

bifurcación política:

  1. Esto sucede cuando los mineros deciden ejecutar reglas en un bloque que no coinciden con las reglas de la otra cadena de bloques. El número de bloque suele ser arbitrario, es solo un bloque elegido por los mineros para cambiar a nuevas reglas que son incompatibles con la cadena de bloques original.

  2. Esto se debe a un desacuerdo en las reglas de consenso. Ejemplo: Bitcoin Cash se bifurcó de Bitcoin porque querían un cambio en el consenso que Bitcoin Core no quería.

Si ETH se bifurca en el bloque 99, recuperaría mi 1 ETH y podría gastarlo nuevamente. Supongo que esto sería un gasto doble y no es así como funcionan las bifurcaciones.

Aunque es probable que se programe una bifurcación en un bloque futuro, digamos que ocurrió en el bloque 99 y que gastó su 1 ETH en el bloque 100. No podrá usar el 1 ETH nuevamente en la cadena de bloques original. Solo puedes usarlo en la cadena bifurcada. Así es exactamente como funcionan las bifurcaciones, y no es un gasto doble.

Cuando se produce una bifurcación, por ejemplo, cuando Bitcoin Cash se bifurcó de Bitcoin, cualquier bitcoin que tenía en el bloque donde se produjo la bifurcación ahora se puede gastar tanto en Bitcoin Cash como en las cadenas de Bitcoin. En otras palabras, si tuviera 5 BTC antes de la bifurcación, tendría 5 BTC y 5 BCH (Bitcoin Cash) después de la bifurcación. El BTC solo se puede gastar en la cadena Bitcoin y el BCH solo se puede gastar en la cadena Bitcoin Cash. Debido a que ambas cadenas tienen una historia común, es esencialmente el mismo bitcoin que se puede gastar una vez en ambas cadenas. Esto no es un doble gasto. Son cadenas diferentes.