Explicación de la opción de línea de comandos de Geth: targetgaslimit?

He estado tratando de averiguar qué targetgaslimithace exactamente el parámetro para Geth, en el contexto de Private Blockchains.

He visto la siguiente explicación, pero nunca me ayudó: "El límite de gas objetivo establece el piso de gas objetivo artificial para los bloques a minar (predeterminado: 4712388)".

¿Alguien podría dar otra explicación, por favor? ¿He buscado pero no he podido encontrar ninguno bueno en línea?

Respuestas (2)

Descargo de responsabilidad: asumo una comprensión de lo que es el gas.

El límite de gas es la cantidad máxima de gas que se puede gastar durante una transacción de Ethereum. Este número no es fijo: al principio de los días de Ethereum, el límite de gas era mucho más bajo de lo que es hoy.

Hay un cálculo que hacen los nodos de Ethereum para ajustar el límite de gas después de cada transacción, según el uso en el bloque actual. Según la documentación en el código: https://github.com/ethereum/go-ethereum/blob/e29c2e43640445e743bb69ab48d6c862d3e964d9/core/block_validator.go#L108

    strategy: gasLimit of block-to-mine is set based on parent's
    gasUsed value.  if parentGasUsed > parentGasLimit * (2/3) then we
    increase it, otherwise lower it (or leave it unchanged if it's right
    at that usage) the amount increased/decreased depends on how far away
    from parentGasLimit * (2/3) parentGasUsed is.

Si bien esto responde técnicamente a su pregunta, aún deja abierta la pregunta de por qué: el límite de gas está ahí para proteger la red de los scripts que se ejecutan desenfrenadamente. La forma en que lo hace es mirar el uso actual y llamarlo como línea de base.

En las cadenas de bloques privadas, no está expuesto a tanto riesgo (presumiblemente conoce a todos los actores en su red) y es posible que no tenga necesariamente una línea de base. Además, es posible que desee tener un límite de gas mucho mayor que el valor que obtendría al calcular según el uso actual. Esta bandera le permite hacerlo.

targetgaslimites el límite de gas para cada bloque. Por ejemplo, si lo configura en 8,000,000 (el valor actual en la red principal en este momento), un minero podría aceptar tantas transacciones como pueda cuyas gasLimitsumas totales sean <= 8,000,000.

Los mineros tienen la capacidad de ajustar este valor con el tiempo según el estado de la red. Por ejemplo, Vitalik sugirió a los mineros que se ejecutaran --targetgaslimit 2000000durante un período el año pasado debido a los ataques de spam (aumentar el probablementetargetgaslimit habría permitido el paso de más transacciones legítimas).

Sin embargo, tenga cuidado al usar esto, como señala Péter Szilágyi aquí , "el límite solo puede cambiar con una cierta cantidad entre bloques. Si el cambio es mayor, el bloque no se acepta". Puede encontrarse con problemas como este que son difíciles de depurar en su cadena privada.