Solidity

為什麼這個函式不需要Gas來執行?

  • January 25, 2019
pragma solidity ^0.4.17;


contract Lottery{

   address public manager; 
   address[] public players;

   function Lottery() public {
       manager = msg.sender;

   }


   function enter() public payable{
       require (msg.value > 0.01 ether);
       players.push(msg.sender);
   }


   function random() public view returns (uint){
       return uint(keccak256(block.difficulty, now, players));
   }

}

我在 Rinkeby 測試網上部署後執行了隨機函式,但沒有扣除乙太幣作為 GasFee。如果我錯了,請糾正我,但隨機函式正在計算 Psudorandom 函式,它涉及計算。它是否需要氣體來執行?

一個猜測:任何不改變狀態的視圖函式都不需要Gas?

正確的。

客戶端可以選擇,但大多數客戶端將以只讀方式呼叫該函式,因為它不會更改狀態,因此網路沒有任何東西需要驗證。

更多細節:何時使用“View”和“Pure”代替“Constant”

希望能幫助到你。

引用自:https://ethereum.stackexchange.com/questions/66153