solidity[4]-pure与view剖析
pure与view代码例子
如下的一段solidity智能合约中,只要有了pure与view修饰符的函数,那么调用函数就不会消耗gas。
而没有pure与view修饰的函数,如下面的change就会消耗gas。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
pragma solidity ^0.4.23; contract HelloWorld{ string public name = "jonson"; function getName() public view returns(string){ return name; } function changeName(string _name) public{ name = _name; } function testPure(uint a,uint b) public pure returns(uint){ return a+b; } } |
pure与view使用场景
- view: 可以自由调用,因为它只是“查看”区块链的状态而不改变它
- pure: 也可以自由调用,既不读取也不写入区块链
pure与view原理
- pure:不读取更不修改区块上的变量,使用本机的CPU资源计算我们的函数。所以不消耗任何的资源这是很容易的理解的。
- view: 但是view既然要读取区块链上的值,为什么也不用消耗g