Solidity Basics II

Learn about predefined global variables, functions, control structures, error handling, events, and function modifiers.

Predefined global variables

A small number of global objects are accessible to a contract during execution in the EVM. These objects are msg, block, and tx. The values of these objects are read-only and cannot be modified within the smart contract.

The msg object

The msg object contains several fields that provide information about the current transaction call. Here’s a list of the most commonly used fields:

  • msg.sender: The address that initiated the contract call (If the contract is called directly by an EOA transaction, then this is the address of the EOA account, but otherwise, it’s a contract address).

  • msg.value: The value (in Wei) of Ether sent with the transaction.

  • msg.data: The data payload for calls to a CA.

  • msg.sig: It’s the function selector.

The block object

The block object contains several fields that provide information about the current block. Here’s a list of the most commonly used fields:

  • block.number: The number of the current block.

  • block.timestamp: The timestamp of the current block, calculated in seconds since the Unix epoch.

  • block.gaslimit: The maximum amount of gas the current block can contain.

  • block.coinbase: The address of the miner that mined the current block.

The tx object

The tx object contains transaction related information:

  • tx.gasprice: The gas price specified by the sender of the transaction.

  • tx.origin: The original sender of the transaction.

Functions

In Solidity, functions are used to perform specific tasks or operations within a smart contract. Functions can be defined with specific input parameters and may return a value. The syntax to declare a function in Solidity is as follows:

function FunctionName([parameters])
{public|private|internal|external}
[pure|constant|view|payable]
[modifiers]
[returns (return types)]
  • FunctionName: The name of the function.

  • parameters: Optional input parameters in the form of (parameter1 type1, parameter2 type2, ...) where parameter1, parameter2, etc. are the names of the parameters, and type1, type2, etc. are the data types of the parameters. When a function is called, the provided input ...