CertiK reviewed Nina (Nina - Audit) on 19 Feb 2025: 12 findings, 0 critical; 5 acknowledged, 7 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 | 2 | 0 |
| Medium | 0 | 3 | 0 |
| Low | 7 | 0 | 0 |
In the contract `DividendPayingToken`, the role `_owner` has authority over the functions shown in the diagram below. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority and distribute dividends to shareholders.  In the contract `DividendTracker`, the role `_owner` has authority over the functions shown in the diagram below. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority and exclude accounts from dividends, set the balance for an account, process account dividends and update claim time, update the claim wait time, set the last processed index, and update the minimum token balance for dividends.  In the contract `NINA`, the role `_owner` has authority over the functions shown in the diagram below. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority and update fees for buying transactions, update the sell fees, exclude account from receiving dividends, update minimum balance for dividends, set swap tokens at amount, enable or disable swapping, exclude account from fees, update gas processing value, enable trading and swap functionality, claim stuck tokens, set the last processed index, update the claim wait period, change the treasury wallet address, and claim the address for claimee.  In the contract `Ownable`, the role `_owner` has authority over the functions shown in the diagram below. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority and renounce current ownership or transfer ownership to a new address. 
`100_000_000 * (10 ** 9)` of the `NINA` tokens are sent to the contract deployer or one or several externally-owned account (EOA) addresses. This is a centralization risk because the deployer or the owner(s) of the EOAs can distribute tokens without obtaining the consensus of the community. Any compromise to these addresses may allow a hacker to steal and sell tokens on the market, resulting in severe damage to the project.
The function call `_transfer()` will never revert, even though executing the external call `dividendTracker.process(gas)` is failed. The current implementation above applies `try-catch` statement. Since no action is implemented in `catch` statement, it will ignore the exceptions when executing the external function `dividendTracker.process(gas)`. Therefore, although the external call `dividendTracker.process(gas)` reverts, the function `_transfer()` will still take the fees and transfer the tokens, as if no exception has occurred. However, the function would fail to update the user's reward, and the user could not receive rewards as expected.
```solidity=912 uint256 public gasForProcessing = 300_000; ``` ```solidity=1174 uint256 gas = gasForProcessing; try dividendTracker.process(gas) returns (uint256 iterations, uint256 claims, uint256 lastProcessedIndex) { ``` At the last step of function `_transfer` will call `dividendTracker.process` with constant gas limitation `300000`. But there may be not enough 300 thousand gas till this step. EVM may revert this call and return the out-of-gas exception.
In the contract constructor, `burnFeeOnBuy` is initialized to `1` and assigned twice, but the `burnFeeOnSell` variable is left uninitialized. Failing to initialize `burnFeeOnSell` may result in undefined or unexpected behavior when the contract attempts to use this value, leading to a potential free sell operation.
The report names a repository or files. Open the report to see its scope.
Repository and files the report names (1)
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