In Solidity, there are several global variables available that provide information about the blockchain and the contract itself. These include:
These global variables can be used to write smart contracts that interact with the blockchain and other contracts in various ways. For example, msg.sender can be used to verify that a transaction was sent from a specific address, and now can be used to add a time-based condition to a contract.
Prior to version 0.5.0, Solidity allowed address members to be accessed by a contract instance, for example this.balance. This is now forbidden and an explicit conversion to address must be done: address(this).balance.