web3.eth.SendSignedTransaction - problema de gas

Estoy tratando de enviar una transacción firmada usando web3.eth.sendSignedTransaction(). Todo parece estar funcionando bien para mis otros métodos web3, pero tengo problemas para configurar el gas para esto. Al llamar me sale el mensaje:

"Error: Returned error: Transaction cost exceeds current gas limit. Limit: 5000, got: 47100. Try decreasing supplied gas."

Así que intento configurarlo en 5000 y aparece el siguiente error:

"Error: Returned error: Transaction gas is too low. There is not enough gas to cover minimal cost of the transaction (minimal: 53400, got: 5000). Try increasing supplied gas."

¿Qué podría estar haciendo mal aquí?

Respuestas (1)

Parece que está en una red de prueba privada, necesita incrementar el límite de gas del bloque, actualmente está configurado en 5000 y necesita al menos 47100.

La forma de establecer el límite de gas del bloque depende del cliente que esté utilizando.

  • Geth tiene un --targetgaslimit XXX.

  • Ganache tiene un --gasLimit XXX.

  • La paridad tiene --gas-floor-target=XXX.

En Ethereum, el límite de gas del bloque puede cambiar solo un 10% por bloque. Si quieres saltar de 5k a 50k tienes que generar alrededor de 8 bloques hasta alcanzar el nuevo límite. Si tiene una red de prueba privada, puede editar su archivo de génesis y recrear la cadena de bloques para no tener que esperar hasta que se haya extraído suficiente bloque, pero perderá las transacciones antiguas.

Me enfrento a un problema similar en la red Rinkeby. Obtener "fondos insuficientes para gas * precio + valor" o "excede el límite de gas del bloque" ¿Alguna sugerencia?
O bien no tiene suficiente éter para pagar la implementación, o el gas de implementación de su contrato es demasiado alto. Para el primero, debe solicitar más éter de un faucet, para el segundo, debe reducir su contrato (eliminar algunas funciones, usar otros contratos o una biblioteca).
Gas Estimate shows: 32872 Balance on the account: 1100000 Gwei gas using: 187200 Creo que debería ser más que suficiente.
@Anistark Es mejor si crea una nueva pregunta.