diff options
Diffstat (limited to 'docs/contracts.rst')
-rw-r--r-- | docs/contracts.rst | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/docs/contracts.rst b/docs/contracts.rst index 51d7923d..2149167b 100644 --- a/docs/contracts.rst +++ b/docs/contracts.rst @@ -1,5 +1,7 @@ .. index:: ! contract +.. _contracts: + ########## Contracts ########## @@ -561,7 +563,10 @@ Ether (without data). Additionally, in order to receive Ether, the fallback func must be marked ``payable``. If no such function exists, the contract cannot receive Ether through regular transactions. -In the worst case, the fallback function can only rely on 2300 gas being available (for example when send or transfer is used), leaving not much room to perform other operations except basic logging. The following operations will consume more gas than the 2300 gas stipend: +In the worst case, the fallback function can only rely on 2300 gas being +available (for example when `send` or `transfer` is used), leaving little +room to perform other operations except basic logging. The following operations +will consume more gas than the 2300 gas stipend: - Writing to storage - Creating a contract @@ -1201,7 +1206,7 @@ contracts (``L.f()`` if ``L`` is the name of the library). Furthermore, ``internal`` functions of libraries are visible in all contracts, just as if the library were a base contract. Of course, calls to internal functions use the internal calling convention, which means that all internal types -can be passed and memory types will be passed by reference and not copied. +can be passed and types :ref:`stored in memory <data-location>` will be passed by reference and not copied. To realize this in the EVM, code of internal library functions and all functions called from therein will at compile time be pulled into the calling contract, and a regular ``JUMP`` call will be used instead of a ``DELEGATECALL``. @@ -1282,7 +1287,7 @@ actual external function call is performed. in this call, though (prior to Homestead, because of the use of ``CALLCODE``, ``msg.sender`` and ``msg.value`` changed, though). -The following example shows how to use memory types and +The following example shows how to use :ref:`types stored in memory <data-location>` and internal functions in libraries in order to implement custom types without the overhead of external function calls: |