在有些情况下,输入验证只是为了确保用户输入在适当的范围内,如果不是这样,就会导致运行时错误。为什么我要费心验证输入,并增加正常用户(大多数)的计算成本?为什么不让错误的输入导致运行时错误,而不进行验证,以防止它在不知情的情况下发生?
我所说的验证是指: require(),assert(),revert()
发布于 2019-02-06 03:06:24
有几个原因可以解释为什么你想要使用你所说的验证。下面我已经概述了其中的一些。
1)确保您的合同不会进入意外状态。预测用户应该如何与约定交互要比预测如何误用约定容易得多,因此,避免意外状态的检查有助于限制代码路径和由此产生的攻击向量。
2)调试并反馈给用户。如果您的合同代码有问题,使用require()可以为合同的用户(通常是前端代码)提供有用的反馈。
3)与误用和/或再入相关的潜在成本相比,这些操作的成本相当小。
https://stackoverflow.com/questions/54493408
复制相似问题