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.