Skip to content

Commit

Permalink
[docs] Add warning about codehash behavior depending on the account…
Browse files Browse the repository at this point in the history
… state

Co-authored-by: r0qs <rodrigo.saramago@protonmail.com>
  • Loading branch information
ustas-eth and r0qs committed Apr 26, 2024
1 parent 9e4d260 commit 6b6d438
Showing 1 changed file with 7 additions and 0 deletions.
7 changes: 7 additions & 0 deletions docs/types/value-types.rst
Expand Up @@ -338,6 +338,13 @@ You can query the deployed code for any smart contract. Use ``.code`` to get the
``bytes memory``, which might be empty. Use ``.codehash`` to get the Keccak-256 hash of that code
(as a ``bytes32``). Note that ``addr.codehash`` is cheaper than using ``keccak256(addr.code)``.

.. warning::
The output of ``addr.codehash`` may be ``0`` if the account associated with ``addr`` is empty or non-existent
(i.e., it has no code, zero balance, and zero nonce as defined by `EIP-161 <https://eips.ethereum.org/EIPS/eip-161>`_).
If the account has no code but a non-zero balance or nonce, then ``addr.codehash`` will output the Keccak-256 hash of empty data
(i.e., ``keccak256("")`` which is equal to ``c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470``), as defined by
`EIP-1052 <https://eips.ethereum.org/EIPS/eip-1052>`_.

.. note::
All contracts can be converted to ``address`` type, so it is possible to query the balance of the
current contract using ``address(this).balance``.
Expand Down

0 comments on commit 6b6d438

Please sign in to comment.