1. 程式人生 > >solidity智慧合約[4]-pure與view剖析

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既然要讀取區塊鏈上的值,為什麼也不用消耗gas呢?