Explain the limitations of view and pure

This commit is contained in:
Alex Beregszaszi 2017-08-25 11:12:26 +01:00
parent f791ca3957
commit 2af949baaa

View File

@ -469,6 +469,17 @@ View Functions
Functions can be declared ``view`` in which case they promise not to modify the state.
The following statements are considered modifying the state:
#. Writing to state variables.
#. :ref:`Emitting events. <events>`.
#. :ref:`Creating other contracts <creating-contracts>`.
#. Using ``selfdestruct``.
#. Sending Ether via calls.
#. Calling any function not marked ``view`` or ``pure``.
#. Using low-level calls.
#. Using inline assembly that contains certain opcodes.
::
pragma solidity ^0.4.16;
@ -496,6 +507,13 @@ Pure Functions
Functions can be declared ``pure`` in which case they promise not to read from or modify the state.
In addition to the list of state modifying statements explained above, the following are considered reading from the state:
#. Reading from state variables.
#. Accessing ``this.balance`` or ``<address>.balance``.
#. Accessing any of the members of ``block``, ``tx``, ``msg`` (with the exception of ``msg.sig`` and ``msg.data``).
#. Calling any function not marked ``pure``.
#. Using inline assembly that contains certain opcodes.
::
pragma solidity ^0.4.16;