¿Qué pasaría si dos mineros estuvieran extrayendo dos bloques con dos conjuntos diferentes de transacciones?

Si dos mineros eligieron del mempool dos conjuntos diferentes de transacciones, no dependían el uno del otro.

Entonces, ¿podrían ambos mineros extraer ambos bloques y no crear una bifurcación?

Entonces, ¿el minero 1 termina el bloque y el minero dos ve que el bloque no tiene nada que ver con su bloque, por lo que continúa extrayendo y agrega ese bloque al bloque del minero 1 después de aproximadamente un segundo?

Supongo que las bifurcaciones solo ocurren cuando ambos bloques extraídos tienen transacciones que existen en ambos bloques.

No soy experto en la materia en este tema. Tengo una referencia del libro de Andreas "Mastering Bitcoin" aquí, que se encuentra en el Capítulo 10, "Minería y consenso" (página 240 y siguientes). <<Los bloques pueden llegar a diferentes nodos en diferentes momentos, lo que hace que los nodos tengan diferentes perspectivas de la cadena de bloques. Para resolver esto, cada nodo siempre selecciona e intenta extender la cadena de bloques que representa la mayor cantidad de Prueba de trabajo, también conocida como la cadena más larga o la cadena de mayor trabajo acumulativo.>> (parte 1 de 2)
<< Al sumar el trabajo registrado en cada bloque de una cadena, un nodo puede calcular la cantidad total de trabajo que se ha gastado para crear esa cadena. Siempre que todos los nodos seleccionen la cadena de mayor trabajo acumulativo, la red global de bitcoin eventualmente converge a un estado consistente. Las bifurcaciones ocurren como inconsistencias temporales entre las versiones de la cadena de bloques, que se resuelven mediante una eventual reconvergencia a medida que se agregan más bloques a una de las bifurcaciones. >> (parte 2 de 2). Después de esta introducción, hay como 8-9 páginas que explican la bifurcación, espero que esto te ayude a comenzar.
@pebwindkraft Creo que entiendo lo que sucedería ahora. Gracias por el aviso. Escribiré una respuesta basada en eso.

Respuestas (4)

No, cada bloque debe hacer referencia a su bloque predecesor en el encabezado, y la cadena de bloques tiene solo un bloque en cada altura. Por lo tanto, el segundo minero debe modificar la plantilla de bloque con la que está minando para construir sobre el bloque recién descubierto. Necesitan actualizar el hash del bloque predecesor y la altura de la cadena de bloques en la transacción de Coinbase. De lo contrario, el bloque que encontrarían estaría compitiendo con el recién publicado para su inclusión en lugar de escribir la cadena de bloques.

El resto de la plantilla de bloque podría permanecer igual, si ninguna de las transacciones se incluyera ya en la cadena de bloques.

Sin embargo, su pregunta me parece que está pensando que la búsqueda de un bloque ha progresado. La minería es un proceso sin progreso, cada intento puede o no tener éxito de forma independiente. Por lo tanto, sería una estrategia más rentable para cada minero intentar incluir las transacciones más jugosas (por la tasa de tarifa más alta) y cambiar a una nueva plantilla de bloque cada vez que se publique un bloque con las nuevas transacciones más jugosas.

Oh, la ironía... ACABA de responder exactamente la misma pregunta en Stackoverflow. Copio la respuesta aquí:

Puedes imaginarte a dos mineros compitiendo creando bloques. Si un minero no tiene el bloque N, seguirá intentando extraer ese bloque. Si recibe el bloque número N después de haberlo extraído, el minero simplemente lo ignora, y tenemos una bifurcación temporal en la cadena de bloques con dos ramas, y el bloque N+1 tendrá dos versiones diferentes. Ahora, lo que determina qué rama sobrevive es básicamente la rama que se extrae más rápido. Una regla de consenso arbitraria es que la cadena más larga es siempre la cadena correcta. Cuando existe una cadena más larga, todos los mineros están de acuerdo en que esta cadena es la correcta.

La razón por la que esto funciona es porque la probabilidad de extraer un bloque es lo suficientemente amplia durante 10 minutos en Bitcoin (o tiempo de bloque en general).

La siguiente imagen se puede ver como la probabilidad de minar un bloque a lo largo del tiempo (en bitcoin).

Probabilidad de minar un bloque durante algún tiempo

Es por eso que está mal crear cadenas de bloques con muy poco tiempo. Porque si el tiempo es muy corto (como 10 segundos), habrá toneladas de bifurcaciones antes de que la cadena de bloques se estabilice.

Gracias por la visión de usted. No creo que esto responda a mi pregunta. Soy consciente de lo que sucede durante una bifurcación y cómo la red lo resuelve. Mi pregunta es si ocurrirá una bifurcación si los mineros 1 y 2 están minando dos bloques independientes. Y el minero uno agrega su bloque, ¿puede el minero dos actualizar su cadena y continuar extrayendo el mismo bloque ya que no hay conflictos?
@Kyle Branches son completamente independientes y no tienen ninguna relación. El único requisito es que cada rama sea consistente. Uno de ellos morirá.
¿Son lo mismo ramas que tenedores? No estoy seguro de entender bien lo que acabas de decir.
@Kyle un tenedor tiene múltiples ramas.
¿Cómo puede una bifurcación tener múltiples ramas? Si no me equivoco, cuando la red bitcoin se bifurca, ¿crea una bifurcación? No he oído hablar del término "rama" antes, soy nuevo, así que todavía lo ignoro. Por favor corrígeme donde estoy equivocado
Estás confundido con la terminología. Primero, tenga en cuenta que no estoy hablando de bifurcaciones de protocolo, como Bitcoin Cash. Estoy hablando de bifurcaciones temporales de blockchain debido a la minería (lea mi respuesta nuevamente). Un tenedor es la acción de crear múltiples ramas, que se parece al tenedor que tienes en una cocina. Hablando topológicamente (en cuanto a la forma), una bifurcación tiene ramas, y cada rama puede tener una bifurcación que tenga más ramas.

Después de leer el comentario de pebwindkraft, se me ocurrió una respuesta.

El extracto particular "Para resolver esto, cada nodo siempre selecciona e intenta extender la cadena de bloques que representa la mayor Prueba de trabajo, también conocida como la cadena más larga o la mayor cadena de trabajo acumulada"

Si la cadena de bloques fuera actualmente:

Bloque1 -> Bloque2 -> Bloque3

Y dos mineros eligen del mempool, transacciones que no se superponen. Entonces esto causará una bifurcación en la cadena de bloques, si ambos transmiten al mismo tiempo.

Esto se debe a que, aunque la transacción no se superponga, el blockhash sería diferente para cada minero, y si el blockhash es diferente, entonces se trata de dos versiones diferentes de la cadena de bloques. Incluso si las transacciones no se superponen.

Si miner1 transmite primero, entonces miner2 tendrá que comenzar su bloque nuevamente, aunque todas las transacciones en el bloque de miner1 no coincidieron con las de miner2. Esto se debe a que tan pronto como miner1 se agrega a la cadena de bloques. La cadena se convierte en:

Bloque1 -> Bloque2 -> Bloque3->Bloque4

Donde Block4 es el bloque miner1s.

Miner2 tiene que empezar de nuevo porque en su bloque estaba usando el hash anterior de block3, ahora tiene que cambiarlo por el hash de block4.

Si cometí un error, deje un comentario en lugar de votar negativamente, ya que me gustaría saber dónde me equivoqué.

No precisamente.

dos ve que el bloque no tiene nada que ver con su bloque, por lo que continúa minando y agrega ese bloque al mío

Una vez que un minero ve la llegada de un bloque a la misma altura por la que él mismo está minando, es el final de la competencia por ese bloque. No tiene sentido continuar con la minería.

Sin embargo, en caso de que los mineros creen bloques simultáneos, las bifurcaciones ocurrirían

Supongo que las bifurcaciones solo ocurren cuando ambos bloques extraídos tienen transacciones que existen en ambos bloques.

Miner debe eliminar las transacciones del grupo de memoria que ya están presentes en el bloque recién llegado y comenzar la extracción de un bloque nuevo