Omniscia Tren Finance Audit
StabilityPool Code Style Findings
StabilityPool Code Style Findings
SPL-01C: Inefficient mapping Lookups
| Type | Severity | Location |
|---|---|---|
| Gas Optimization | ![]() | StabilityPool.sol:L524, L526, L640, L653, L819, L820, L972, L990, L991 |
Description:
The linked statements perform key-based lookup operations on mapping declarations from storage multiple times for the same key redundantly.
Example:
524uint256 newEpochToScaleToG = epochToScaleToG[currentEpoch][currentScale];525newEpochToScaleToG += marginalTRENGain;526epochToScaleToG[currentEpoch][currentScale] = newEpochToScaleToG;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 (f6f1ad0b8f24a96ade345db1dd05a1878eb0f761):
All referenced inefficient mapping lookups have been optimized to the greatest extent possible, significantly reducing the gas cost of the functions the statements were located in.
