I have read that msg.sender is the address of the person interacting with the blockchain. Does it mean a wallet address ? Do we always specify an address when we interact with contract i.e. deploy as well as web3.js calls ?
Also, the address is publicly known, so is there a role of a private key/json file stored which only a owner of a wallet have ? (Public/Private key communication like ssh).