Omniscia rain protocol Audit

MathOps Manual Review Findings

MathOps Manual Review Findings

MOS-01M: Inexistent Accumulation of Exponention

Description:

The MathOps library incorrectly performs an exponention accumulation as the result of the exponention operation (**) is never stored to the accumulator_.

Example:

contracts/vm/ops/MathOps.sol
92// Exponentiation.
93else if (opcode_ == EXP) {
94 while (cursor_ < top_) {
95 unchecked {
96 cursor_++;
97 }
98 accumulator_**state_.stack[cursor_];
99 }
100}

Recommendation:

We advise it to be properly accumulated as otherwise the operation will always yield the value of the first member of the exponention chain.

Alleviation:

The operation was corrected to properly accumulate the power instructions.