之前在进行节点升级降级操作的时候,当不是管理员发送的交易,最终能够得到Receipt且无错误信息。
而查看系统合约中,升级合约如下:
/// @notice Approve the new node
/// The modifier of oneOperate will be deprecated!
/// @param _node The node to be approved
/// @return true if successed, otherwise false
function approveNode(address _node)
public
onlyAdmin
oneOperate
onlyClose(_node)
hasPermission(builtInPermissions[15])
returns (bool)
{
status[_node] = NodeStatus.Start;
block_op[block.number] = true;
nodes.push(_node);
emit ApproveNode(_node);
return true;
}
对是否是管理员的判断为:
modifier onlyAdmin {
if (admin.isAdmin(msg.sender))
_;
else return;
}
其他权限或者用户判断的方式为:
modifier onlyStart(address _node) {
if (NodeStatus.Start == status[_node])
_;
else {
emit ErrorLog(ErrorType.NotStart, “node does not start”);
return;
}
}
或者:
modifier onlySeller() {
require(
msg.sender == seller,
“Only seller can call this.”
);
_;
}
这样的话就可以知道是否错误。