FeeController

Git Source

Inherits: Initializable, ERC165Upgradeable, HubOwnableUUPSUpgradeable, IFeeController

Author: Daniel Yamagata & Naveen Ailawadi

A contract to set and manage fees for the Mezzanine Protocol

All fees are denominated in 100_000 as 100%. For example, a fee of 1_000 is equivalent to 1% All fees in Mezzanine are transferred to the fee controller, which then can be collected by the owner of the Mezz Hub. All implementations that charge a fee are responsible for transferring the fees to the fee controller.

State Variables

MAX_IMPLEMENTATION_FEE

uint256 public constant MAX_IMPLEMENTATION_FEE = Constants.MAX_IMPLEMENTATION_FEE;

FeeControllerStorageLocation

bytes32 private constant FeeControllerStorageLocation =
    0x9980cbcd1eea9936b8d3caaf89dd2ea96db52917f1123c39e72b02e9cb513100;

Functions

_getFeeControllerStorage

function _getFeeControllerStorage() internal pure returns (FeeControllerStorage storage $);

constructor

setImplementationFee

Sets the fee of the 'implementation' to 'newFee'. Only callable by the 'owner' of the MezzHub

collectFees

Transfers 'amount' of 'asset' to the owner of the Mezz Hub

calculateFee

Returns the fee for 'amount' based on the 'asset' and 'implementation' Returns zero if 'asset' is not a denomination asset or the implementation does not have a fee

getFeeByImplementation

Returns the fee for 'implementation'. Returns zero if there is no fee

supportsInterface

ERC165 support

Structs

FeeControllerStorage