¿Qué es un tenedor suave? ¿Qué es un tenedor duro? ¿Cuáles son sus diferencias?

Cuando las personas hablan sobre posibles cambios en el funcionamiento de Bitcoin, a veces dicen que un cambio en particular puede implementarse como una bifurcación blanda. ¿Qué significa eso? ¿Cómo se compara esto con una bifurcación dura?

Respuestas (5)

¿Qué es una bifurcación de proyectos?

Una bifurcación en el desarrollo de software se refiere al evento de un proyecto independiente que se deriva de un proyecto de software. Tales bifurcaciones a veces ocurren en la esfera de código abierto, cuando hay planes/objetivos irreconciliables dentro de la comunidad de un proyecto, lo que a menudo conduce a una división en la comunidad y dos proyectos distintos a partir de entonces . En la práctica, esto toma forma en el código fuente que se copia y, en adelante, se desarrolla en una dirección diferente de forma independiente por parte de los bifurcadores. Por ejemplo, en este sentido convencional de bifurcación, Litecoin es una bifurcación de Bitcoin: Litecoin comenzó como una copia del código base de Bitcoin, pero se convirtió en un proyecto independiente (aunque aún estrechamente relacionado).

Softfork y Hardfork en la terminología de Bitcoin

Los términos softfork y hardfork en Bitcoin describen cambios que rompen la compatibilidad en el protocolo de Bitcoin: si la comunidad se dividiera de manera irreconciliable sobre tal tema, la versión anterior y la nueva versión de Bitcoin podrían surgir como proyectos distintos a partir de entonces. Si bien ambas versiones del protocolo Bitcoin están en uso, las diferencias en la aceptación pueden causar una bifurcación de cadena de bloques duradera, es decir, dos cadenas más largas distintas que parte de la red considera válidas.

Las bifurcaciones blandas son compatibles con versiones posteriores

Softforks restringen las reglas de aceptación de bloques en comparación con versiones anteriores.

Los nuevos bloques válidos son un subconjunto de los antiguos bloques válidos

Las nuevas reglas permiten un subconjunto de los bloques válidos anteriores, por lo tanto, todos los bloques considerados válidos por la versión más nueva también son válidos en la versión anterior. Si al menos el 51% del poder de minería cambia a la nueva versión, el sistema se corrige automáticamente:
los bloques creados por versiones anteriores de Bitcoin Core que no son válidos según el nuevo paradigma podrían comenzar una "bifurcación de cadena de bloques solo antigua" a corto plazo. , pero eventualmente, serían superados por la bifurcación de la cadena creada bajo el nuevo paradigma, ya que el poder de hash que funciona en el antiguo paradigma sería más pequeño ("solo versiones antiguas") que en el nuevo paradigma ("aceptado por todas las versiones") .

Sin embargo, si menos del 51 % del poder de hash cambia a la nueva versión, la bifurcación de la cadena de bloques no se reparará automáticamente, ya que la cadena creada con las reglas anteriores tiene más poder de hash y es incompatible con las nuevas reglas. Esto puede ser remediado por los adoptantes de la bifurcación suave que renuncian a su cadena, o más poder de hash cambiando a la cadena de bifurcación suave. Esto último haría que la cadena de bifurcación blanda finalmente alcanzara y reorganizara la otra punta de la cadena.

Las bifurcaciones duras no son compatibles con versiones posteriores

Las bifurcaciones amplían el conjunto de bloques válidos

Las bifurcaciones facilitan las reglas de aceptación de bloques , lo que hace que los bloques que antes no eran válidos sean válidos en la nueva versión. Obviamente, esto no es compatible con versiones anteriores, ya que las versiones anteriores no aceptarán los nuevos bloques, lo que hará que los usuarios del antiguo paradigma permanezcan en su propia cadena de bloques indefinidamente. Para implementar un hardfork, sin un blockchain-fork, todos los usuarios deben cambiar al nuevo protocolo de forma consensuada.

HF != horquillas de cadena de bloques

Últimamente, he visto que "hardfork" se usa indistintamente con "chain split". Se refieren a cosas diferentes. Una división de cadena es el estado de la red cuando la minería se basa en más de una punta de cadena al mismo tiempo. Esto puede suceder por varias razones, incluidas bifurcaciones duras, bifurcaciones blandas, software de nodo con errores y simplemente dos mineros que descubren un bloque a la misma altura.

Sería genial si se definiera "tenedor". Esta pregunta y respuesta parecen ser sobre "bifurcaciones de software", que son completamente diferentes a las "bifurcaciones de cadena de bloques", ¿correcto? Tenía la impresión de que las bifurcaciones de blockchain ocurren a diario, cada vez que dos mineros extraen bloques casi simultáneamente. bitcoin.stackexchange.com/questions/3343/…
@AlexMillar: Gran punto, ni siquiera había pensado en la necesidad de definir eso. :)
Gran respuesta. Una cosa en la que todavía estoy confundido: si una bifurcación suave puede convertirse en una bifurcación dura si no obtiene el 51% del poder de hash, como dices, ¿qué es realmente una bifurcación suave? Parece que no existe una bifurcación suave y todo es una bifurcación dura. ¿Qué me estoy perdiendo?
@BrianArmstrong: Corrección automática exitosa de bifurcaciones suaves: los usuarios que aún ejecutan la versión anterior todavía están en la cadena válida. Justo cuando la bifurcación suave falla, se comporta como una bifurcación dura: los que ejecutan la nueva versión están en una cadena más corta, pero no pueden procesar la cadena más larga a menos que cambien a la versión anterior.
Lo que quise decir allí cuando escribí esto hace dos años fue que una bifurcación suave con soporte de hash minoritario conduciría a una división persistente de la cadena. Sin embargo, aún puede repararse a sí mismo si converge más tasa de hash en la cadena de bifurcación suave. Todavía es claramente diferente de una bifurcación dura ya que el software es compatible con versiones posteriores.
¿Dónde puedo encontrar una lista de criptomonedas compatibles con soft fork?
¿Por qué solo Bitcoin conoce el término bifurcación dura o blanda? Nunca lo vi para otros proyectos de código abierto.
@FyodorGlebov: Otros proyectos generalmente no dependen de que toda la red ejecute exactamente las mismas reglas de protocolo.
En una bifurcación suave, los nodos antiguos pueden aceptar un tx que ahora no es válido y se separarán de la cadena principal, por lo que no veo por qué es mucho mejor que una bifurcación dura.
@relG: Cubro eso en mi respuesta. La sección relevante es "Sin embargo, si menos del 51% del poder de hash cambia a la nueva versión, la bifurcación de la cadena de bloques no se reparará automáticamente ya que la cadena creada bajo las reglas anteriores tiene más poder de hash y es incompatible con las nuevas reglas. " Sin embargo , si más del 50% del hashrate cambia a las nuevas reglas, todos los asentimientos convergerán en las nuevas reglas.
Actualmente, los mineros siempre extraen ambos tipos de ty (segwit y no segwit), ¿verdad? ¿Se pretende que esto siga siendo así para siempre o los mineros en algún momento dejarán de, digamos, extraer txs que no sean segwit? Porque si se detienen en algún momento, los fondos no segwit están en peligro.
@Invader: la mayoría de los fondos todavía se almacenan en UTXO que no son segwit. Con suerte, esto disminuirá lentamente. Sin embargo, incluso si algunos mineros eventualmente pueden dejar de extraer transacciones que no sean segwit, otros podrían continuar haciéndolo. Entonces simplemente tomaría más tiempo incluir las transacciones que no son segwit. Siempre que las transacciones sin segwit paguen tarifas competitivas, los mineros tienen un incentivo económico para incluirlas.
@Much: Mi pregunta fue el resultado de la falta de conocimiento. Puede sonar un poco confuso...

Las bifurcaciones blandas son compatibles con versiones posteriores

Los nodos antiguos aceptarán bloques creados por nodos nuevos.

Con una bifurcación suave, solo los mineros tendrán que actualizar, o terminarán en la bifurcación perdedora. Los usuarios y comerciantes pueden seguir ejecutando nodos más antiguos, que aceptarán los bloques más nuevos.

Las bifurcaciones duras no son compatibles con versiones posteriores

Es posible que los nodos antiguos no acepten bloques creados por nodos nuevos.

Con una bifurcación dura, todos (mineros, usuarios y comerciantes) deberán actualizarse al nuevo código.

Actualmente, los mineros siempre extraen ambos tipos de ty (segwit y no segwit), ¿verdad? ¿Se pretende que esto siga siendo así para siempre o los mineros en algún momento dejarán de, digamos, extraer txs que no sean segwit? Porque si se detienen en algún momento, los fondos no segwit están en peligro.

Encontré la mejor definición exacta en los primeros tres párrafos aquí: gavinandresen / BitcoinVersioning

Recientemente implementamos dos cambios en las reglas de aceptación de bloques de Bitcoin (BIP16 y BIP30); este documento registra las lecciones aprendidas y hace recomendaciones para manejar futuros cambios en las reglas de blockchain.

Nota: hay cambios de reglas "suaves" y cambios de reglas "duros". Los cambios "suaves" hacen más estrictas las reglas: el software antiguo aceptará todos los bloques y transacciones creados por el software nuevo, pero puede que no sea cierto lo contrario. Los cambios "suaves" no requieren que toda la red de mineros, comerciantes y usuarios se actualicen o se queden atrás.

Los cambios "duros" modifican las reglas de una manera que el software antiguo y sin actualizar considera ilegal. En este punto, es mucho, mucho más difícil (algunos dirían que imposible) implementar cambios "duros", porque requieren que todos los mineros, comerciantes y usuarios se actualicen.

Para citar a Andreas Antonopulous:

Diriges un restaurante solo vegetariano y si lo cambias para que sea un restaurante solo vegano, entonces lo estás bifurcando suavemente, si lo cambias para incluir carne, lo estás bifurcando duro.

https://www.youtube.com/watch?v=rpeceXY1QBM

En una bifurcación se introducen nuevos nodos en la red, creando una red 'sucia'. Me gusta imaginar nodos verdes (antiguos) y rojos (nuevos) manteniendo una sola cadena de bloques en el momento del lanzamiento.

En un tenedor suave:

  • Si se extrae un nuevo bloque rojo, todos los nodos lo aceptan, la cadena de red crece normalmente.
  • Si se extrae un antiguo bloque verde, los nuevos nodos lo rechazan, lo que crea una división de la cadena de vida o muerte. A diferencia de una división de cadena normal, los nuevos nodos nunca aceptarán la versión con el bloque anterior.

Como con cada división de la cadena, los mineros deciden dónde ponen sus hashes. Dado que la dificultad del hash no cambia inmediatamente, la cadena respaldada con la mayor potencia de hash crecerá más rápido. Si la cadena 'redblock' tiene suficiente soporte de minería, ganan la carrera y los nodos antiguos adoptan su cadena, y el proceso se repite cada vez que se extrae un bloque antiguo.

Eventualmente ocurre uno de los siguientes:

  • los bloques verdes ya no se extraen y la cadena continúa roja. La bifurcación fue una actualización exitosa.
  • dos cadenas diferentes se estabilizan, la cadena verde-roja se ha vuelto demasiado larga para ser rechazada por una más larga completamente roja.

En el caso de este último, puede producirse una confusión de marca, dos cadenas significan que una es una moneda alternativa. Cuando esto sucede, el software de billetera de buena calidad debería poder realizar transacciones en una cadena en particular. Cada usuario, fabricante de intercambio y billetera decidirá qué cadena obtiene el nombre de marca original (si corresponde), por lo general, esto está relacionado con elecciones filosóficas o políticas. Por ejemplo, la cadena con más nodos y usuarios frente a la cadena con más poder de hash.

Si se acuerda (~consenso) que la marca original es la cadena roja, se espera que gran parte del poder de hash retenido migre a esa cadena, ya que el valor de mercado está fuertemente relacionado con el nombre y no con la tecnología subyacente. La tecnología de altcoin tendría que ser significativamente mejor para evitar esta fuga de marca. Cuando una bifurcación no incluye protección de reproducción, promueve la confusión y evita la separación de transacciones; esto se ve como un intento hostil de adquisición de marca.

La naturaleza compatible con versiones anteriores de las bifurcaciones blandas significa que pueden tener éxito solo con el poder hash . Un solo nodo que produce suficientes bloques (51 %) puede dominar una red más antigua. Para evitar el dominio del hash, la red anterior debe separarse. Esto se puede hacer introduciendo una incompatibilidad que no se puede parchear (es decir, una nueva versión de software) convirtiendo el SF en un hardfork. Tenga en cuenta que lo contrario no se sigue: solo porque un SF con suficiente poder de hash tiene garantizado el éxito, no significa que un SF con poco poder de hash esté condenado al fracaso. Esta es la teoría detrás del concepto de bifurcación suave activada por el usuario (UASF). El éxito de la teoría UASF simplemente depende de:

  1. un umbral mínimo de mineros para mantener las transacciones razonablemente utilizables hasta que se ajuste la dificultad.
  2. la marca original se transfiere en función del "apoyo del usuario" (percibido).