Oikos

QuillAuditsFiles named in the report

Audit · firm’s term: audit report

QuillAudits reviewed Oikos Cash (Oikos) on 30 Apr 2025: 12 findings, 0 critical; 5 marked fixed, 7 open.

No open critical findings
Open the reportOpen Oikos Cash’s security record

Report hosted on quillaudits.com.

Trustblock does not review code.

Findings12

Statuses are the security firm’s own, from its report.

SeverityOpenAcknowledgedFixed
Critical000
High001
Medium001
Low703
Highwithdraw() function transfers available balance instead of minAmountOutFixed

The withdraw() transfers the availableBalance for the token, instead it should be the amount calcu lated according to the number of pNoma tokens the user had. In withdraw() first it gets the balance of the user, then burns the p-assets. Then calculates the minAmountOut value. Finally it transfers the availableBalance instead of minAmountOut resulting in transfer of more than intended tokens.

MediumSelf-Referral Abuse Allows Users to Earn DiscountsFixed

The deposit() function in the presale contract allows users to pass an arbitrary referralCode. However, this referralCode is later interpreted as the address to receive referral rewards in payReferrals()<br>- A user can generate their own referral code from their own address (e.g., bytes32(uint256(uint160(msg.sender)))) and pass it to the deposit() function.<br>- As a result, they receive a percentage of their own deposit back via the referral mechanism.<br>- This effectively gives them a discount on token purchases at the cost of the protocol.<br>Additionally:<br>- msg.value == 0 is allowed, which could result in unintended free mints or bloated contributor lists

LowComments mismatch with slippage valueFixed

In Presale contract, slippage check is calculated in the finalize() function to ensure the stability of the price. But the issue is that the comment has mentioned slippage to be 0.1% and the actual slippage calculated in contract is 0.5% which is higher and is mismatched from the sentence.

LowMissing Emergency Switch, Contribution Constraints, and State Sync in Emergency WithdrawalsFixed

<br>1. No Emergency Mode Toggle:<br> The emergencyWithdrawal() function does not depend on any emergency toggle/switch, meaning it’s passively time-gated (deadline + 30 days), rather than actively controlled by the protocol or owner.<br> This limits response flexibility in critical failures (e.g., token price manipulation, stuck funds, or an attack on the protocol).<br><br>2. Improper Error Message:<br> The revert message in emergencyWithdrawal() uses PresaleOngoing() when finalized is true, which is semantically incorrect. If the presale is finalized, emergency withdrawal shouldn’t be allowed at all, or a different error like PresaleFinalized() should be used.<br><br>3. State Inconsistency in Emergency Withdrawal:<br> While a user’s individual contributions[msg.sender] is zeroed, the global totalRaised variable is not decremented.<br> <br>This leads to inflated accounting, which can break invariant assumptions during finalization or analytics.<br><br>4. Commented-Out Contribution Limits:<br> In deposit(), the MIN_CONTRIBUTION and MAX_CONTRIBUTION checks are commented out

LowPresale can exceed hardcapFixed

The deposit function in the Presale contract performs an incorrect validation check that could allow contributions to exceed the intended hardcap limit. The check is performed before the new contribu tion is added to the total, and it only reverts if the current balance is already greater than the hardcap.

Contracts in scope

No deployed address is recorded for this audit.

The report names a repository or files. Open the report to see its scope.

Repository and files the report names (14)

  • Bootstrap.sol
  • StakingVault.sol
  • TokenFactory.sol
  • src/staking/Staking.sol
  • src/vault/LendingVault.sol
  • src/factory/NomaFactory.sol
  • dit_ready/src/bootstrap/Migration.sol
  • NomaFactory.sol
  • src/factory/TokenFactory.sol
  • src/types/Types.sol
  • MockNomaTokenRestricted.sol
  • src/bootstrap/Migration.sol
  • Presale.sol
  • src/bootstrap/Presale.sol

Part of Oikos Cash’s security record

Oikos Cash
Audits1 audit by 1 firmLast audit Apr 2025, by QuillAudits.
Critical findingsNo open critical findingsIn 1 report.
Open Oikos Cash’s security record

Security firm

QuillAudits

350 projects reviewed · 459 reports · latest Apr 2025

See QuillAudits’s audits

Something wrong on this page? A missing report, a wrong date, a finding that was fixed since. Tell us and we check it against its source.

Tell us