Tengo este fragmento de código en Remix-IDE + Metamask, ambos en las versiones más recientes (pero también probé sin Remix-IDE):
pragma solidity ^0.4.10;
contract Foo {
bool public lastVal = false;
function fooFunc(bool x) public returns (bool) {
lastVal = x;
return !x;
}
}
contract Bar {
bool public barBool = false;
Foo myFoo;
function Bar(address _myFooAddr) public {
myFoo = Foo(_myFooAddr);
}
function barFunc() public {
barBool = myFoo.fooFunc(barBool);
}
}
Cada vez que llamo a barFunc() Remix-IDE se niega a ejecutarlo porque dice que la transacción seguramente fallará. Si obligo a ejecutar la transacción, en realidad falla con un REVERT.
De todos modos, no veo ninguna razón aparente de por qué esto debería fallar.
Muchas gracias por tu ayuda.
Copié y pegué su código para remezclar y elegí JavaScripit VM para verificar si el código está bien. Primero inicialicé el contrato de Foo y luego el contrato de Bar proporcionando la dirección de la instancia de Foo como argumento para el constructor y todo funciona para mí como debería (al menos según tengo entendido). Así que el código en sí no es un problema. ¿Puede haber algo mal con la comunicación entre el remix y MetaMask, tal vez?
usuario19510
Foo
contrato implementado y asegúrese de incluir la dirección entre comillas dobles.Cristiano París