[英]Is it possible to call contract function from another contract without consuming Gas?
[英]Is it possible to modify a variable value from another contract?
将状态变量声明为public
生成公共getter,但不会生成setter。 如果你想要另一个合同来修改你的合约的状态变量,你必须自己编写一个函数来做到这一点:
contract A {
uint public target;
function setTarget(uint _target) public {
target = _target;
}
}
contract B {
A a = Test(0x123abc...); // address of deployed A
function editA() public {
a.setTarget(1);
}
}
不,您无法直接编辑合同的变量。 那将是一场安全噩梦。
您只能通过接口使用外部合同提供的公共/外部功能。 如果该函数本身是一个setter
并允许您更改变量,那么它才有可能。
合同A:
contract A {
uint myVariable = 1
function setMyVariable(uint _newVar) public {
myVariable = _newVar;
}
}
合同B:
interface A {
function getMyVariable() view public returns(uint);
}
function setMyVariable(uint _newVar) public onlyOwner {
A a = A([CONTRACT A ADDRESS HERE])
a.setMyVariable(_newVar);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.