CertiK reviewed Genius AI™ (Genius - Audit #2) on 19 Dec 2022: 22 findings, 0 critical; 9 marked fixed, 4 acknowledged, 9 open.
Report hosted on skynet.certik.com.
Trustblock does not review code.
Statuses are the security firm’s own, from its report.
| Severity | Open | Acknowledged | Fixed |
|---|---|---|---|
| Critical | 0 | 0 | 0 |
| High | 0 | 0 | 2 |
| Medium | 0 | 4 | 0 |
| Low | 9 | 0 | 7 |
The check of the ended auctions is missing in the function `startGeniusAuction`. The owner of an ended miner could start the auction.
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.
The comment states `ends a miner if tokenAmount is set as 0` is not implemented in the function `proofOfBenevolence`
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.
```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.
Missing emit event for the first bid in the function `_auctionBid()`.
Addresses should be checked before assignment or external call to make sure they are not zero addresses.
State variables that never change should be declared as `constant` to save gas.
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"); ```
The report names a repository or files. Open the report to see its scope.
Repository and files the report names (8)
1,044 projects reviewed · 1,375 reports · latest May 2025
See CertiK’s auditsSomething 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