Visibility in Solidity
Functions and state variables have to declare whether they are accessible by other contracts or externally.
Functions can be declared as
Visibility | Description |
---|---|
public | Any contract and account can call |
private | Accessible only inside the contract that defines the function |
internal | Accessible only inside contract that inherits an internal function |
external | Accessible only other contracts and accounts can call |
State variables can be declared as public, private, or internal but not external.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.15;
contract ViewAndPure {
uint public gamePoints = 0;
// No modification or reading from the state
function checkRewards(uint multiplier, uint points) public pure returns (uint) {
return multiplier * points;
}
// No modification but can read from the state
function addGamePoints(uint newScore) public view returns (uint) {
return gamePoints + newScore;
}
}
If you call
view
orpure
functions externally, you do not pay a gas fee.