在Solidity中同步调用外部合同功能

时间:2018-07-03 19:21:11

标签: synchronization blockchain ethereum solidity

我有两个Solidity合同,其中合同Caller依赖于第二个合同Callee。合同Callee提供了一种公共视图功能,该功能根据一些内部规则检查字符串(例如密码)的有效性。 Caller需要通过调用Callee来检查其自身函数中的字符串,然后才能进行进一步处理。此外,Caller需要使用Callee来调用delegatecall的功能,因为内部有效性检查会考虑调用地址。

contract Caller {

  function doSomething(string _text, address _callee) public {
     bool valid = bool(_callee.delegatecall(
                          bytes4(keccak256("check(string _text)")), _text)
                  );

     require(valid == true);
     /* further process if text is valid */
  }
}

contract Callee {

  function check(string _text) public view returns(bool){
    /* validity check */
    return true;
  }
}

此代码的问题在于,对函数check的调用似乎是异步的,因此函数require中的doSomething语句将始终失败。这是delegatecall的问题吗?有没有办法同步调用外部函数?

0 个答案:

没有答案