Category: Business Logic
Potential centralization risk from fee configuration
Informational Severity
Informational Impact
N/A Likelihood
Description
The SilicaPools contract allows the owner to set the sMintFeeBps
value:
function setMintFeeBps(uint256 newMintFeeBps) external onlyOwner {
sMintFeeBps = newMintFeeBps;
emit SilicaPools__MintFeeChanged(newMintFeeBps);
}
The sMintFeeBps
determines the percent of fee for executing the fillOrder
function.
Impact
The owner has the ability to make fees arbitrarily high, even above 100%. In general, this requires unnecessary trust from users, which might discourage use of the protocol. In the case of key compromise, this would grant an attacker the ability to steal additional user funds.
Recommendations
We recommend adding a reasonable upper limit (that is at least below 100%) on sMintFeeBps
.
Remediation
This issue has been acknowledged by Alkimiya, and fixes were implemented in the following commits: