Omniscia Euler Finance Audit
Strategy Code Style Findings
Strategy Code Style Findings
SYG-01C: Inefficient mapping
Lookups
Type | Severity | Location |
---|---|---|
Gas Optimization | ![]() | Strategy.sol:L51, L60, L98, L99 |
Description:
The linked statements perform key-based lookup operations on mapping
declarations from storage multiple times for the same key redundantly.
Example:
98$.strategies[_strategy].status = IYieldAggregator.StrategyStatus.Active;99$.strategies[_strategy].allocated = aggregatorAssets.toUint120();
Recommendation:
As the lookups internally perform an expensive keccak256
operation, we advise the lookups to be cached wherever possible to a single local declaration that either holds the value of the mapping
in case of primitive types or holds a storage
pointer to the struct
contained.
As the compiler's optimizations may take care of these caching operations automatically at-times, we advise the optimization to be selectively applied, tested, and then fully adopted to ensure that the proposed caching model indeed leads to a reduction in gas costs.
Alleviation:
The Euler Finance team evaluated this exhibit but opted to acknowledge it in the current iteration of the codebase.