¿Cuáles son los mecanismos que utilizan la red Ethereum para decidir cuándo se hace un bloque B y vamos a minar el bloque B+1?

Sé por las estadísticas de Ethereum que un bloque se extrae en promedio en 14 segundos. Pero eso es sólo en promedio. Quiero saber, paso a paso si es posible, cuáles son los mecanismos para decir " bien, este bloque está hecho, vamos a crear uno nuevo ".

En mi opinión, no es un límite de tamaño de bloque (incluso si lo hay), porque la red Ethereum puede adaptarse si las transacciones no consumen más de 3 141 592 gas , lo que representa una gran cantidad de transacciones.

Entonces, creo que esto está relacionado con el anuncio que establece la dificultad para tener un bloque/12 segundos. Pero no estoy seguro de eso.

Gracias por su valioso tiempo y ayuda.

Respuestas (1)

Entonces, básicamente, ethereum es una máquina de estado. Dispones de una base de datos de estados (por ejemplo cuentas con importes). ¿Cómo cambian estos estados? por vía de transacciones. Que puede ser give X ether from A to Bpara invocaciones de contratos inteligentes. OK, las transacciones están agrupadas en un bloque . Y aquí es donde se pone interesante.

Tienes el universo de mineros trabajando en la producción de bloques. Toman transacciones del grupo, las procesan hasta que llegan al gasLimit, asignando a su cuenta designada (llamada etherbase) las tarifas de transacción y la recompensa por el bloque encontrado al final, y desde aquí producen un nonce aleatorio . El nonce es importante: a partir de este nonce y el bloque que hiciste, creas un hash , lo suficientemente complicado como para hacer que tu máquina trabaje mucho (es decir, usando mucha CPU, memoria y energía. Por eso se llama Prueba de trabajo ). Una vez que el minero tiene un hash, esto se compara con el objetivo , que no es otro que 2**256 / Difficulty, por lo que cuanto mayor sea la dificultad, menores serán las probabilidades de encontrar un hash menor que el objetivo.

Dado que puede producir aleatoriamente 2**256posibles hashes, a partir de su bloque hecho y su nonce , su probabilidad en cualquier momento de encontrar un hash válido es 1/D. El primer minero capaz de encontrar un hash menor que el objetivo , propaga su resultado. Si los otros mineros obtienen este bloque y lo encuentran válido (reproduciendo sus transacciones y verificando nonce y hash ), se incorpora a su respectiva cadena de bloques .

Ahora, la pregunta: ¿Cómo logran llegar a unos 14 segundos en promedio? Bueno, hay una función de cálculo de dificultad (vea esta publicación para una excelente explicación), que cada vez que se hace un bloque, se vuelve a calcular. Entonces, ves que en base a lo que tardas en producir el último bloque, ajustas la dificultad para poder llegar a un tiempo entre 10y 19segundos. Por supuesto, esta dificultad también se valida a lo largo del nuevo bloque.

Para responder a su pregunta, al final, difficultyestá relacionado con los datos del bloque principal, es decir, la dificultad , el número de bloque y el tiempo de este padre , y el tiempo del bloque actual .

Nótese que los mineros son maximizadores de ganancias, y el trabajo de hacer un bloque con 0 transacciones es igual en términos probabilísticos al trabajo de hacer un bloque con el máximo de transacciones permitidas por el sistema ( gasLimit). Querrán incluir tantas transacciones como sea posible para obtener las tarifas de tx.