Using Function Modifiers
Step By Step
Install the Ironblocks CLI Tool into your project by running:
npm install @ironblocks/cli
From your project's root directory, run the Firewall Integration command:
npx ib fw integ -d ./contracts
ib
is Ironblocks' CLI toolfw integ
runs the Integration command for the Firewall module of our tool-d ./contracts
points to your smart contracts directory
Running the command above will make the following changes in your project:
Auto-Install the Firewall's dependencies
Make your contracts inherit from
FirewallConsumer
Add the
firewallProtected
modifier to any external function (excludingview
functions)
That's it! Your smart contracts are now ready to use Ironblocks' Firewall.
Example
The following smart contract shows a typical integration of our Firewall into a consumer protocol:
pragma solidity ^0.8.19;
import "@ironblocks/firewall-consumer/FirewallConsumer.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/utils/Address.sol";
//
// STEP 1: Inherit from our FirewallConsumer
//
contract SampleConsumer is FirewallConsumer, Ownable {
mapping (address => uint) public deposits;
constructor() {}
//
// STEP 2: Add the "firewallProtected" modifier to functions you wish to protect
//
function deposit() external payable firewallProtected {
deposits[msg.sender] += msg.value;
}
function withdraw(uint amount) external firewallProtected {
deposits[msg.sender] -= amount;
Address.sendValue(payable(msg.sender), amount);
}
function setOwner(address newOwner) external onlyOwner firewallProtected {
_transferOwnership(newOwner);
}
}
Next Steps
Head on to the Configuration section to learn more about security policy management.
Review our Smart Contracts
Last updated