我刚刚开始使用可靠性,我已经使用松露编译并将代码部署到ganache,一切正常,我可以调用代码中的其他函数,但是有一些只有所有者才能访问的函数,代码似乎使用keccak256取回调用函数的地址并确定是否允许调用者地址,我试图使用此网站散列我的eth地址:
https://emn178.github.io/online-tools/keccak_256.html
然后在重新编译之前将哈希值添加到代码中,但调用owner函数仍然会抛出此错误:
“错误:处理事务时出现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;
}
答案 0 :(得分:0)
Solidity中的keccak256实现以不同方式存储数据。
keccak256(...)返回(bytes32): 计算(紧密压缩)参数的以太网-SHA-3(Keccak-256)哈希
创建合同时,请自行使用此功能:
function PetShop() public {
// add owners here
owners[keccak256(msg.sender)] = true;
}