Fee Distribution
Fees are generated when a user claims bridged tokens on the target network, the fees are distributed to the following:
Reward Pools contract (70%) Liquidity Mining Pools contract (15%) Buy Back And Burn contract (15%) To optimize for gas costs, the BridgeERC20 contract was updated in December 2021 to the new V2 version: The optimizations created gas efficiency as follows:
  • the fees dedicated to Reward Pools will be randomly sent roughly once per day (if a transaction occurs)
  • the fees dedicated to Liquidity Mining Pools will be randomly sent roughly every second day (if a transaction occurs)
  • the fees dedicated to Buy Back And Burn will be collected in the ERC20 bridge and will only be pulled to Buy Back And Burn contract when we trigger a BuyBackAndBurn for this specific token
There is a new function in the bridge contract that allows anyone to manually send the collected fees for a specific token. This function can be found on Etherscan since our bridge contract is verified. It starts in row 691 in the bridge contract. This is the function that can be used to manually trigger that the fees are being forwarded by the bridge: /** * @notice Transfers collected but unsent fees to BuyBackAndBurn, LiquidityMiningPools and RewardPools * * @param token the token in which fees were collected * @param _buyBackAndBurn true if collected fees should be sent to BuyBackAndBurn * @param _miningPools true if collected fees should be sent to LiquidityMiningPools * @param _rewardPools true if collected fees should be sent to RewardPools */ function forwardCollectedFees( IERC20 token, bool _buyBackAndBurn, bool _miningPools, bool _rewardPools ) public nonReentrant { if (token.balanceOf(address(this)) > 0) { if (_buyBackAndBurn) { buyBackAndBurn.depositERC20(token, collectedUnsentFees[address(token)][address(buyBackAndBurn)]); collectedUnsentFees[address(token)][address(buyBackAndBurn)] = 0; } if (_miningPools) { liquidityMiningPools.addRewards(token, collectedUnsentFees[address(token)][address(liquidityMiningPools)]); collectedUnsentFees[address(token)][address(liquidityMiningPools)] = 0; } if (_rewardPools) { rewardPools.addRewards(token, collectedUnsentFees[address(token)][address(rewardPools)]); collectedUnsentFees[address(token)][address(rewardPools)] = 0; }
Copy link