假设我不知道合同A,我只知道它的地址,而且它有一个setNumber方法,我想从合同B调用它。
我想在合同A中调用函数setNumber,使用合同B中的callsetNumbercontractA方法。
setcontractcallsetNumbercontractA它会失败的,我不明白为什么。
pragma solidity 0.5.12;
contract A {
event lmao (string);
uint public x;
function hello () public {
emit lmao ('YES');
}
function setNumber (uint n) public {
x=n;
}
}
pragma solidity 0.5.12;
contract B{
address public to;
function callcontractA () public {
to.call(abi.encodeWithSignature("hello()"));
}
function setcontract (address x) public{
to = x;
}
function callsetNumbercontractA () public {
// I wanna set var x (in A) to 10
to.call(abi.encodeWithSignature("setNumber(uint)",10));
}
}Ropsten交易:
发布于 2020-03-31 17:18:25
你的问题中没有理由不使用这一点:
contract IA {
function setNumber(uint n) public;
}
contract B {
IA public a;
function setContract(IA _a) public {
a = _a;
}
function setNumber() public {
a.setNumber(10);
}
}https://ethereum.stackexchange.com/questions/82032
复制相似问题