Omniscia Morpho Audit
Auth Code Style Findings
Auth Code Style Findings
AUT-01C: Counter-Intuitive Optimization
Type | Severity | Location |
---|---|---|
Gas Optimization | ![]() | Auth.sol:L32 |
Description:
The linked local variable is a remnant of the original solmate
codebase where the authority
variable is not immutable
.
Example:
src/Auth.sol
31function isAuthorized(address user, bytes4 functionSig) internal view virtual returns (bool) {32 Authority auth = authority; // Memoizing authority saves us a warm SLOAD, around 100 gas.33
34 // Checking if the caller is the owner only after calling the authority saves gas in most cases, but be35 // aware that this makes protected functions uncallable even to the owner if the authority is out of order.36 return (address(auth) != address(0) && auth.canCall(user, address(this), functionSig)) || user == owner;37}
Recommendation:
We advise the local auth
variable to be removed as it increases the gas cost instead of reducing it as no SLOAD
is performed for authority
.
Alleviation:
The Morpho team heeded our recommendation and revamped the original Solmate codebase to instead reflect access control calls to itself internally, significantly optimizing the gas cost of the contract.