Firewall
Figment
Firewall
This contract accepts calls to admin-level functions of an underlying contract, and ensures the caller holds an appropriate role for calling that function. There are two roles:
An Admin can call anything
An Executor can call specific functions
The list of function is customizable. Random callers cannot call anything through this contract, even if the underlying function is unpermissioned in the underlying contract. Calls to non-admin functions should be called at the underlying contract directly.
Methods
acceptAdmin
function acceptAdmin() external nonpayable
Accept the transfer of ownership
Only callable by the pending admin. Resets the pending admin if successful.
allowExecutor
function allowExecutor(bytes4 _functionSelector, bool _executorCanCall) external nonpayable
Sets the permission for a function selector
Parameters
_functionSelector
bytes4
Method signature on which the permission is changed
_executorCanCall
bool
True if selector is callable by the executor
destination
function destination() external view returns (address)
Retrieve the destination address
Returns
_0
address
The destination address
executor
function executor() external view returns (address)
Retrieve the executor address
Returns
_0
address
The executor address
executorCanCall
function executorCanCall(bytes4) external view returns (bool)
Returns true if the executor is allowed to perform a call on the given selector
Parameters
_0
bytes4
undefined
Returns
_0
bool
True if executor is allowed to call
getAdmin
function getAdmin() external view returns (address)
Retrieves the current admin address
Returns
_0
address
The admin address
getPendingAdmin
function getPendingAdmin() external view returns (address)
Retrieve the current pending admin address
Returns
_0
address
The pending admin address
proposeAdmin
function proposeAdmin(address _newAdmin) external nonpayable
Proposes a new address as admin
This security prevents setting an invalid address as an admin. The pending admin has to claim its ownership of the contract, and prove that the new address is able to perform regular transactions.
Parameters
_newAdmin
address
New admin address
setExecutor
function setExecutor(address _newExecutor) external nonpayable
Sets the executor address
Parameters
_newExecutor
address
New address for the executor
version
function version() external pure returns (string)
Retrieves the version of the contract
Returns
_0
string
Version of the contract
Events
SetAdmin
event SetAdmin(address indexed admin)
The admin address changed
Parameters
admin indexed
address
New admin address
SetDestination
event SetDestination(address indexed destination)
The stored destination address has been changed
Parameters
destination indexed
address
The new destination address
SetExecutor
event SetExecutor(address indexed executor)
The stored executor address has been changed
Parameters
executor indexed
address
The new executor address
SetExecutorPermissions
event SetExecutorPermissions(bytes4 selector, bool status)
The storage permission for a selector has been changed
Parameters
selector
bytes4
The 4 bytes method selector
status
bool
True if executor is allowed
SetPendingAdmin
event SetPendingAdmin(address indexed pendingAdmin)
The pending admin address changed
Parameters
pendingAdmin indexed
address
New pending admin address
Errors
InvalidZeroAddress
error InvalidZeroAddress()
The address is zero
Unauthorized
error Unauthorized(address caller)
The operator is unauthorized for the caller
Parameters
caller
address
Address performing the call
Last updated