CertiK reviewed Magic Shoes on 28 Jun 2023: 15 findings, 0 critical; 9 marked fixed, 3 acknowledged, 3 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 | 2 |
| Medium | 0 | 1 | 4 |
| Low | 3 | 0 | 3 |
Base version: In the contract `MCT` the role `_owner` has authority over the functions shown in the diagram below.  - function `claimUnvestedMiningPoolTokens()`, to claim unvested mining pool tokens. - function `claimUnvestedAirdropTokens()`, to claim unvested airdrop tokens. - function `claimUnvestedReservePoolTokens()`, to claim unvested reserve pool tokens. - function `claimUnvestedOperationalPoolTokens()`, to claim unvested operational pool tokens. - function `claimUnvestedTeamTokens()`, to claim unvested team tokens. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority. Updated version: In the contract `MCT` 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. In the contract `MCT` the role `_signer` has authority over the functions shown in the diagram below.  Any compromise to the `_signer` account may allow the hacker to take advantage of this authority. In the contract `MCT` the role `isSigner` has authority over the functions shown in the diagram below.  Any compromise to the `isSigner` account may allow the hacker to take advantage of this authority.
`initialSupply_` amount of **MCT** tokens are sent to an unknown EOA address `0x8824fE9FA03d3716A762375867FAC2052Cd54A8C` when deploying the contract. `INVESTOR_ALLOCATION` amount of **MCT** tokens are sent to an address `INVESTOR_POOL` when deploying the contract. This is a potential centralization risk as these addresses can distribute **MCT** tokens without the consensus of the community.
Performing integer division before multiplication truncates the low bits, losing the precision of the calculation. For example, the `weeksElapsed` is 1.5 weeks, and the truncated result is 1 week. However, the poolLastClaimTime[poolId] is updated to the current time. Then the 0.5 week unvested tokens will be locked forever. ```solidity=136 weeksElapsed = timeDiff / 1 weeks; ``` ```solidity=139 uint256 weeklyReward = poolAllocation / vestingPeriod; ``` ```solidity=140 uint256 totalReward = weeksElapsed * weeklyReward; ``` --- ```solidity=178 uint256 weeksElapsed = timeDiff / 1 weeks; /// @dev solidity handles overflow ``` ```solidity=194 uint256 weeklyVesting = investment[from] / 52 weeks; ``` ```solidity=195 uint256 amountVested = weeklyVesting * weeksElapsed; ```
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