感觉两者的作用差不多,有没有最佳实践可以指导分别什么场景下用哪种?
比如说检验调用者是不是 owner ,下面两者表现上有什么差异吗?可能消耗 quota 不太一样?
solidity 中的 throw 会抛个啥玩意儿出来?
modifier onlyOwner(){
if (msg.sender != owner) {
throw;
}
_;
}
function updateValue(uint a) onlyOwner {
a = a+1;
}
function update(uint a) {
require(msg.sender == owner);
a = a+1;
}
另外,如果为了监听链上合约执行的一些事件,那是不是还是挨个 if 判断然后 emit 一个 event 出来比较好?
function update(uint a) {
if(msg.sender != owner) {
emit SomeEvent("朋友,不是你的合约,别调了");
return;
}
a = a+1;
}