βœ…OpenZeppelin ReentrancyGuard

OpenZeppelin Doc

ReentrancyGuard

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.

OpenZeppelin ReentrancyGuard

ReentrancyGuard.sol

State Variables and Constants

Note that _status will be stored in storage slot 0 if a contract inherits ReentrancyGuard.

Main Logic

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.

Last updated

Was this helpful?