Back

Lesson 20:
Function Modifier

Introduction to function modifiers and how to use it in your smart contracts.

Progress: 0%

Visit desktop version for better experiences.

Function Modifier

Modifiers can be used to change the behavior of functions in a declarative way.

For example, you can use a modifier to automatically check a condition prior to executing the function.

Like functions, modifiers can be overridden but only if they are marked virtual.

Note: having the same modifier name with different parameters, is not possible.

// SPDX-License-Identifier: MIT pragma solidity ^0.8.24; contract MyContract { address public owner; uint256 public balance; bool private _currentlyExecuting; constructor() { owner = msg.sender; _currentlyExecuting = false; balance = 0; } // Modifier to check if the caller is the owner of the contract modifier onlyOwner { require(msg.sender == owner, "Caller is not the owner"); _; } // Modifier to check if multiple parameters are valid modifier validParams(address _addr, uint256 _amount) { require(_addr != address(0), "Invalid address"); require(_amount > 0, "Amount must be greater than zero"); _; } // Modifier to prevent reentrancy attacks modifier nonReentrant { // Check if the function is currently being executed require(!_currentlyExecuting, "Reentrant call"); // Set the flag to true to signal that the function is being executed _currentlyExecuting = true; // Execute the rest of the function _; // Reset the flag to false after the function has finished executing _currentlyExecuting = false; } // Function to deposit funds into the contract function depositFunds(uint256 _amount) public onlyOwner { balance += _amount; } // Function that can only be called by the owner and is protected against reentrancy attacks function sensitiveFunction(address _to, uint256 _amount) public onlyOwner nonReentrant validParams(_to, _amount) { // Transfer the specified amount to the specified address balance -= _amount; // This is just an example, in a real contract you would use the transfer function of the address } }

© 2024 Scroll Foundation | All rights reserved

Terms of UsePrivacy Policy