THE Protocol ($THE) - Audit

CertiK1 address on Ethereum

CertiK reviewed THE Protocol (THE Protocol ($THE) - Audit) on 31 Oct 2022: 18 findings, 0 critical; 4 marked fixed, 14 open.

No open critical findings
Open the reportOpen THE Protocol’s security record

Report hosted on skynet.certik.com.

Trustblock does not review code.

Findings18

Statuses are the security firm’s own, from its report.

SeverityOpenAcknowledgedFixed
Critical000
High201
Medium000
Low1203
HighCentralization RisksFixed

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. ![](https://accelerator-tasks-prod.acc.corp.certik.com/7e68a641f72847208a59eec7b457f01f/diagrams/centralization_THEPROTOCOL-Ownable-_owner.svg) 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. ![](https://accelerator-tasks-prod.acc.corp.certik.com/7e68a641f72847208a59eec7b457f01f/diagrams/centralization_THEPROTOCOL-THEPROTOCOL-_owner.svg) 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.

LowMissing Zero Address ValidationFixed

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.

LowMistakenly Calculating Max WalletFixed

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"); ```

LowPotential Loss of PrecisionFixed

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; } ```

Contracts in scope1

AddressChainSource code
0x0cba60ca5ef4d42f92a5070a8fedd13be93e2861Chain: EthereumSource code: Verified source

Part of THE Protocol’s security record

THE Protocol
Audits1 audit by 1 firmLast audit Oct 2022, by CertiK.
Critical findingsNo open critical findingsIn 1 report.
Open THE Protocol’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