CertiK reviewed KonPay (kon-mainnet) on 25 Mar 2022: 8 findings, 0 critical; none marked fixed.
The original report was removed from its address (seen 15 Oct 2026).
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 | 0 |
| Medium | 1 | 0 | 0 |
| Low | 5 | 0 | 0 |
To bridge the gap in trust between the administrators need to express a sincere attitude regarding the considerations of the administrator teamʼs anonymity. The `owner` of `erc20_hexlant_fix_v3` has the responsibility to notify users about the following capabilities: - transfer ownership through `transferOwnership()` - remove pauser through `removePauser()` The `newOwner` of `erc20_hexlant_fix_v3` has the responsibility to notify users about the following capabilities: - accept ownership through `acceptOwnership()` The `pauser` of `erc20_hexlant_fix_v3` has the responsibility to notify users about the following capabilities: - add pauser account through `addPauser()` - pause contract through `pause()` - unpause contract through `unpause()` - freeze account through `freezeAccount()` - unfreeze account through `unfreezeAccount()` - lock some of the tokens of account through `lockByQuantity()` - unlock some of the tokens of account through `unlockByQuantity()` - transfer tokens to account and lock it through `transferWithLock()` - unlock accountʼs tokens through `unlock()` Any compromise to the privileged account may allow a hacker to take advantage of this authority.
`amount * 10 ** uint256(decimals)` tokens were sent to the `msg.sender` when deploying the contract. This could be a centralization risk as the deployer can distribute tokens without obtaining the consensus of the community.
If `totalLocked` is equal to `value`, then require may return false and the transaction will be rolled back.
1, The functions `addPauser` and `removePauser` control the same allowlist but has a different modifier. 2, The functions `lockByQuantity` and `unlockByQuantity` check if the account is frozen while functions `transferWithLock` and `unlock` do not. This creates some confusion on whether the check is needed for all these operations or not.
`public` functions that are never called by the contract could be declared `external`. When the inputs are arrays, `external` functions are more efficient than `public` functions.
`require` can be used to check for conditions and throw an exception if the condition is not met, in which case the descriptive error message provided by the developer will appear and help to track error and debugging.
The linked statements do not affect the functionality of the codebase and appear to be either leftovers from test code or older functionality.
The contract has an unlocked compiler version. An unlocked compiler version in the source code of the contract permits the user to compile it at or above a particular version. This, in turn, leads to differences in the generated bytecode between compilations due to differing compiler version numbers. This can lead to ambiguity when debugging as compiler-specific bugs may occur in the codebase that would be hard to identify over a span of multiple compiler versions rather than a specific one.
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