mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Cheatsheet segregated based on type
This commit is contained in:
parent
e1a9446f87
commit
345d0bcf13
@ -6,12 +6,13 @@ Cheatsheet
|
||||
|
||||
Order of Precedence of Operators
|
||||
================================
|
||||
|
||||
.. include:: types/operator-precedence-table.rst
|
||||
|
||||
.. index:: assert, block, coinbase, difficulty, prevrandao, number, block;number, timestamp, block;timestamp, msg, data, gas, sender, value, gas price, origin, revert, require, keccak256, ripemd160, sha256, ecrecover, addmod, mulmod, cryptography, this, super, selfdestruct, balance, codehash, send
|
||||
.. index:: abi;decode, abi;encode, abi;encodePacked, abi;encodeWithSelector, abi;encodeCall, abi;encodeWithSignature
|
||||
|
||||
Global Variables
|
||||
================
|
||||
ABI Encoding and Decoding Functions
|
||||
===================================
|
||||
|
||||
- ``abi.decode(bytes memory encodedData, (...)) returns (...)``: :ref:`ABI <ABI>`-decodes
|
||||
the provided data. The types are given in parentheses as second argument.
|
||||
@ -25,10 +26,37 @@ Global Variables
|
||||
tuple. Performs a full type-check, ensuring the types match the function signature. Result equals ``abi.encodeWithSelector(functionPointer.selector, (...))``
|
||||
- ``abi.encodeWithSignature(string memory signature, ...) returns (bytes memory)``: Equivalent
|
||||
to ``abi.encodeWithSelector(bytes4(keccak256(bytes(signature))), ...)``
|
||||
|
||||
.. index:: bytes;concat, string;concat
|
||||
|
||||
Members of ``bytes`` and ``string``
|
||||
====================================
|
||||
|
||||
- ``bytes.concat(...) returns (bytes memory)``: :ref:`Concatenates variable number of
|
||||
arguments to one byte array<bytes-concat>`
|
||||
|
||||
- ``string.concat(...) returns (string memory)``: :ref:`Concatenates variable number of
|
||||
arguments to one string array<string-concat>`
|
||||
|
||||
.. index:: address;balance, address;codehash, address;send, address;code, address;transfer
|
||||
|
||||
Members of ``address``
|
||||
======================
|
||||
|
||||
- ``<address>.balance`` (``uint256``): balance of the :ref:`address` in Wei
|
||||
- ``<address>.code`` (``bytes memory``): code at the :ref:`address` (can be empty)
|
||||
- ``<address>.codehash`` (``bytes32``): the codehash of the :ref:`address`
|
||||
- ``<address payable>.send(uint256 amount) returns (bool)``: send given amount of Wei to :ref:`address`,
|
||||
returns ``false`` on failure
|
||||
- ``<address payable>.transfer(uint256 amount)``: send given amount of Wei to :ref:`address`, throws on failure
|
||||
|
||||
.. index:: blockhash, block, block;basefree, block;chainid, block;coinbase, block;difficulty, block;gaslimit, block;number, block;prevrandao, block;timestamp
|
||||
.. index:: gasleft, msg;data, msg;sender, msg;sig, msg;value, tx;gasprice, tx;origin
|
||||
|
||||
Block and Transaction Properties
|
||||
================================
|
||||
|
||||
- ``blockhash(uint blockNumber) returns (bytes32)``: hash of the given block - only works for 256 most recent blocks
|
||||
- ``block.basefee`` (``uint``): current block's base fee (`EIP-3198 <https://eips.ethereum.org/EIPS/eip-3198>`_ and `EIP-1559 <https://eips.ethereum.org/EIPS/eip-1559>`_)
|
||||
- ``block.chainid`` (``uint``): current chain id
|
||||
- ``block.coinbase`` (``address payable``): current block miner's address
|
||||
@ -44,6 +72,12 @@ Global Variables
|
||||
- ``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)
|
||||
|
||||
.. index:: assert, require, revert
|
||||
|
||||
Validations and Assertions
|
||||
==========================
|
||||
|
||||
- ``assert(bool condition)``: abort execution and revert state changes if condition is ``false`` (use for internal error)
|
||||
- ``require(bool condition)``: abort execution and revert state changes if condition is ``false`` (use
|
||||
for malformed input or error in external component)
|
||||
@ -51,7 +85,12 @@ Global Variables
|
||||
condition is ``false`` (use for malformed input or error in external component). Also provide error message.
|
||||
- ``revert()``: abort execution and revert state changes
|
||||
- ``revert(string memory message)``: abort execution and revert state changes providing an explanatory string
|
||||
- ``blockhash(uint blockNumber) returns (bytes32)``: hash of the given block - only works for 256 most recent blocks
|
||||
|
||||
.. index:: cryptography, keccak256, sha256, ripemd160, ecrecover, addmod, mulmod
|
||||
|
||||
Mathematical and Cryptographic Functions
|
||||
========================================
|
||||
|
||||
- ``keccak256(bytes memory) returns (bytes32)``: compute the Keccak-256 hash of the input
|
||||
- ``sha256(bytes memory) returns (bytes32)``: compute the SHA-256 hash of the input
|
||||
- ``ripemd160(bytes memory) returns (bytes20)``: compute the RIPEMD-160 hash of the input
|
||||
@ -61,15 +100,21 @@ Global Variables
|
||||
arbitrary precision and does not wrap around at ``2**256``. Assert that ``k != 0`` starting from version 0.5.0.
|
||||
- ``mulmod(uint x, uint y, uint k) returns (uint)``: compute ``(x * y) % k`` where the multiplication is performed
|
||||
with arbitrary precision and does not wrap around at ``2**256``. Assert that ``k != 0`` starting from version 0.5.0.
|
||||
|
||||
.. index:: this, super, selfdestruct
|
||||
|
||||
Contract-related
|
||||
================
|
||||
|
||||
- ``this`` (current contract's type): the current contract, explicitly convertible to ``address`` or ``address payable``
|
||||
- ``super``: the contract one level higher in the inheritance hierarchy
|
||||
- ``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
|
||||
- ``<address>.balance`` (``uint256``): balance of the :ref:`address` in Wei
|
||||
- ``<address>.code`` (``bytes memory``): code at the :ref:`address` (can be empty)
|
||||
- ``<address>.codehash`` (``bytes32``): the codehash of the :ref:`address`
|
||||
- ``<address payable>.send(uint256 amount) returns (bool)``: send given amount of Wei to :ref:`address`,
|
||||
returns ``false`` on failure
|
||||
- ``<address payable>.transfer(uint256 amount)``: send given amount of Wei to :ref:`address`, throws on failure
|
||||
|
||||
.. index:: type;name, type;creationCode, type;runtimeCode, type;interfaceId, type;min, type;max
|
||||
|
||||
Type Information
|
||||
================
|
||||
|
||||
- ``type(C).name`` (``string``): the name of the contract
|
||||
- ``type(C).creationCode`` (``bytes memory``): creation bytecode of the given contract, see :ref:`Type Information<meta-type>`.
|
||||
- ``type(C).runtimeCode`` (``bytes memory``): runtime bytecode of the given contract, see :ref:`Type Information<meta-type>`.
|
||||
|
@ -311,13 +311,16 @@ For more information, see the section on :ref:`address`.
|
||||
semantics than ``delegatecall``.
|
||||
|
||||
|
||||
.. index:: this, selfdestruct
|
||||
.. index:: this, selfdestruct, super
|
||||
|
||||
Contract Related
|
||||
Contract-related
|
||||
----------------
|
||||
|
||||
``this`` (current contract's type)
|
||||
the current contract, explicitly convertible to :ref:`address`
|
||||
The current contract, explicitly convertible to :ref:`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 :ref:`address`
|
||||
|
Loading…
Reference in New Issue
Block a user