ChainPort Cross-Chain Bridge security record

Arbitrum, BNB Chain, Ethereum, Fantom, Polygon (POS)chainport.ioX

As of 3 Nov 2026, ChainPort Cross-Chain Bridge has 5 audit reports by 2 security firms on Trustblock; the latest is by Zokyo, dated 3 Jan 2024. Those reports list no open critical findings.

Critical findings
No open critical findings
Across the 5 reports, 1 critical finding was reported. It is marked fixed by the firm that reported it. See the findings
Open the latest report
Your label, live
Get the label for your site

Record last updated . It holds audits, findings and contracts up to Nov 2026, and incidents up to Oct 2026. Trustblock does not review code.

Audits5

Newest first

AuditSecurity firmDateScopeCritical findingsReport
ChainportSecurity firm: ZokyoDate: Scope: Not recorded (see the report)No open critical findingsOpen · IPFS
Chainport2023Security firm: CertiKDate: Scope: Not recorded (see the report)No open critical findingsOpen · skynet.certik.com
Chainport (PORT)Security firm: CertiKDate: Scope: Not recorded (see the report)No open critical findingsOpen · skynet.certik.com
Chainport (Sol part)Security firm: CertiKDate: Scope: Files named in the reportNo open critical findingsOpen · skynet.certik.com
ChainPort-Cardano BridgeSecurity firm: CertiKDate: Scope: Not recorded (see the report)1 critical finding, fixedOpen · skynet.certik.com

Findings63

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

SeverityOpenAcknowledgedFixed
Critical000
High061
Medium804
Low20024
HighSource of information centralization related riskChainport2023 · CertiK · 20 Jul 2023Acknowledged

A distinguishing characteristic of a distributed system running a Byzantine Fault Tolerant consensus algorithm is the possibility to tolerate malicious or, more generally, incorrect behaviors by a node or a subset of nodes which contribute in running the system. The amount of Byzantine nodes that can be tolerated varies system by system and is mostly influenced by the the adopted consensus algorithm. When interacting with such a system, users need to keep into account the Byzantine Fault Tolerant nature of the system. In particular, when reading from the state of the system, a user should ensure that the information it is gathering is effectively part of the state of the system, i.e.: 1. is not part of a transient or uncommitted state; 2. it was not forged or tampered by a malicious node. Such guarantees can be generally verified by contacting several nodes of the distributed system and by comparing the gathered information to check that they are consistent. The number of nodes to contact varies according to the consensus algorithm and it is greater than the number of tolerated Byzantine failures. If there are many general use cases where this practice is relaxed due to the relatively small impact of the performed operations, a sensitive and impactful case like a cross-chain bridge can not avoid to carefully ensure the truthfulness of the information it is relying on. In particular, the Chainport bridge, according to its architecture, triggers cross-chain transfers by listening events on both side of the bridge. When a new deposit is detected on one side, then a mint/withdraw is performed on the other side. So, the whole bridge correctness depends on the truthfulness of these events. The provided codebase detects new events and obtains Cardano information by contacting the `Blockfrost` service through its API. In this way the whole bridge correctness and reliability is directly tied to the correctness and the reliability of the `Blockfrost` service, making it a single point of trust and a single point of failure. The single point of trust problem brings the risk of the bridge misbehaving because of incorrect information gathered from the `Blockfrost` service. The service corruption or deliberate misbehavior, like reporting an uncommitted deposit transaction, could bring to an unwanted token mint/release. The single point of failure, meant from the availability point of view, directly affects the bridge since the `Blockfrost` unavailability directly means a bridge unavailability.

Open the report
HighCentralization Related Risks In ChainportFeeManagChainport (Sol part) · CertiK · 26 Jan 2023Acknowledged

In the contract `ChainportFeeManager`, the role `Maintainer` has authority over the following functions: - function takePortFee(), to take fees in PORTX. - function withdrawFees(), to withdraw collected fees. Any compromise to the `Maintainer` account may allow a hacker to take advantage of this authority. In the contract `ChainportFeeManager`, the role `ChainportCongress` has authority over the following functions: - function whitelistFeeCollector(), to whitelist fee collectors. - function blacklistFeeCollector(), to blacklist fee collectors. Any compromise to the `ChainportCongress` account may allow a hacker to take advantage of this authority.

Open the report
HighCentralization Related Risks In ChainportMainBridChainport (Sol part) · CertiK · 26 Jan 2023Acknowledged

In the contract `ChainportMainBridge`, the role `Maintainer` has authority over the following functions: - function freezeBridge(), to freeze the bridge. Users cannot deposit or release tokens in a frozen bridge. - function freezeAssetByMaintainer(), to freeze the asset. The frozen asset cannot be deposited or released. - function activateNetwork(), to establish the network support. Users cannot deposit tokens to an inactive network. - function setPathPauseState(), to disable/enable bridge functionality for an asset. - function releaseFeesByMaintainer(), to release fees to fee collector. - function releaseTokensByMaintainer(), to release funds to whitelisted address. Any compromise to the `Maintainer` account may allow a hacker to take advantage of this authority. In the contract `ChainportMainBridge`, the role `ChainportCongress` has authority over the following functions: - function setBridgeFreezeState(), to freeze/unfreeze a bridge. Users cannot deposit or release tokens in a frozen bridge. - function setAssetFreezeState(), to freeze/unfreeze an asset. The frozen asset cannot be deposited or released. - function setNetworkActivityState(), to activate/deactivate a network. Users cannot deposit tokens to an inactive network. - function setFundManager(), to set the fund manager address, which will be added to the whitelist. The whitelisted address receives funds released by `Maintainer` or `ChainportCongress`. - function setAddressesWhitelistState(), to add/remove an address to the whitelist. - function setOfficialNetworkId(), to set official network ID. - function setFeeCollector(), to set the `Chainport` fee collector address. - function releaseFeesByMaintainer(), to release fees to fee collector. - function releaseTokensByMaintainer(), to release funds to whitelisted addresses. Any compromise to the `ChainportCongress` account may allow a hacker to take advantage of this authority.

Open the report
HighCentralization Related Risks In ChainportSideBridChainport (Sol part) · CertiK · 26 Jan 2023Acknowledged

In the contract `ChainportSideBridge`, the role `Maintainer` has authority over the following functions: - function freezeBridge(), to freeze the bridge. - function mintNewToken(), to deploy a new bridge token for an original asset on deployment network. - function mintTokens(), to mint any amount of bridge tokens. - function mintFees(), to mint fees of tokens created by the bridge to fee collector. - function activateNetwork(), to activate support for network with selected `Chainport` ID and enable cross chain transfer. - function freezeAssetsByMaintainer(), to freeze the asset functionalities. - function setPathPauseState(), to disable/enable bridge functionality for an asset. - function pauseBridgeMintableToken(), to pause the bridge token. - function blockAddressOnBridgeMintableToken(), to block an address for the bridge token. - function initializeTokenProxyAdminAndLogic(), to set the bridge token implementation contract and its proxy admin, which will be used to deploy the new bridge token. Any compromise to the `Maintainer` account may allow a hacker to take advantage of this authority. In the contract `ChainportSideBridge`, the role `ChainportCongress` has authority over the following functions: - function setBridgeFreezeState(), to freeze/unfreeze the bridge. - function setNetworkActivityState(), to enable/disable cross-network interactions with selected `Chainport` ID. - function setAssetFreezeState(), to freeze/unfreeze assets. - function setSignatureValidator(), to set signature validator. - function setOfficialNetworkId(), to set official network ID. - function setLiquidityPools(), to liquidity pool addresses for bridge tokens. - function setMaxLpDrainagePercent(), to set maximum percent to drain when minting. - function setMintingProtectionTime(), to set time limit for minting large token amounts. - function setMintingFreezeState(), to freeze/unfreeze minting action. - function setThresholdPerToken(), to set thresholds for bridge tokens. The side bridge will free minting tokens if the signature is not in the whitelist and the total minted token amount during protection time exceeds the threshold. - function whitelistSignature(), to whitelist a signature. Minting bridge tokens with a whitelisted signature will not check the minting threshold restriction. - function mintingAndAssetUnfreeze(), to unfreeze minting action and single token. - function setTokenProxyAdmin(), to set the proxy admin of new bridge token. - function setTokenLogic(), to set new bridge token implementation contract address. - function setFeeCollector(), to set `Chainport` fee collector address. Any compromise to the `Maintainer` account may allow a hacker to take advantage of this authority.

Open the report
HighCentralization Risks in BridgeMintableTokenV2TaxaChainport (Sol part) · CertiK · 26 Jan 2023Acknowledged

In the contract `BridgeMintableTokenV2Taxable` the role `chainportBridge` has authority over the functions shown in the diagram below. Any compromise to the `chainportBridge` account may allow the hacker to take advantage of this authority. - `mint()`, to mint unlimited tokens. - `pause()`, to pause token transfer. - `blockAddress()`, to block address. ![](https://accelerator-tasks-prod.acc.corp.certik.com/3146883632ca43ca94482789a0ef33d3/diagrams/centralization_BridgeMintableTokenV2Taxable-BridgeMintableTokenV2Taxable-chainportBridge.svg) In the contract `BridgeMintableTokenV2Taxable` the role `chainportCongress` has authority over the functions shown in the diagram below. Any compromise to the `chainportCongress` account may allow the hacker to take advantage of this authority and set properties and roles. - `mint()`, to mint unlimited tokens. - `pause()`/`unpause`, to pause/unpause token transfer. - `blockAddress()`/`unblockAddress()`, to block/unblock address. - `destroyBlackFunds()`, to burn tokens of an address. ![](https://accelerator-tasks-prod.acc.corp.certik.com/3146883632ca43ca94482789a0ef33d3/diagrams/centralization_BridgeMintableTokenV2Taxable-BridgeMintableTokenV2Taxable-chainportCongress.svg) In the contract `BridgeMintableTokenV2Taxable` the role `taxationGoverningBody` has authority over the functions shown in the diagram below. Any compromise to the `taxationGoverningBody` account may allow the hacker to take advantage of this authority and set tax properties. ![](https://accelerator-tasks-prod.acc.corp.certik.com/3146883632ca43ca94482789a0ef33d3/diagrams/centralization_BridgeMintableTokenV2Taxable-BridgeMintableTokenV2Taxable-taxationGoverningBody.svg)

Open the report
HighCentralized Control of Contract UpgradeChainport (Sol part) · CertiK · 26 Jan 2023Acknowledged

`ChainportMainBridge`, `ChainportFeeManager`, `ChainportSideBridge` and `BridgeMintableTokenV2Taxable` are upgradeable contracts, the owner can upgrade the contract without the community's commitment. If an attacker compromises the account, he can change the implementation of the contract and drain tokens from the contract.

Open the report

Contracts

No deployed address is recorded for these audits.

The reports name a repository or files. Open a report to see its scope.

The repositories and files the reports name

Show this on your site

Is this your project? Show this record on your own website. The label states what the record holds, links to this page and updates by itself. It is free and needs no sign-in.

Content

Facts

Automatic: the three strongest facts of this project’s own record (its last audit and two more), highlighted. They update with the record. Picking a fact turns Automatic off.

Fixed as
Language

Style

Layout
Theme
Accent
Corners

Format

Size
Date
Embed as
HTML
<head>
<script src="https://widget.trustblock.run/project-widget.min.js" defer></script>
</head>
<body>
<div
data-tb-project-widget
data-tb-project-slug="chainport-cross"
></div>
</body>

Paste the code where the label should appear. It uses no API credit and updates by itself.

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