通过字节从新的智能合约调用已部署的智能合约功能。?

Call deployed smart contract function from new smart contract via bytes.?

根据 solidity 文档 page

我创建并部署了以下合约:

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 {}
}

地址:'0x0aaaaaaaaaaaaaaaaaaaaaaaaaax'

现在我已经创建了另一个合约来执行 baz 方法。

pragma solidity ^0.4.16;

contract ResultUtil {
  function generateResult(address _foo, bytes _data) public {
   _foo.call(_data);   // call baz method.
  }
}

执行函数generateresult(“ 0x0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX”

函数执行成功但结果值为0

您将函数标记为 pure,这意味着它不会改变状态。您不能在一种方法中更改合同状态和 return 值。使用一种方法更改合约的状态(未标记为 pureview),然后使用不同的函数 return 值(将是 pureview).

有关 pureview 函数的更多信息,请参阅 Solidity documentation