Solidity theorytheory 0/50 · 0%
Types · easy

3. Variables and visibility

State, local and global variables, and who can read them.

State variables live in storage and persist between calls. Local variables live only for the duration of a call. Global variables such as `msg.sender`, `msg.value` and `block.timestamp` describe the current transaction and block.

Visibility on state variables controls Solidity-level access: `public` (auto-generates a getter), `internal` (this contract and children, the default) and `private` (this contract only).

uint256 public totalStaked;   // getter generated
uint256 internal cachedRate;
address private _admin;

`private` is not secrecy: all storage is readable off chain. Never store secrets in a contract.

Check your understanding

  1. 1. What does `public` add to a state variable?

  2. 2. Can anyone read a `private` variable's value?

  3. 3. Which is the default visibility for state variables?