¿Cómo funciona la minería fusionada?

¿Cómo afecta la implementación de la minería fusionada la tasa global de hash de las cadenas alternativas?

¿Una solución sirve para todos? ¿Una solución se ajusta a algunos? ¿La tasa de "soluciones que encajarán" disminuye con más bifurcaciones con las que se prueba?

Sería excelente una explicación de cómo funciona realmente la minería fusionada.

Creo que la respuesta que aceptó no es una respuesta estricta a su pregunta tal como aparece en el título, sino a "¿Cómo funciona la minería fusionada?". ¿Puedes editar tu título para reflejar esto?

Respuestas (4)

La minería fusionada permite que un minero extraiga más de una cadena de bloques al mismo tiempo. El beneficio es que cada hash que hace el minero contribuye a la tasa de hash total de ambas (todas) las monedas y, como resultado, todas son más seguras.

Comenzando con una explicación de alto nivel: el minero (o el controlador de minería en el caso de la minería agrupada) en realidad construye un bloque para ambas cadenas hash de tal manera que el mismo cálculo hash asegura ambos bloques. Las unidades de trabajo basadas en este bloque luego se asignan a los mineros. Si un minero resuelve un bloque (en el nivel de dificultad de una o ambas cadenas de bloques), el bloque se vuelve a ensamblar con la prueba de trabajo completa y se envía a la cadena de bloques correcta (o ambos bloques se vuelven a ensamblar por separado y cada uno se envía a la correspondiente red si cumplía con ambos requisitos de dificultad).

El único detalle confuso es cómo el mismo hash puede asegurar ambas cadenas de bloques. Usaré el ejemplo de Bitcoin y Namecoin, donde Namecoin admite la minería combinada y Bitcoin no:

Primero, el minero debe ensamblar un conjunto de transacciones para ambas cadenas de bloques. Luego ensambla el bloque final de Namecoin y lo procesa. Luego crea una transacción que contiene este hash que es válido en la cadena de Bitcoin y lo inserta en el conjunto de transacciones de Bitcoin en la punta del árbol. Luego ensambla el encabezado final de Bitcoin con esta transacción y envía las unidades de trabajo.

Si un minero resuelve el hash en el nivel de dificultad de Bitcoin, el bloque de Bitcoin se ensambla y se envía a la red de Bitcoin. El hash de Namecoin no hace nada y la red de Bitcoin lo ignora.

Si un minero resuelve el hash en el nivel de dificultad de Namecoin, se ensambla el bloque de Namecoin. Incluye el conjunto de transacciones de Namecoin, el encabezado del bloque de Namecoin, el encabezado del bloque de Bitcoin y el hash del resto de las transacciones en el bloque de Bitcoin. Todo este "lío" se envía al sistema Namecoin. El sistema de Namecoin, que admite la minería combinada, acepta esto como prueba de trabajo porque contiene trabajo que debe haberse realizado después de que se crearon el encabezado del bloque y el conjunto de transacciones de Namecoin. (Porque no puede crear el conjunto de transacciones de Bitcoin que contiene ese hash y, por lo tanto, el encabezado de Bitcoin que lo protege, sin esa información. Así que prueba que se hizo el trabajo).

Tenga en cuenta que un minero puede resolver ambas cadenas simultáneamente, y lo hará si resuelve en la dificultad más alta. Un bloque puede "ganar" en la cadena pública y el otro no. Son totalmente independientes, solo la minería está fusionada.

Tres puntos clave para recordar:

  1. La cadena de Bitcoin no se desperdicia con cosas de Namecoin debido a la minería fusionada. A lo sumo, se inserta un pequeño hash en el árbol de transacciones.
  2. Las dos cadenas hash siguen siendo totalmente independientes. Las "cosas de Bitcoin" que van en el árbol de Namecoin básicamente se ignoran y solo se usan para validar la prueba de trabajo. (Inflará un poco la cadena de Namecoin, ya que significa que algunos bloques tendrán un encabezado adicional y un hash adicional).
  3. Por último, no se necesita soporte especial de Bitcoin.

El beneficio para Namecoin es obvio. Muchos mineros de Bitcoin probablemente harán minería combinada, ya que básicamente no les cuesta nada y les da un mayor rendimiento que la minería de Bitcoins solo. Como resultado, su tiempo de generación de bloques será más predecible y sus transacciones más seguras contra un ataque del 51 %.

"Luego crea una transacción que contiene este hash que es válido en la cadena de Bitcoin y lo inserta en el conjunto de transacciones de Bitcoin en la punta del árbol". - Para que quede claro, ¿uno crea una transacción falsa para 0BTC que tiene exactamente el mismo hash que el bloque Namecoin y la ingresa como la última transacción en el árbol merkle que tiene hash? ¿Generar la transacción falsa no requiere muchos recursos si tiene que coincidir exactamente con el hash? Si simplemente se inserta sin generarse, ¿esto no invalida el bloque, ya que contiene una transacción no válida?
@ThePiachu: No tiene que "coincidir" con el hash, solo tiene que contener el hash.
Entonces, la clave para entender esto es que Namecoin tiene soporte explícito para la minería fusionada. Con dos cadenas sin sostenerlo, esto sería imposible. Eso era con lo que estaba luchando, ¡gracias! Por cierto, ¡una referencia donde se documente el soporte de minería combinada de Namecoin sería genial!
¿Dónde aparecen las transacciones de Namecoin en el bloque de Bitcoin? ¿Están contenidos en la base de monedas de la transacción de subsidio del minero? ¿Puede señalar Tx en la cadena de bloques e identificarlo como un hash de bloque de Namecoin?
@pinhead No lo hacen. Solo el hash del bloque Namecoin aparece en el bloque Bitcoin.
@DavidSchwartz OK, pero ¿DÓNDE se inserta el hash del bloque namecoin en el bloque bitcoin? ¿En una transacción? ¿En la base de monedas? ¿En algún otro campo de datos?
@pinhead Va en el ScriptSig de la transacción de coinbase. La especificación está aquí .
¿Por qué el tiempo de generación de bloques será más predecible y puede evitar un ataque del 51% cuando se realiza la minería combinada? Gracias.
otro problema. por ejemplo, en algún momento, namecoin es más difícil de resolver que bitcoin. por lo tanto, si un minero decide resolver tanto namecoin como bitcoin, tendrá menos probabilidades de resolver un bloque de bitcoin que algunos mineros solo resuelven bitcoin.
@hqt Eso no tiene sentido. El hecho de que también esté tratando de extraer algún otro tipo de bloque no tiene ningún efecto sobre la probabilidad de extraer un bloque de bitcoin; esa probabilidad está determinada completamente por la dificultad de bitcoin.
@DavidSchwartz sí. es verdad ahora Pero menciono en el futuro, cuando resolver un problema de namecoin puede ser más difícil que resolver un problema de bitcoin (en otras palabras, el nonce de namecoin es más grande que bitcoin), por lo que cualquier minero que resuelva ambas monedas tiene menos probabilidad de ganar un bloque de bitcoin que minero de solo bitcoin. (es poco probable que esto suceda, solo menciono su aspecto técnico)
sobre mi primera pregunta. No entiendo por qué el tiempo de generación de bloques será más predecible y puede evitar un ataque del 51% cuando se realiza una minería combinada. Me puedes explicar mas claro este punto, gracias.
@hqt Sin minería fusionada, las personas solo extraerán una moneda cuando el valor de la moneda exceda el costo de la energía para minar. Con la minería fusionada, no hay costo adicional para extraer la moneda y la gente la extraerá siempre que no tenga ningún valor. Esto hace que el poder de hashing sea mayor y más predecible.
@hqt La probabilidad de que extraiga un bloque depende únicamente de la dificultad. La minería fusionada no tiene ningún efecto sobre la dificultad, por lo que sus probabilidades de minar cualquiera de los bloques son las mismas que si no fuera una minería fusionada. Cada hash es como dos boletos de lotería en lugar de uno.
Por ejemplo. la dificultad de la moneda con nombre es 10. y la dificultad de bitcoin es solo 8. Por lo tanto, el minero usará la dificultad 10 tanto para bitcoin como para la moneda con nombre. Compare con el minero que solo extrae bitcoins, él / ella solo resolverá bitcoins con una dificultad de 8. En este caso, la minería combinada reduce la probabilidad de ganar la carrera.
@hqt ¿Por qué haría algo obviamente tan tonto? Para cada hash, verificará si extrae un bloque de bitcoin y si extrae un bloque de namecoin. Si extrae un bloque de bitcoin, extraerá un bloque de namecoin. Si se encuentra entre las dos dificultades, solo extraerá un bloque de namecoin. ¿Por qué tiraría a la basura un bloque de namecoin válido solo porque no cumple con la dificultad de un bloque de bitcoin?
"¿Por qué tiraría un bloque de namecoin válido solo porque no cumple con la dificultad de un bloque de bitcoin?" No entiendo este punto. Debido a que está fusionando la minería en la cadena de bloques de bitcoin, si no cumple con la dificultad de un bloque de bitcoin, ¿cómo pueden otros mineros aceptar su cadena de bloques?
@hqt Otros mineros de bitcoin no lo harán, pero otros mineros de namecoin sí lo harán, ya que se encuentra con la dificultad de namecoin. Cuando fusionas el mío, cada hash es un intento de formar dos (o más) bloques válidos para dos (o más) cadenas de bloques diferentes.
@DavidSchwartz, muchas gracias. Echo de menos esta importante información. Esa cadena de bloques de namecoin mantendrá su propia cadena de bloques.
No lo leí todo, pero consulte el artículo de Blockstack, § 3.5 : "Uno de nuestros hallazgos clave es que la minería fusionada actualmente está fallando en la práctica: la cadena de bloques líder en minería fusionada, Namecoin, es vulnerable al ataque del 51%. Además , la minería combinada proporcionó una falsa sensación de seguridad. F2Pool controla entre el 30 y el 35 % de la potencia informática de Bitcoin, pero más del 60 % de la potencia informática de Namecoin a través de la minería combinada, lo que deja a Namecoin vulnerable a un ataque del 51 %.
Sí, la minería combinada hace lo contrario de prevenir un ataque del 51 % al eliminar las pérdidas económicas en caso de falla. bitcoinmagazine.com/articles/side-chains-challenges-potential

Básicamente, la idea es que ensamble un bloque de Namecoin y lo convierta en hash, y luego inserte ese hash en un bloque de Bitcoin. Ahora, cuando resuelva el bloque de Bitcoin en un nivel de dificultad mayor o igual al nivel de dificultad de Namecoin, será una prueba de que se ha realizado esa cantidad de trabajo para el bloque de Namecoin. El protocolo de Namecoin se modificó para aceptar un bloque de Bitcoin (resuelto en el nivel de dificultad de Namecoin o superior) que contiene un hash de un bloque de Namecoin como prueba de trabajo para el bloque de Namecoin. El bloque de Bitcoin solo será aceptable para la red de Bitcoin si se encuentra en la dificultad de la red de Bitcoin.

La cadena de bloques de Bitcoin obtiene un único hash adicional cuando se acepta un bloque de minería fusionado, y la cadena de bloques de Namecoin obtiene un poco más (porque incluye el bloque de Bitcoin) cuando se acepta un bloque de minería fusionado. Sin embargo, debido a Merkle Tree, no es necesario incluir todo el bloque de Bitcoin en el árbol de Namecoin, solo los hashes de nivel superior (por lo que la expansión adicional de la cadena de Namecoin no es un gran problema).

Dado que gana más dinero con la minería, tanto los mineros de Namecoins como los de Bitcoins eventualmente harán minería fusionada, y el nivel de dificultad para todas las cadenas de bloques eventualmente será el mismo.

Además, el incentivo económico para minar será el incentivo económico combinado de todas las redes, lo que hará que todas las redes sean más seguras. Por supuesto, esto permite que las redes de la competencia (con diferentes tasas de inflación) se vuelvan seguras rápidamente. Esto somete a Bitcoin a una mayor competencia.

En última instancia, el valor de Bitcoin es un reflejo de la necesidad de Bitcoins para realizar intercambios. Cuantas más personas usen Bitcoin para realizar compras, mayor será la demanda de Bitcoins y mayor será el precio de Bitcoins. (La especulación también aumenta el precio, pero la especulación a largo plazo es esencialmente una apuesta a que la demanda transaccional de Bitcoin aumentará en el futuro). Cuanto mayor sea el precio, mayor será el incentivo para minar.

En un momento dado, existe una cierta cantidad de demanda de una moneda similar a Bitcoin para realizar transacciones. Esa necesidad no aumenta con más competencia. Eso significa que la demanda transaccional de Bitcoin es realmente la misma que la demanda transaccional de todas las formas de pago sustancialmente similares. A medida que más monedas compiten para satisfacer la misma demanda, en realidad reducen la demanda de otras monedas a medida que se utilizan más ampliamente.

Esto significa que, en última instancia, en la medida en que las monedas sean intercambiables para los usuarios finales, la minería combinada no aumenta la seguridad general de las redes. La demanda de divisas determina el precio (y, por tanto, el valor de la recompensa). El aumento de la demanda de cualquier moneda determinada da como resultado una disminución de la demanda de otras, lo que reduce el incentivo para extraer otras monedas. El incentivo total es una función de la demanda total de todas las monedas similares a Bitcoin.

Excepto que ahora las monedas competidoras pueden comercializarse como "tan seguras como Bitcoin pero con tarifas de transacción más bajas". En otras palabras, existe una carrera a la baja entre las monedas competidoras para ofrecer las tarifas de transacción más bajas, porque reducir la tarifa de transacción no daña la seguridad de la red en comparación con las otras redes mineras fusionadas. Los usuarios, siguiendo su propio interés, adoptarán la moneda con las tarifas de transacción más bajas siempre que tenga la misma seguridad que los competidores.

Esto aumentará el precio de la moneda con la tarifa de transacción más baja (porque la demanda de la moneda es más alta) y disminuirá el precio de las monedas con tarifas de transacción más altas (porque la demanda de esas monedas está cayendo a medida que se llena con la demanda de la moneda competidora). Debido a que las monedas con las tarifas de transacción más altas fueron las que generaron el incentivo para minar, el incentivo general para minar disminuirá. Mientras la minería de una moneda se fusione con la moneda de uso gratuito, será impotente para aumentar los incentivos mediante la imposición de tarifas de transacción obligatorias.

El resultado será una disminución del incentivo a la minería, una disminución de la minería y, en última instancia, todas las redes que permitan la minería fusionada se volverán inseguras.

Una ligera corrección: no todas las monedas similares a Bitcoin atenderán la misma demanda, y Namecoin es un excelente ejemplo de ello. La demanda de Namecoin se basa en gran medida en su sistema DNS alternativo, que Bitcoin no proporciona.
Muy cierto. En la medida en que diferentes monedas similares a Bitcoin atienden demandas realmente diferentes, la minería fusionada podría aumentar la seguridad general. Pero, en la medida en que la minería fusionada permita una carrera de tarifas de transacción hasta el fondo para cada tipo diferente de moneda, destruirá la seguridad general de la cadena de bloques. (¿Quizás haya una manera de controlar qué monedas pueden aprovechar la minería de Bitcoin? Si es así, Bitcoin solo podría invitar a monedas que contribuyeran con un incentivo mínimo para los mineros).
"Básicamente, la idea es ensamblar un bloque de Namecoin y hacer un hash, y luego insertar ese hash en un bloque de Bitcoin". - ¿Dónde se inserta exactamente el hash del bloque Namecoin?
Issac, también estoy interesado en dónde va el hash y si existen ejemplos en Blockchain .info. Gracias @ThePiachu

El mismo Satoshi parece ser el inventor de la minería fusionada. En sus palabras ( bitcointalk.org ):

Creo que sería posible que BitDNS fuera una red completamente separada y una cadena de bloques separada, pero que compartiera la potencia de la CPU con Bitcoin. La única superposición es hacer que los mineros puedan buscar pruebas de trabajo para ambas redes simultáneamente.

Las redes no necesitarían ninguna coordinación. Los mineros se suscribirían a ambas redes en paralelo. Escanearían SHA de tal manera que si obtienen un resultado, podrían resolver ambos a la vez. Una solución puede ser solo una de las redes si una red tiene una dificultad menor.

Creo que un minero externo podría llamar a getwork en ambos programas y combinar el trabajo. Tal vez llamar a Bitcoin, obtener trabajo de él, entregarlo a BitDNS getwork para combinarlo en un trabajo combinado.

En lugar de la fragmentación, las redes comparten y aumentan la potencia total de la CPU de cada una. Esto resolvería el problema de que si hay varias redes, son un peligro entre sí si la potencia de la CPU disponible se acumula en una. En su lugar, todas las redes del mundo compartirían la potencia de la CPU combinada, lo que aumentaría la potencia total. Facilitaría el inicio de redes pequeñas al aprovechar una base lista de mineros.

una cosa para recordar en la minería combinada es que el hash de bloque de la cadena auxiliar (por ejemplo, namecoin) no necesita estar por debajo del umbral de la cadena auxiliar. más bien, es el hash de bloque del padre (por ejemplo, bitcoin) el que debe estar por debajo del umbral de la cadena auxiliar (namecoin). por ejemplo, vea lo que sucedió con namecoin cuando se introdujo la minería fusionada en el bloque 19200 :

nmc block height: 19199
nmc block hash: 000000000000b19f0ad5cd46859fe8c9662e8828d8a75ff6da73167ac09a9036

nmc block height: 19200
nmc block hash: d8a7c3e01e1e95bcee015e6fcc7583a2ca60b79e5a3aa0a171eddd344ada903d

esto no sucedió debido a un cambio de dificultad en namecoin, y tampoco sucedió porque la dificultad de namecoin se volvió irrelevante debido a la minería fusionada. más bien sucedió porque los criterios para evaluar bloques válidos cambiaron debido a la minería fusionada.

Se agregaron campos adicionales al encabezado de namecoin y estos nos permiten verificar que el bloque se valida para estar por debajo del umbral de namecoin. específicamente, el hash de bloque de la cadena principal ahora se incluye en el encabezado del bloque de namecoin. es este hash de bloque el que se extrae en la cadena principal, por lo que podemos simplemente observar este hash de bloque y obtener cualquier resultado que sea inferior al umbral de namecoin.

la razón por la que este hash de bloque de cadena principal es relevante para la cadena auxiliar es simplemente porque el hash de bloque de la cadena auxiliar está incluido en el script txin de coinbase en la cadena principal. este txin de coinbase puede tomar cualquier valor arbitrario; no es necesario que produzca un script válido . por lo tanto, es un buen lugar para colocar el hash de bloque de la cadena principal.

entonces, trabajando hacia atrás, para validar un bloque extraído por fusión, necesitamos:

  1. verifique que el hash del bloque de la cadena auxiliar (antes de agregar los datos de la cadena principal) exista en el script txin de coinbase
  2. verificar que coinbase tx exista en el árbol merkle de los padres
  3. verificar que la raíz merkle del padre existe en el hash de bloque del padre
  4. verificar que el hash del bloque principal sea inferior al umbral de la cadena auxiliar

y dado que cada uno de estos pasos implica una función hash unidireccional de los datos en el paso anterior, la finalización de cada paso verifica todos los pasos anteriores.