geth Clique consenso omitir bloques vacíos

El consenso de la camarilla parece estar siempre sellando un nuevo bloque a intervalos fijos de periodsegundos, donde periodestá la puesta en el bloque génesis ( config.clique.period).

Eso parece un desperdicio, de hecho, el Aura de Parity solo firma bloques vacíos cuando se registra una transacción o se realiza una transferencia a otro nodo (normalmente cada 120 segundos, vea --reseal-on-txsy --reseal-min-periodargs).

¿Es posible llegar getha trabajar así? No me importa volver a sellar inmediatamente, pero sería muy bueno omitir los bloques vacíos, aunque no por completo.

En geth, si establece el período de camarilla en 0, solo creará un nuevo bloque cuando haya una transacción.

Respuestas (3)

Geth no tiene un indicador predefinido para lograr esto, pero puede escribir y luego --preloadarchivos .js en geth. Utilizo este enfoque en nuestra red privada para sellar bloques solo cuando hay nuevas transacciones.

hipervínculo fijo, lo siento, no uso eth-mine-when-needed, uso un archivo JS muy similar a la respuesta vinculada anteriormente. Usamos Clique ya que no necesitamos PoW en nuestra red privada
Interesante, gracias. Obtuve una variante para que funcionara, aunque para las " confirmaciones X " tuve que ejecutar el script en solo uno de los 2 nodos de firma. Probablemente no funcionará en absoluto en una configuración de más de 3 firmantes.
puede funcionar en todos los firmantes de una red si modifica ligeramente el script: if(eth.getBlock("pending").transactions.length > 0 || eth.getBlock("latest").transactions.length > 0) {<start mining>.... Esto significa que todos los selladores comenzarán a sellar cada vez que se agregue un nuevo tx, incluso si pierden el disparador en el grupo de tx.

AFAIK no es posible hacer eso con GETH sin hacer modificaciones significativas al código fuente. Hay algunos "trucos" que puede usar en las redes PoW para minar solo cuando las transacciones se han comprometido con la cadena de bloques. Me imagino que podrías hacer lo mismo con PoA. Dicho esto, si quieres saltarte los bloques vacíos, ¿por qué no te decides por Aura y Parity?

Cómo dejar de minar bloques no deseados en una red privada en geth ethrereum

Todo lo que tiene que hacer es configurar period:0el archivo genesis.json para lograr este comportamiento de sellado.