Omniscia Mantissa Finance Audit
veMNT Code Style Findings
veMNT Code Style Findings
MNE-01C: Loop Iterator Optimizations
Type | Severity | Location |
---|---|---|
Gas Optimization | veMNT.sol:L218, L226 |
Description:
The linked for
loops increment / decrement their iterator "safely" due to Solidity's built - in safe arithmetics (post-0.8.X
).
Example:
218for (uint256 i = 0; i < masterMantisListSize; 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 (418ee413ad8e26f7eea383764c19953ff31b2bf3):
The referenced loop iterator increment statements have been optimized by relocating them to the end of each for
loop's body and performing them within unchecked
code blocks.
MNE-02C: Potentially Redundant Shift Operation
Type | Severity | Location |
---|---|---|
Gas Optimization | veMNT.sol:L73 |
Description:
The referenced operation is meant to replace the element at index
with the last element of the array so as to "preserve" the last element of the array in case an element in the middle of the array was meant to be removed.
This operation is inefficient in case index
is equal to masterMantisList.length - 1
.
Example:
71function removeMasterMantis(uint256 index, address _masterMantis) external onlyOwner {72 require(masterMantisList[index] == _masterMantis, "Wrong index");73 masterMantisList[index] = masterMantisList[masterMantisList.length-1];74 masterMantisList.pop();75 emit MasterMantisRemoved(_masterMantis);76}
Recommendation:
We advise the operation to not be performed when the index
to be removed is the last element in the array, optimizing the function's gas cost in such a case.
Alleviation (418ee413ad8e26f7eea383764c19953ff31b2bf3):
The shift operation is now optimally performed solely when the element to be removed is not the last element of the array, significantly reducing the function's gas cost in such a case.
MNE-03C: Redundant Parenthesis Statement
Type | Severity | Location |
---|---|---|
Code Style | veMNT.sol:L233 |
Description:
The referenced statement is redundantly wrapped in parenthesis (()
).
Example:
233require(from == address(0) || to == address(0) || (!whitelisted[from] && to == marketplace) || (from == marketplace), "Transfer not allowed");
Recommendation:
We advise them to be safely omitted, increasing the legibility of the codebase.
Alleviation (418ee413ad8e26f7eea383764c19953ff31b2bf3):
The redundant parenthesis statement has been safely omitted from the codebase as advised.
MNE-04C: Repetitive Value Literal
Type | Severity | Location |
---|---|---|
Code Style | veMNT.sol:L175, L176 |
Description:
The linked value literal is repeated across the codebase multiple times.
Example:
175mntLpAmount = user.amount * percent / 1e4;
Recommendation:
We advise it to be set to a constant
variable instead optimizing the legibility of the codebase.
Alleviation (418ee413ad8e26f7eea383764c19953ff31b2bf3):
The Mantissa Finance team stated that the repetition occurs solely twice and as such they deem it inconsequential and wish to acknowledge it.