从同一区块的合同中调用外部合同

时间:2017-12-05 21:15:46

标签: ethereum solidity

请检查此代码:

contract Token is StandardToken {  
  function transfer(address _to, uint256 _value)  public returns (bool success) {
      return super.transfer(_to, _value);
    }
}

contract CrowdSale { 
  token = Token(:address)
  function buyToken() payable {
    token.transfer(beneficiary,tokenAmount); // OPERATION A
    anotherAddress.transfer(msg.value); // OPERATION B
  }
}

在上面的示例中,将在同一块中调用OPERATION A和OPERATION B吗?

或者调用buyToken调用token.transfer并等待它被挖掘,然后在第一次挖掘后在下一个块中调用anotherAddress.transfer?

1 个答案:

答案 0 :(得分:1)

我认为你在这里误解了一些概念。块注册事务。

交易是调用方法,部署合同,“移动合同状态”的事实。

简单来说:是的,另一个合同调用的合同将在同一个区块中调用,因为区块不包含指令本身但是交易的结果

为了能够通过逻辑给出事务的结果,整个指令需要在相同的块上处理,否则矿工无法确定事务是否有效然后将其注册到块中。