Any transaction happening on the blockchain obviously has an associated sender address, which solidity stores in msg.sender.
However, if I have a view function which can be used to read the state from anywhere, is it still guaranteed that msg.sender exists? Or could my view function have been used from an outside call that is not associated to an ethereum address?
Furthermore, does that mean that all users of my smart contract have to have their own eth address, or can they use my view functions without one?
0x0000000000000000000000000000000000000000
otherwise it will be the callers address.