![](/img/trans.png)
[英]Is it feasible (In terms of gas cost) to call a function of deployed contract from other smart contract on mainnet (ethereum)?
[英]Call deployed smart contract function from new smart contract via bytes.?
根据团结文件页面
我创建并部署了以下合同:
pragma solidity ^0.4.16;
contract Foo {
uint public result;
function bar(bytes3[2]) public pure {}
function baz(uint32 x, bool y) public pure returns (bool r) { result = x; return y; }
function sam(bytes, bool, uint[]) public pure {}
}
地址:'0x0aaaaaaaaaaaaaaaaaaaaaaaaaaaax
现在,我创建了另一个合约来执行baz方法。
pragma solidity ^0.4.16;
contract ResultUtil {
function generateResult(address _foo, bytes _data) public {
_foo.call(_data); // call baz method.
}
}
执行函数generateResult(“ 0x0aaaaaaaaaaaaaaaaaaaaaaaaaaaax”,“ 0xcdcd77c0000000000000000000000000000000000000000000000000000000000000000000000000004500000000000000000000000000000000000000000000000000000000000000000000000000”)
函数成功执行,但结果值仍为0
您将函数标记为pure
函数,这意味着它不会更改状态。 您不能通过一种方法更改合同的状态并返回值。 使用一种方法更改合同的状态(未标记为pure
或view
),然后使用其他函数返回值(将为pure
或view
)。
有关pure
函数和view
函数的更多信息,请参见Solidity文档 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.