函数可以被声明为pure、view,两者的作用可见下图。


函数类型



作用



pure



承诺不读取或修改状态。



view



保证不修改状态。


pure:不读取更不修改区块上的变量,使用本机的CPU资源计算我们的函数。所以不消耗任何的资源这是很容易的理解的。

view: 但是view既然要读取区块链上的值,为什么也不用消耗gas呢??

其实很简单,因为作为一个全节点来说,会同步保存所有的信息,保存在本地中。

那么我们要查看区块链上的资源,同样可以直接在一个全节点之上查询数据即可。

我不需要全世界的节点都知道。都去同时的处理这笔事务。我也不需要将调用这笔函数的信息记录在区块链上。

所以view仍然不消耗gas。

调用pure或者view修饰的solidity函数的交易,没有进入交易池,就被执行了,不上链。

所以:pure view 交易执行之后不会生成区块