我刚开始使用solidity,我已经使用truffle编译并部署代码到ganache,一切正常,我可以调用代码中的其他函数,但是有些函数只有所有者才能访问,代码似乎使用 keccak256 来取回调用函数的地址并确定是否允许调用者地址,我尝试使用此网站对我的 eth 地址进行哈希处理:
https://emn178.github.io/online-tools/keccak_256.html
然后在再次重新编译之前将哈希添加到代码中,但调用所有者函数仍然会抛出此错误:
“错误:处理事务时出现 VM 异常:还原”
我究竟做错了什么 ?
这是带有原始哈希的代码。
modifier onlyOwner(){
address _customerAddress = msg.sender;
require(owners[keccak256(_customerAddress)]);
_;
}
// owners list
mapping(bytes32 => bool) public owners;
function PetShop()
public
{
// add owners here
owners[0x66e62cf7a807daaf3e42f7af3befe7b2416a79ba5348820245a69fe701f80eb4] = true;
}
/*---------- Owner ONLY FUNCTIONS ----------*/
function disableDogs()
onlyOwner()
public
{
onlyDogs = false;
}
/*-----replace owner ------*/
function setOwner(bytes32 _identifier, bool _status)
onlyOwner()
public
{
owners[_identifier] = _status;
}
/*-----set price for pet adoption----*/
function setAdoptionRequirement(uint256 _amountOfTokens)
onlyOwner()
public
{
AdoptionRequirement = _amountOfTokens;
}