Omniscia Arcade XYZ Audit
OriginationController Code Style Findings
OriginationController Code Style Findings
OCR-01C: Ineffectual Usage of Safe Arithmetics
Type | Severity | Location |
---|---|---|
Language Specific | ![]() | OriginationController.sol:L977, L983, L1001 |
Description:
The linked mathematical operations are guaranteed to be performed safely by surrounding conditionals evaluated in either require
checks or if-else
constructs.
Example:
974if (repayAmount > borrowerOwedForNewLoan) {975 // amount to collect from borrower976 // new loan principal is less than old loan repayment amount977 amounts.needFromBorrower = repayAmount - borrowerOwedForNewLoan;978} else {979 // amount to collect from lender (either old or new)980 amounts.leftoverPrincipal = amounts.amountFromLender - repayAmount;981
982 // amount to send to borrower983 amounts.amountToBorrower = borrowerOwedForNewLoan - repayAmount;984}
Recommendation:
Given that safe arithmetics are toggled on by default in pragma
versions of 0.8.X
, we advise the linked statements to be wrapped in unchecked
code blocks thereby optimizing their execution cost.
Alleviation (0a7551b095ee0dc4fb2a56d2267e05472128cf0e):
The unchecked
code blocks have been introduced to all referenced calculations, addressing this exhibit in full.
OCR-02C: Loop Iterator Optimizations
Type | Severity | Location |
---|---|---|
Gas Optimization | ![]() | OriginationController.sol:L583, L620, L654, L784, L814 |
Description:
The linked for
loops increment / decrement their iterator "safely" due to Solidity's built - in safe arithmetics (post-0.8.X
).
Example:
583for (uint256 i = 0; i < tokens.length; ++i) {
Recommendation:
We advise the increment / decrement operations to be performed in an unchecked
code block as the last statement within each for
loop to optimize their execution cost.
Alleviation (7a4e1dc948e94ded7385dbb74818bcf93ecc207c):
All referenced iterator optimizations have been applied, addressing this exhibit in full.