Genius - Audit #2

CertiKFiles named in the report

CertiK reviewed Genius AI™ (Genius - Audit #2) on 19 Dec 2022: 22 findings, 0 critical; 9 marked fixed, 4 acknowledged, 9 open.

No open critical findings
Open the reportOpen Genius AI™’s security record

Report hosted on skynet.certik.com.

Trustblock does not review code.

Findings22

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

SeverityOpenAcknowledgedFixed
Critical000
High002
Medium040
Low907
LowArbitrary external callsOpen

The function `proofOfExodus()` executes an external call `IGeneral(callbackContract).exodus(msg.sender, balance, miners)`, where the address `callbackContract` is controlled by the caller and there is no input validation in place. A user can deploy a malicious `callbackContract` and perform arbitrary actions in the function `IGeneral.exodus()`.

LowCalculations of `store.newInflation` And `store.rOpen

In functions `_summarize10Days()`, `_summarize100Days()`, the variables `newInflation` and `redistribution` are accumulated. However, in `_summarize1000Days()`, the variables are reset for each loop iteration. ```solidity newInflation = 0; redistribution = 0; ```

LowCalculations With `netPrincipalPayout` In `_managOpen

In `_manageCollateralMinerPayouts()`, the mint value is `netPrincipalPayout + netRewardsPayout`. `netRewardsPayout` is decreased from `calendar.burnedSupply` afterward. Our understanding is that the reason for the decrease is that `netRewardsPayout` is minted. On the other hand, as the other value minted, `netPrincipalPayout` is not deducted from anywhere.

LowImplicit 0.01% burn when outbidOpen

When a user outbids the highest bidder in the auction, as implemented in `_handleAuctionOutBid`, the highest bidder will get 99.99% of the amount instead of the entire amount returned.

LowIncompatibility with Deflationary TokensOpen

When transferring deflationary ERC20 tokens, the input amount may not be equal to the received amount due to the charged transaction fee. For example, if a user sends 100 deflationary tokens (with a 10% transaction fee), only 90 tokens actually arrived to the contract. However, a failure to discount such fees may allow the same user to withdraw 100 tokens from the contract, which causes the contract to lose 10 tokens in such a transaction.

LowInconsistency Function Access in CalendarOpen

1. `decreaseBurnedSupply()`: the `auctionAddress` has access in the implementation but not mentioned in the comments. 2. `increaseBurnedSupply()`: the `hexodusAddress` has access in the implementation but not mentioned in the comments. 3. `incDailyPenalties()`: the `auctionAddress` has access in the implementation but not mentioned in the comments.

LowRisk For Weak RandomnessOpen

It is now well understood that the difficulty or timestamp is not a source of randomness. They can be manipulated if the attacker is also a miner. For EVM compatible blockchains such as Binance smart chain and Polygon, the `block.difficulty` can be the same value across multiple blocks, making the situation even worse.

LowThe input `bid` is not used for the action's `firOpen

For the first bid, the actual amount burned in `_geniusContract` is `auction.firstBid` but not the input `bid`.

LowUser-Defined GettersOpen

The linked functions are equivalent to the compiler-generated getter functions for the respective variables.

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 (8)

  • contracts/Genius.sol
  • contracts/Hexodus.sol
  • contracts/Auction.sol
  • contracts/StabilityPool.sol
  • contracts/Penalty.sol
  • contracts/Miners.sol
  • contracts/Utilities.sol
  • contracts/Calendar.sol

Part of Genius AI™’s security record

Genius AI™
Audits1 audit by 1 firmLast audit Dec 2022, by CertiK.
Critical findingsNo open critical findingsIn 1 report.
Open Genius AI™’s security record

Security firm

CertiK

1,044 projects reviewed · 1,375 reports · latest May 2025

See CertiK’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