- a state variable is any variable declared within the smart contract and not public
- stays with the smart contract and live forever on the blockchain as bytecode
- the VM can update and change state, which can occur via functions
- a local variable is any variable declared within a function: they live and breathe inside the function and are not part of the contract's state
- global variables are variables inside `block` and `msg` objects
- smart contract has access to global variables because these variables exist on the blockchain
-`uint256 time = block.timestamp; // state variable saving a global variable`
-`address senderAddress = msg.sender;`
- more chatter on variable access: you can access state vars in functions, parent doesn't necessarily always have access inside a function unless it's being returned
- sometimes better to start coding, finding variable access is a feel thing too (according to this video lol)
- smart contracts can access some of other contracts' variables
- when you have one smart contract inheriting another, you use the `is` keyword
- inheritance is done by merging two smart contracts together at compilation time
- child contracts will not have access to `private` variables of the parent contract, but it will have access to `internal` ones