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 succesful.

allowExecutor

function allowExecutor(bytes4 _functionSelector, bool _executorCanCall) external nonpayable

Sets the permission for a function selector

Parameters

destination

function destination() external view returns (address)

Retrieve the destination address

Returns

executor

function executor() external view returns (address)

Retrieve the executor address

Returns

executorCanCall

function executorCanCall(bytes4) external view returns (bool)

Returns true if the executor is allowed to perform a call on the given selector

Parameters

Returns

getAdmin

function getAdmin() external view returns (address)

Retrieves the current admin address

Returns

getPendingAdmin

function getPendingAdmin() external view returns (address)

Retrieve the current pending admin address

Returns

proposeAdmin

function proposeAdmin(address _newAdmin) external nonpayable

Proposes a new address as admin

This security prevents setting an invalid address as an admin. The pendingadmin has to claim its ownership of the contract, and prove that the newaddress is able to perform regular transactions.

Parameters

setExecutor

function setExecutor(address _newExecutor) external nonpayable

Sets the executor address

Parameters

Events

SetAdmin

event SetAdmin(address indexed admin)

The admin address changed

Parameters

SetDestination

event SetDestination(address indexed destination)

The stored destination address has been changed

Parameters

SetExecutor

event SetExecutor(address indexed executor)

The stored executor address has been changed

Parameters

SetExecutorPermissions

event SetExecutorPermissions(bytes4 selector, bool status)

The storage permission for a selector has been changed

Parameters

SetPendingAdmin

event SetPendingAdmin(address indexed pendingAdmin)

The pending admin address changed

Parameters

Errors

InvalidZeroAddress

error InvalidZeroAddress()

The address is zero

Unauthorized

error Unauthorized(address caller)

The operator is unauthorized for the caller

Parameters

Last updated