El consenso de la camarilla parece estar siempre sellando un nuevo bloque a intervalos fijos de period
segundos, donde period
está 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-txs
y --reseal-min-period
args).
¿Es posible llegar geth
a trabajar así? No me importa volver a sellar inmediatamente, pero sería muy bueno omitir los bloques vacíos, aunque no por completo.
Geth no tiene un indicador predefinido para lograr esto, pero puede escribir y luego --preload
archivos .js en geth. Utilizo este enfoque en nuestra red privada para sellar bloques solo cuando hay nuevas transacciones.
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 privadaif(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:0
el archivo genesis.json para lograr este comportamiento de sellado.
Jaydeep Chauhan