CertiK reviewed THE Protocol (THE Protocol ($THE) - Audit) on 31 Oct 2022: 18 findings, 0 critical; 4 marked fixed, 14 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 | 2 | 0 | 1 |
| Medium | 0 | 0 | 0 |
| Low | 12 | 0 | 3 |
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 change the ownership of the contract.  In the contract `THEPROTOCOL` 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 change the configuration of the contract.  Additionally, There are some wallets, i.e. `marketingWallet`, `devWallet`, which gather ETH on each call to `swapBack()` function, over time, these wallets would gain a lot of ETH.
Addresses should be checked before assignment or external call to make sure they are not zero addresses. ```solidity=1287 marketingWallet = newMarketingWallet; ``` - `newMarketingWallet` is not zero-checked before being used. --- ```solidity=1292 devWallet = newWallet; ``` - `newWallet` is not zero-checked before being used.
When calculating the token balance of `to` address after the transfer, the `amount` is with fees. The token balance of the receiver may not exceed the max wallet without including the fees. ```solidity require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); ```
When accumulating the fees in function `_transfer()`, the variables `tokensForLiquidity`, `tokensForDev` and `tokensForMarketing` are calculating as below. However, `tokensForLiquidity + tokensForDev + tokensForMarketing` may be less than `fees` in this way because of the loss of accuracy. ```solidity=1417 // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0){ fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees; tokensForDev += fees * sellDevFee / sellTotalFees; tokensForMarketing += fees * sellMarketingFee / sellTotalFees; } // on buy else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees; tokensForDev += fees * buyDevFee / buyTotalFees; tokensForMarketing += fees * buyMarketingFee / buyTotalFees; } ```
| Address | Chain | Source code |
|---|---|---|
| 0x0cba…28610x0cba60ca5ef4d42f92a5070a8fedd13be93e2861 | Chain: Ethereum | Source code: Verified source |
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