Variables, Consts & Immutable
Variables
There are 3 types of variables in Solidity:
local
Declared inside a function.
Not stored on the blockchain.
state
Declared outside a function.
Stored on the blockchain.
global
Provides information about the blockchain.
Example - Variables
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
contract Variables {
// State variables are stored on the blockchain.
string public text = "Hello";
uint public num = 123;
function doSomething() public {
// Local variables are not saved to the blockchain.
uint i = 456;
// Here are some global variables
uint timestamp = block.timestamp; // Current block timestamp
address sender = msg.sender; // address of the caller
}
}
Constants
Constants are variables that cannot be modified
Their value is hard coded into the bytecode of the contract
Using constants can save gas cost
Example - Constants
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
contract Constants {
// coding convention to uppercase constant variables
address public constant MY_ADDRESS = 0x777788889999AaAAbBbbCcccddDdeeeEfFFfCcCc;
uint public constant MY_UINT = 123;
}
Immutable
Immutable variables are like constants
Values of immutable variables can be set inside the
constructor
but cannot be modified afterwards
Example - Immutable
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
contract Immutable {
// coding convention to uppercase constant variables
address public immutable MY_ADDRESS;
uint public immutable MY_UINT;
constructor(uint _myUint) {
MY_ADDRESS = msg.sender;
MY_UINT = _myUint;
}
}
Last updated