Transacción, bloque y minería

Estoy buscando una explicación detallada (el video sería lo mejor) cómo y cuándo se extrae la transacción en la red Ethereum (en teoría), desde el momento en que se crea con web3.eth.sendTransaction().

Para ser más específicos: Suposiciones: tiempo para minar el bloque Ethereum = 16s. Si el bloque no. 99 comenzó a extraerse en t = 0 y terminó de extraerse en t = 16, el bloque 100 comenzó en t = 16 y aún se está extrayendo y estoy creando la transacción (t = 17) y está en el grupo de transacciones pendientes.

  1. ¿Cuándo se elige la transacción para incluirla en el bloque? (Sé que gas y gasPrice son factores clave y soy consciente de que existe un límite de bloque de gas), pero estoy buscando una explicación gráfica (supongamos que gasPrice es bastante alto 700 Gwei). ¿Cuáles son los escenarios posibles?
    • ¿Se incluirá la transacción en el bloque 101?
    • ¿Se puede seguir incluyendo en el bloque 100 si uno de los mineros no comenzó a minar el bloque 100?
    • Si se extrae en el bloque 101, ¿el resto de la red sabrá sobre la transacción en el bloque 102, una vez que se confirme al menos una vez?

Estuve buscando respuestas a mis preguntas y encontré muchos temas relacionados, leí sobre gas, gasPrice, protocolo GHOTS, pero esto todavía no me parece del todo claro.

¡Gracias!

Respuestas (1)

Según tengo entendido, me gustaría señalar algunas cosas que siento que te estás perdiendo,

  1. No hay garantía de que la extracción de un bloque se realice exactamente cada t segundos (según sus suposiciones, t = 16 segundos). El tiempo definido por t es el tiempo promedio para que se extraiga un bloque y el protocolo de red mantiene el promedio cambiando la dificultad en consecuencia después de que se extrae un bloque. Minar un bloque incluye generar un hash que coincida con la dificultad (el número de ceros delante del valor hash) en ese momento (generar este hash es la competencia entre nodos).

  2. La generación de bloques siempre ocurrirá, independientemente de si hay transacciones pendientes o no, para mantener la tasa de crecimiento de la cadena de bloques, lo que evita que los atacantes generen una cadena de bloques más larga sin poseer al menos el 51 % de la potencia de procesamiento de la red.

  3. Una transacción Ser seleccionado para ser incluido en un bloque depende del precio del gas que esté dispuesto a pagar. Esto se debe a que el minero no incluirá su transacción si puede encontrar una transacción que le gustaría pagar más. Consulte la respuesta a esta pregunta (sin embargo, si las transacciones son de la misma dirección de cuenta, el nonce importará para evitar el doble gasto).

En referencia a su escenario, la transacción se puede incluir en cualquier bloque a partir del 100 (es decir, incluido el 100) según el arroz de gas que haya definido y otras transacciones pendientes y sus precios de gas. Sin embargo, una vez que se extrae un bloque, el nodo minero lo transmite a la red y, al recibir el mensaje, el bloque se extrae, los otros nodos lo validarán y dejarán de extraer ese bloque y comenzarán a extraer el siguiente bloque. Así los nodos conocen las transacciones incluidas en el bloque anterior.

El libro blanco de Ethereum lo explica bien. También puede consultar el libro blanco de Bitcoin