There are some missing event for access control and arithmetic parameters inside the smart contracts. The full list of functions with the missing events are listed in the subsequent "Vulnerability Details".
LiquidationPoolManager.setPoolFeePercentage(uint32) (contracts/LiquidationPoolManager.sol#84-86) should emit an event for:
- poolFeePercentage = _poolFeePercentage (contracts/LiquidationPoolManager.sol#85)
SmartVaultManagerV5.setMintFeeRate(uint256) (contracts/SmartVaultManagerV5.sol#103-105) should emit an event for:
- mintFeeRate = _rate (contracts/SmartVaultManagerV5.sol#104)
SmartVaultManagerV5.setBurnFeeRate(uint256) (contracts/SmartVaultManagerV5.sol#107-109) should emit an event for:
- burnFeeRate = _rate (contracts/SmartVaultManagerV5.sol#108)
SmartVaultManager.setSwapFeeRate(uint256 _rate) (contracts/utils/SmartVaultManager.sol#111-113) should emit an event for:
- mintFeeRate = _rate (contracts/utils/SmartVaultManager.sol#112)
SmartVaultManagerV5.setLiquidatorAddress(address) (contracts/SmartVaultManagerV5.sol#135-137) should emit an event for:
- liquidator = _liquidator (contracts/SmartVaultManagerV5.sol#136)
SmartVaultV3.setOwner(address) (contracts/SmartVaultV3.sol#233-235) should emit an event for:
- owner = _newOwner (contracts/SmartVaultV3.sol#234)
In Ethereum, events are used to facilitate communication between smart contracts and their user interfaces or other off-chain services. When an event is emitted, it gets logged in the transaction receipt, and these logs can be monitored and reacted to by off-chain services or user interfaces.
Without an event for each parameters listed above, any off-chain service or user interface that needs to know the current state would have to actively query the contract state to get the current value. This is less efficient than simply listening directly for events, and it can lead to delays in detecting changes to parameters.
The impact of this could be significant because these parameters are used to calculate the usage cost for users (feeRate). If, for example, the fees change and an off-chain service or user is not aware of the change because they didn't query the contract state at the right time, they could end up paying a different fee than they expected.
Slither
Emit an event for critical parameters changes.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.