Ethereum 我是否可以避免以太坊智能合同中的验证,该合同是用solidity编写的,用于气体优化?

Ethereum 我是否可以避免以太坊智能合同中的验证,该合同是用solidity编写的,用于气体优化?,ethereum,solidity,smartcontracts,Ethereum,Solidity,Smartcontracts,在某些情况下,输入验证只是为了确保用户的输入在正确的范围内,否则将导致运行时错误。 为什么我要费心验证输入并增加适当用户(大多数用户)的计算成本 为什么我不应该让错误的输入导致运行时错误,而不进行验证以防止它在未知情的情况下发生 我所说的验证是指:require()、assert()、revert()您之所以要使用您所说的验证,有几个原因。下面我概述了其中的一些 1) 确保您的合同不会进入意外状态。预测用户应该如何与契约交互要比预测契约如何被误用容易得多,因此避免意外状态的检查有助于限制代码路径

在某些情况下,输入验证只是为了确保用户的输入在正确的范围内,否则将导致运行时错误。 为什么我要费心验证输入并增加适当用户(大多数用户)的计算成本 为什么我不应该让错误的输入导致运行时错误,而不进行验证以防止它在未知情的情况下发生


我所说的验证是指:require()、assert()、revert()

您之所以要使用您所说的验证,有几个原因。下面我概述了其中的一些

1) 确保您的合同不会进入意外状态。预测用户应该如何与契约交互要比预测契约如何被误用容易得多,因此避免意外状态的检查有助于限制代码路径和由此产生的攻击向量

2) 调试并向用户提供反馈。如果合同代码有问题,使用require()可以向合同用户(通常是前端代码)提供有用的反馈

3) 与误用和/或重新进入相关的潜在成本相比,这些操作的成本相当小