Global Variables

Block and Transaction Properties

  • blockhash(uint blockNumber) returns (bytes32): hash of the given block when blocknumber is one of the 256 most recent blocks; otherwise returns zero

  • block.basefee (uint): current block’s base fee

  • block.chainid (uint): current chain id

  • block.coinbase (address payable): current block miner’s address

  • block.gaslimit (uint): current block gaslimit

  • block.number (uint): current block number

  • block.timestamp (uint): current block timestamp as seconds since unix epoch

  • gasleft() returns (uint256): remaining gas

  • msg.data (bytes calldata): complete calldata

  • msg.sender (address): sender of the message (current call)

  • msg.sig (bytes4): first four bytes of the calldata (i.e. function identifier)

  • msg.value (uint): number of wei sent with the message

  • tx.gasprice (uint): gas price of the transaction

  • tx.origin (address): sender of the transaction (full call chain)

Error handling

  • assert(bool condition): causes a Panic error and thus state change reversion if the condition is not met - to be used for internal errors.

  • require(bool condition): reverts if the condition is not met - to be used for errors in inputs or external components.

  • require(bool condition, string memory message): reverts if the condition is not met - to be used for errors in inputs or external components. Also provides an error message.

  • revert(): abort execution and revert state changes

  • revert(string memory reason): abort execution and revert state changes, providing an explanatory string

Members of Address Types

  • <address>.balance (uint256): balance of the Address in Wei

  • <address>.code (bytes memory): code at the Address (can be empty)

  • <address>.codehash (bytes32): the codehash of the Address

  • <address payable>.transfer(uint256 amount): send given amount of Wei to Address, reverts on failure, forwards 2300 gas stipend, not adjustable

  • <address payable>.send(uint256 amount) returns (bool): send given amount of Wei to Address, returns false on failure, forwards 2300 gas stipend, not adjustable

  • <address>.call(bytes memory) returns (bool, bytes memory): issue low-level CALL with the given payload, returns success condition and return data, forwards all available gas, adjustable

  • <address>.delegatecall(bytes memory) returns (bool, bytes memory): issue low-level DELEGATECALL with the given payload, returns success condition and return data, forwards all available gas, adjustable

  • <address>.staticcall(bytes memory) returns (bool, bytes memory): issue low-level STATICCALL with the given payload, returns success condition and return data, forwards all available gas, adjustable

  • this: The current contract, explicitly convertible to Address

  • super: A contract one level higher in the inheritance hierarchy

  • selfdestruct(address payable recipient): Destroy the current contract, sending its funds to the given Address and end execution. Note that selfdestruct has some peculiarities inherited from the EVM:

    • the receiving contract’s receive function is not executed.

    • the contract is only really destroyed at the end of the transaction and revert s might β€œundo” the destruction.

Last updated