Supongamos que hago una transacción a una función de contrato con mi cuenta externa, entonces tengo que pagar gasolina por esta transacción.
Si la función dentro de los contratos hace ahora una transacción por su cuenta para escribir algo a otros contratos, ¿quién está pagando entonces por esto?
Estaba probando esto en mi truffle develop
entorno y parece que mi cuenta acaba de pagar la transacción del primer contrato, no la segunda transacción.
Tampoco envié Ether a los primeros contratos anteriores. Pero la segunda transacción también funcionó.
editar:
El contrato hace una transacción simple, algo como esto:
contract First {
Second secondContract;
uint test;
function setSomething(uint _testValue) external {
secondContract.set(_testValue); //also set a uint within contract 2
test = _testValue;
}
}
Si agrego la siguiente línea en mi prueba, el resultado es 0 Ether porque nunca envío Ether a este contrato.
console.log(`Contract balance: ${web3.fromWei(web3.eth.getBalance(firstContact.address))}`);
La prueba aún funciona y si leo el valor del segundo contrato también obtengo el valor correcto.
El gas consumido por su transacción es el gas total utilizado durante la ejecución de su llamada a Contract A
. Si A realiza una llamada (o una llamada delegada) a otro contrato, el gas consumido por ese también se suma al gas consumido por su transacción.
Si observa el seguimiento de paridad para una de esas transacciones, puede ver los otros contratos invocados y cuánto gas usó la invocación. El costo final de la transacción incluye todo esto.
jaspe
usuario23858
jaspe
usuario23858
jaspe
usuario23858
usuario23858
jaspe