像OpenZeppelin这样的项目是否与使用标准一致性的额外检查有什么不同?如果一个编码器只是在每个函数调用的前面加上类似的布尔检查,那么安全性会降低吗?契约(或多sig选项)的所有者将是唯一能够更改布尔值的人。
如果我遗漏了什么,请解释。我同意,在简单易懂的契约基础上构建所有这些的安全操作系统是个好主意,我只想确定OpenZeppelin操作系统没有做更多的事情。
发布于 2018-03-18 22:45:10
你的说法是正确的。除了设计的修饰符有较小的潜在用途外,没有功能上的差别。
在功能上,它们的行为方式与约束相同,即修饰符只能使用发送给函数的参数,并且只能更改约定存储。内联函数调用,也可以在函数内部传递内存变量,并且可以更直接地影响函数的代码逻辑。
修饰符也只能在函数体执行之前或之后一次性执行它的逻辑--作为内联函数调用,可以在函数执行期间的任何点执行。
为了可读性和组织性而存在修饰符。如果许多函数具有相同的执行要求(例如,一个isOwner修饰符),或者重复使用相同的模式,具有相同的准备或清理过程,等等--它提供了一种干净的方法来实现这些需求,而不把函数体弄乱,因此它只能包含该函数特有的内容。
这也使得只看函数的声明/签名就可以很容易地确定一个函数正在实现的模式:
function updateBalance(uint newBal) onlyOwner onlyIfUnpaused {
只要查看函数声明,就可以清楚地告诉您修饰符模式继承的特性:只有所有者才能调用它,而且只有在合同当前未暂停的情况下才能调用。
https://ethereum.stackexchange.com/questions/43133
复制相似问题