如何确定合同是否更改了状态?

时间:2019-01-29 19:27:36

标签: solidity

我有一个投票合同,该合同需要知道自投票开始以来其所投票的目标合同是否已更改。最好的方法是什么?

我可能只检查目标合同中的每个变量,但这将是乏味的并且仅针对该合同。

我目前的策略是存储目标合约数据的哈希值,并在每次调用合约时检查是否得到该值,以确保哈希值没有改变。我认为这是一个不错的策略,但目前哈希值始终不匹配,导致我的所有功能都中止了。下面是相关代码。

contract Confirmation_prop is Proposal {

  //used to ensure home has not changed state
  bytes32 home_hash;

  constructor() public {
    home = Home(msg.sender);
    home_hash = sha256(abi.encode(home));
  }

  //ensure home contract has not changed state
  //if so, decide contract in the negative
  modifier unchanged {
    bytes32 _home_hash = sha256(abi.encode(home));

    if(home_hash != _home_hash){
      result = Result.Denied;
      finalizeResults();
    }else
      _;
  }

如果有帮助,我正在使用Truffle框架,尽管我认为这不重要。我认为我的问题是我不只是对状态数据进行哈希处理,但是我不确定如何将其分离出来。任何帮助将不胜感激。

0 个答案:

没有答案