¿Puede una llamada de mensaje cambiar el precio del gas de la transacción original?

¿Puede una llamada de mensaje cambiar el precio del gas de la transacción original?

Los EOA pueden llamar a una función de contrato por medio de una transacción. Sin embargo, los contratos pueden llamarse entre sí en el entorno de ejecución.

¿Pueden las llamadas de mensajes cambiar el límite de gasolina y el precio de la gasolina de la transacción original? Si es así, ¿cómo lo haría en Solidity?

Respuestas (1)

Puede establecer un límite para el gas enviado al próximo contrato, pero no puede cambiar el precio del gas ni gastar en exceso. Es decir, en el momento en que envías gas a otro contrato, estás limitado a la cantidad de gas no gastado que existe en esa etapa de ejecución.

Aquí hay una pequeña sintaxis "por ejemplo":AbstractB(addressB).setX.value(1 ether).gas(10000)();

inspirado por:

¿Cómo especificar gas/valor al hacer una llamada usando contratos abstractos?

Espero eso ayude.

Gracias, entonces, si se establece un límite en la cantidad de gas que puede gastar el próximo contrato, ¿el contrato actual puede gastar el gas no utilizado?
Se devuelve el gas no utilizado. Por defecto, el destinatario recibe todo el gas disponible. La excepción es sendy transferque ahora reciben solo un estipendio de 2300 como defensa de protocolo contra los ataques de rwentrance.
En caso de que no esté claro, siempre que el límite fuera suficiente, el contrato de la persona que llama debería terminar con el mismo saldo neto disponible en el siguiente paso en cualquier caso.
¿Qué pasa si el contrato llamado se queda sin gasolina y fue llamado con, digamos, solo la mitad del combustible restante de la persona que llama? ¿La persona que llama tiene la oportunidad de recuperarse en este caso?
Creo que el error aparecerá y revertirá la transacción: todo falla.