El costo de transacción excede el límite de gas actual. (Toma II)

Estoy trabajando en una cadena de bloques privada usando Parity. Cambié el parámetro gasLimit para leer "4712388" en lugar del valor predeterminado (0x1388) y cuando intento migrar un contrato con trufa, aparece este error:

[-32010] El costo de transacción excede el límite de gas actual. Límite: 4700036, obtenido: 4712388. Intente disminuir el suministro de gas.

P1: ¿De dónde viene este valor 4700036? Se específico. ¿Qué parámetro de especificación de cadena real maneja esto?

P2: ¿Puede confirmar que esto se tomó de un lugar diferente al parámetro gasLimit, que está configurado en 4712388?

EDITAR: Semanas, más tarde, tengo un nuevo problema. Es posible que esto se relacione con mi otra pregunta:

¿Por qué gasLimit se leería como 4,700,036 en lugar de 4,712,388?

Respuestas (1)

El archivo genesis.json proporciona el límite de gas inicial para el primer bloque de la cadena, pero esto se puede ajustar un poco con cada bloque. Por defecto, Parity se ajusta gradualmente de acuerdo con la cantidad de gas que realmente se usa en las transacciones, por lo que si tiene una cadena privada que apenas se usa, seguirá disminuyendo.

Para evitar que caiga por debajo de 4712388, ejecute Parity con --gas-floor-target 4712388.

Este error ocurre en la primera transacción y aún ocurre con el parámetro "--gas-floor-target 4712388" en la línea de comando. Pero gracias por intentarlo.
¿Qué ve cuando se conecta a su cadena de bloques a través de RPC y mira el bloque actual con web3.eth.getBlock('latest')? Debería ver el límite de gas del bloque en el gasLimitparámetro. Compare esto con un bloque anterior y vea si está cambiando. Además, intente detener su cadena de bloques y asegúrese de que truffle le dé un error diferente, para demostrar que truffle se está conectando a la cadena de bloques a la que cree que se está conectando.
Recibo un error diferente si Parity no se está ejecutando: "No se pudo conectar con su cliente Ethereum". Cuando uso web3 obtengo lo siguiente: > web3.eth.getBlock('latest'); Promesa { _bitField: 0, _fulfillmentHandler0: indefinido, _rejectionHandler0: indefinido, _promise0: indefinido, _receiver0: indefinido } No se ve bien, pero no sé qué significa ninguna de esas cosas, así que no estoy seguro de por dónde empezar.
He estado leyendo sobre "--gas-floor-target" y parece que es un comando para un nodo Parity que ejecuta un minero. ¿Es eso correcto?