CertiK reviewed ChainPort Cross-Chain Bridge (Chainport (Sol part)) on 26 Jan 2023: 18 findings, 0 critical; 3 marked fixed, 5 acknowledged, 10 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 | 5 | 0 |
| Medium | 2 | 0 | 1 |
| Low | 8 | 0 | 2 |
The function `initialize()` is `public` and can be called by anyone as long as the contract is deployed.
Cross-chain token transfer depends on the third-party cross-chain protocol. If the cross-chain protocol is hacked, the `Chainprot` protocol in the side chain cannot confirm the transaction status correctly. As a result, the user burns tokens in the side chain but cannot receive them in the target chain.
`public` functions that are never called by the contract could be declared as `external`. `external` functions are more efficient than `public` functions.
When transferring standard ERC20 deflationary tokens, the input amount may not be equal to the received amount due to the charged transaction fee.
There should always be events emitted in the sensitive functions that are controlled by centralization roles.
The **require** can be used to check for conditions and throw an exception if the condition is not met. It is better to provide a string message containing details about the error that will be passed back to the caller.
The given input is missing the check for the non-zero address.
The `token` address is alway the address of `_chainportToken`, so the variable is redundant.
The contract is serving as the underlying entity to interact with third-party `ChainportMiddlewareV2`, `ChainportMiddleware`, `IBridgeMintableTokenV2`, `IValidator` protocols. The scope of the audit treats 3rd party entities as black boxes and assume their functional correctness. However, in the real world, 3rd parties can be compromised and this may lead to lost or stolen assets. In addition, upgrades of 3rd parties can possibly create severe impacts, such as increasing fees of 3rd parties, migrating to new LP pools, etc.
The linked lines can be replaced with the modifier `onlyIfCreatedByTheBridge`.
The report names a repository or files. Open the report to see its scope.
Repository and files the report names (4)
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