我有一个投票合同,该合同需要知道自投票开始以来其所投票的目标合同是否已更改。最好的方法是什么?
我可能只检查目标合同中的每个变量,但这将是乏味的并且仅针对该合同。
我目前的策略是存储目标合约数据的哈希值,并在每次调用合约时检查是否得到该值,以确保哈希值没有改变。我认为这是一个不错的策略,但目前哈希值始终不匹配,导致我的所有功能都中止了。下面是相关代码。
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框架,尽管我认为这不重要。我认为我的问题是我不只是对状态数据进行哈希处理,但是我不确定如何将其分离出来。任何帮助将不胜感激。