CertiK reviewed Blockrover (Blockrover - Audit) on 18 Jul 2023: 11 findings, 0 critical; 5 marked fixed, 6 acknowledged.
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 | 0 | 1 |
| Low | 0 | 4 | 4 |
The lower bound for `totBuyTax` and `totSellTax` are not set in function `setBuyTaxes` and `setSellTaxes`. When `totSellTax` is set to 0, it will raise an Denial of Service issue in `swapForFees` function: ```solidity=310 uint256 denominator = totSellTax * 2; uint256 tokensToAddLiquidityWith = contractBalance * sellTaxes.liquidity / denominator; uint256 toSwap = contractBalance - tokensToAddLiquidityWith; ``` Since `totSellTax` is 0, the `denominator` will be 0 and the transaction will be reverted due to the divided by zero issue.
Currently when the `marketingWallet` and `devWallet` addresses is updated in function `updateMarketingWallet` and `updateDevWallet`. The old `marketingWallet` and `devWallet` addresses are still included in the `excludedFromFees` mapping even after being replaced by new addresses. ```solidity=602 function updateMarketingWallet(address newWallet) external onlyOwner{ marketingWallet = newWallet; } function updateDevWallet(address newWallet) external onlyOwner{ devWallet = newWallet; } ``` It is important to note that this situation could also potentially occur when ownership is transferred to a new owner as well. The old owner must be manually removed from the exclusion and the new owner must be manually added to the fee exclusion.
There should always be events emitted in the sensitive functions that are controlled by centralization roles.
Addresses are not validated before assignment or external calls, potentially allowing the use of zero addresses and leading to unexpected behavior or vulnerabilities. For example, transferring tokens to a zero address can result in a permanent loss of those tokens. ```solidity=394 marketingWallet = newWallet; ``` - `newWallet` is not zero-checked before being used. --- ```solidity=398 devWallet = newWallet; ``` - `newWallet` is not zero-checked before being used. --- ```solidity=402 router = _router; ``` - `_router` is not zero-checked before being used. --- ```solidity=403 pair = _pair; ``` - `_pair` is not zero-checked before being used.
The auditor understands the necessity of the `receive()` payable function in the current contract. However, after each call to "swapForFees()", the contract accumulates a small number of native tokens, which after a period becomes significant. And based on current implementation, these assets can not be withdrawn.
The report names a repository or files. Open the report to see its scope.
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