Omniscia rain protocol Audit
TierReport Code Style Findings
TierReport Code Style Findings
TRT-01C: Redundant Maximum Tier Enforcement
Type | Severity | Location |
---|---|---|
Gas Optimization | TierReport.sol:L135 |
Description:
The updateBlocksForTierRange
function redundantly enforces the maxTier
modifier on both the startTier_
and the endTier_
.
Example:
contracts/tier/libraries/TierReport.sol
121/// Updates a report with a block number for every tier in a range.122///123/// Does nothing if the end status is equal or less than the start tier.124/// @param report_ The report to update.125/// @param startTier_ The tier at the start of the range (exclusive).126/// @param endTier_ The tier at the end of the range (inclusive).127/// @param blockNumber_ The block number to set for every tier in the128/// range.129/// @return The updated report.130function updateBlocksForTierRange(131 uint256 report_,132 uint256 startTier_,133 uint256 endTier_,134 uint256 blockNumber_135) internal pure maxTier(startTier_) maxTier(endTier_) returns (uint256) {136 unchecked {137 uint256 offset_;138 for (uint256 i_ = startTier_; i_ < endTier_; i_++) {139 offset_ = i_ * 32;140 report_ =141 (report_ &142 ~uint256(143 uint256(TierConstants.NEVER_TIER) << offset_144 )) |145 uint256(blockNumber_ << offset_);146 }147 return report_;148 }149}
Recommendation:
Given that both are used in the for
construct within the function, we advise only endTier_
to be evaluated as in the case whereby endTier_ <= startTier_
the function results in a no-op.
Alleviation:
The redundant maximum tier enforcement for startTier_
was safely omitted from the codebase.