CertiK reviewed Shopdi on 27 Sep 2022: 10 findings, 0 critical; 7 marked fixed, 2 acknowledged, 1 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 | 1 | 0 |
| Medium | 0 | 1 | 0 |
| Low | 1 | 0 | 7 |
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 call the `inCaseTokenGetStuck()` function to claim any stuck tokens held by the contract for themselves and transfer or renounce ownership.   In the contract `Token` the role `gnosisSafeWallet` has authority over the functions shown in the diagram below. Any compromise to the `gnosisSafeWallet` account may allow the hacker to take advantage of this authority and exploit the contract in multiple ways. 1) The hacker could mint as many tokens as they want and send it to anyone. 2) They could change the `TokenStrategy` address, which receives all the tax amount. 3) They could increase the `transferTaxRate`, in addition to changing the `TokenStrategy` address, which would lead to more tax being sent to the `TokenStrategy` address, on every transfer that's not excluded from tax. 4) They could modify the `maxTransferAmountRate` variable, which decides the maximum amount that a user can transfer. 5) They could modify the `_excludedFromAntiWhale` array using the `setExcludedFromAntiWhale()` function. It could lead users to bypass the limit set by `maxTransferAmountRate`. The hacker could set the `maxTransferAmountRate` to be really low, and dictate who can transfer the tokens using `_excludedFromAntiWhale` array. 6) They could use the `setExcludedFromTax()` function to enable the users, who previously did not have to pay tax, to pay tax. 
There is a `BURN_ADDRESS` variable in the contract, and every time tokens are burnt, it is checked whether the balance of the `BURN_ADDRESS` is above `MAX_BURN`. However, the `_burn()` function does not send or keep track of the burnt tokens.
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