mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Added a note about 63/64 rule
Co-authored-by: Alex Beregszaszi <alex@rtfs.hu>
This commit is contained in:
parent
f6b403581e
commit
9a5a4dfc6c
@ -181,14 +181,13 @@ Sending and Receiving Ether
|
|||||||
contract. Again, the best practice here is to use a :ref:`"withdraw"
|
contract. Again, the best practice here is to use a :ref:`"withdraw"
|
||||||
pattern instead of a "send" pattern <withdrawal_pattern>`.
|
pattern instead of a "send" pattern <withdrawal_pattern>`.
|
||||||
|
|
||||||
Call stack Depth
|
Call Stack Depth
|
||||||
================
|
================
|
||||||
|
|
||||||
External function calls can fail any time because they exceed the maximum
|
External function calls can fail any time because they exceed the maximum
|
||||||
call stack of 1024. In such situations, Solidity throws an exception.
|
call stack of 1024. In such situations, Solidity throws an exception.
|
||||||
Malicious actors might be able to force the call stack to a high value
|
Malicious actors might be able to force the call stack to a high value
|
||||||
before they interact with your contract, by controlling the number of calls
|
before they interact with your contract. Note that, since [Tangerine Whistle](https://eips.ethereum.org/EIPS/eip-608) hardfork, the [63/64 rule](https://eips.ethereum.org/EIPS/eip-150) makes call stack depth attack impractical. Also note that the call stack and the expression stack are unrelated, even though both have a size limit of 1024 stack slots.
|
||||||
and local function variables on the stack.
|
|
||||||
|
|
||||||
Note that ``.send()`` does **not** throw an exception if the call stack is
|
Note that ``.send()`` does **not** throw an exception if the call stack is
|
||||||
depleted but rather returns ``false`` in that case. The low-level functions
|
depleted but rather returns ``false`` in that case. The low-level functions
|
||||||
|
Loading…
Reference in New Issue
Block a user