Límite de gas excedido en cadena privada

Actualmente estoy ejecutando una cadena ethereum privada con 2 nodos. Mi dirección de coinbase en el nodo principal tiene mucho éter, así que fui a hacer una transacción pero obtuve el error "Límite de gas excedido". Me di cuenta de que el límite de gas se estableció en 5000, que es demasiado bajo para realizar una transacción, así que fui al archivo genesis.json personalizado y aumenté el límite a "0xC350" o 50000. A pesar de esto, el límite solo se movió a 5003. Tengo No tengo idea de por qué hace esto y he reemplazado la cifra con otros números más grandes, pero solo logra llegar a 5003 en lugar del 5000 predeterminado. Cualquier ayuda sería muy apreciada.

Aquí está mi archivo Genesis.json:

{
"nonce": "0x0000000000000042",
"timestamp": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x0",
"gasLimit": "0xC350",
"difficulty": "0x400",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x3333333333333333333333333333333333333333",
"alloc":
{ 
    "0xcf117e46aa225864ed1d0dd7e99b8b006abe3410":
    { "balance": "10000000000000000000000000" } 
}

}

Estoy usando Geth.

¿Está utilizando el archivo genesis.json mientras inicia geth?
Estoy ejecutando el archivo de génesis personalizado desde arriba, aquí está el comando: geth --datadir ~/.ethereum_private init ./customGenesis.json

Respuestas (3)

No cambie el archivo de génesis, ya que cambia la dinámica de la cadena de bloques. Geth tiene una --targetgaslimitbandera que hará que el minero converja hacia un número específico opuesto al valor codificado.

Cada bloque tiene un límite de gas que está contenido dentro del propio bloque. Este límite solo puede cambiar con una cierta cantidad entre bloques (límite anterior/1024 para ser precisos). Si el cambio es mayor, el bloque ya no se acepta.

Asegúrese de no solo configurar --targetgaslimitsino también comenzar a minar --minesu red privada. Esto moverá lentamente el límite de gas del bloque hacia el límite de gas objetivo especificado y verá cómo el límite de gas aumenta en cada bloque.

También tenga en cuenta que el indicador de límite de gas objetivo se introdujo en geth 1.4.x, así que asegúrese de tener un cliente muy reciente.

Vea también esta excelente respuesta .

He usado la guía Cómo ejecutar varias instancias de Geth en una cadena de bloques de Ethereum privada . Y puede usar más de 1,000,000 de gas.

{
"nonce": "0xdeadbeefdeadbeef",
"timestamp": "0x00",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x686f727365",
"gasLimit": "0x8000000",
"difficulty": "0x0400",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x3333333333333333333333333333333333333333",
"alloc": {
}
}

Las nuevas versiones de geth no permiten modificar el bloque de génesis una vez que se ha iniciado. Tienes que restablecer tu directorio de datos y empezar de nuevo.

No necesita cambiar el archivo de génesis. Es solo para inicializar el nodo ethereum. Debe verificar el último bloque con el eth.getBlock("latest")comando y allí obtendrá el archivo gasLimit. Aumenta a medida que aumenta el bloque en la red. Siempre asegúrese de que su límite de gas de transacción debe ser menor que esto.