Solidity
為什麼這個函式不需要Gas來執行?
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”
希望能幫助到你。