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
HighEnded Auction Should Not be AuctionedFixed

The check of the ended auctions is missing in the function `startGeniusAuction`. The owner of an ended miner could start the auction.

HighLack of DocumentationFixed

The contract lacks comments or documentation explaining the methodology of each function and the reasoning behind the decisions taken. Here is the list of where we found the 9.28 whitepaper is missing or not sufficient: 1. Hexodus Logics 2. NFT Tokenomics 3. `Calendar.sol`: some updated algorithms like `summarize10Days()` 4. `Penalty.sol`: some updated algorithms like hardcoded `_calcPenaltyCounter()` and `getPercentile()` 5. `StabilityPool.sol`: some updated algorithms like `_issueRate()` Documentations benefit both future code reviewers and improve the project's transparency.

LowInconsistent Comment and CodeFixed

The comment states `ends a miner if tokenAmount is set as 0` is not implemented in the function `proofOfBenevolence`

LowIterate Over Array Upper BondFixed

When the value of `offset + numRecords` is greater than `_hexodusRequests.length`, there will be an index out of bound issue due to the access to the member that exceeds the max length of the array.

LowMissing Break In Loop in AuctionFixed

```solidity=409 for(uint256 i; i < _auctionUserStore[owner].length; i++) { if(_auctionPool[_auctionUserStore[owner][i]].minerIndex == minerIndex) { auctionIndex = _auctionUserStore[owner][i]; } } ``` If an `acutionIndex` is found, the loop can finish immediately to save gas.

LowMissing Emit Events for `_auctionBid()`Fixed

Missing emit event for the first bid in the function `_auctionBid()`.

LowMissing Zero Address ValidationFixed

Addresses should be checked before assignment or external call to make sure they are not zero addresses.

LowSet `constant` to VariablesFixed

State variables that never change should be declared as `constant` to save gas.

LowUnnecessary Pass In Parameter `_oaGrantor`Fixed

The parameter `_oaGrantor` of the constructor is not necessary, as the `_beginCollateral` function checks that `_oaGrantor` is equal to `msg.sender`. ```solitidy=231 require(msg.sender == oaGrantor, "u"); ```

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