✅OpenZeppelin ReentrancyGuard
Last updated
Last updated
Contract module that helps prevent reentrant calls to a function.
Inheriting from ReentrancyGuard
will make the nonReentrant
modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them.
Note that because there is a single nonReentrant
guard, functions marked as nonReentrant
may not call one another. This can be worked around by making those functions private
, and then adding external
nonReentrant
entry points to them.
Note that _status
will be stored in storage slot 0 if a contract inherits ReentrancyGuard.
The "reentrancy guard" is a modifier named nonReentrant()
:
This is just a simple mutex lock that prevents the current function from re-entering.
Note
The nonReentrant()
modifier only prevents reentrancy attack inside the current contract. It does not prevent cross-contract reentrancy attacks such as read only reentrancy.