zkSwap Finance security record

BNB Chain, zkSynczkswap.financeX

As of 3 Nov 2026, zkSwap Finance has 3 audit reports by 3 security firms on Trustblock; the latest is by SolidProof, dated 18 Mar 2024. Those reports list no open critical findings. It also holds 9 deployed contracts on 2 chains.

Critical findings
No open critical findings
Across 3 reports.
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.

Audits3

Newest first

AuditSecurity firmDateScopeCritical findingsReport
Zkswap FinanceSecurity firm: SolidProofDate: Scope: 8 addresses on BNB ChainNo open critical findingsOpen · IPFS
zkSwap FinanceSecurity firm: CyberscopeDate: Scope: 1 address on zkSyncNo open critical findingsOpen · cyberscope.io
Zkswap Finance - AuditSecurity firm: CertiKDate: Scope: Files named in the reportNo open critical findingsOriginal removed

Findings10

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

SeverityOpenAcknowledgedFixed
Critical000
High100
Medium000
Low612
HighCentralization Related RisksZkswap Finance - Audit · CertiK · 27 Dec 2023Open

In the contract `ZFFactory` the role `feeToSetter` has authority over the functions shown in the diagram below. Any compromise to the `feeToSetter` account may allow the hacker to take advantage of this authority. - set the address of `feeTo` - set `swapFee` - set protocol fee factor - set the address of `pendingFeeToSetter`, who can accept the `feeToSetter` role - set swap fee point override for a pair ![](https://accelerator-tasks-prod.acc.corp.certik.com/11ee-8f2f-f5a043e0-b9cc-f3f0cf7641f2/diagrams/centralization_ZFFactory-ZFFactory-feeToSetter.svg) In the contract `ZFFactory` the role `pendingFeeToSetter` has authority over the functions shown in the diagram below. Any compromise to the `pendingFeeToSetter` account may allow the hacker to take advantage of this authority. - accept the `feeToSetter` role ![](https://accelerator-tasks-prod.acc.corp.certik.com/11ee-8f2f-f5a043e0-b9cc-f3f0cf7641f2/diagrams/centralization_ZFFactory-ZFFactory-pendingFeeToSetter.svg) In the contract `ZFPair` the role `factory` has authority over the functions shown in the diagram below. Any compromise to the `factory` account may allow the hacker to take advantage of this authority. - set the `swapFeeOverride` ![](https://accelerator-tasks-prod.acc.corp.certik.com/11ee-8f2f-f5a043e0-b9cc-f3f0cf7641f2/diagrams/centralization_ZFPair-ZFPair-factory.svg)

Open the report
LowUntitled findingzkSwap Finance · Cyberscope · 13 Jan 2024Open

The report gives no description here.

Open the report
LowUntitled findingzkSwap Finance · Cyberscope · 13 Jan 2024Open

The report gives no description here.

Open the report
Low`indexedPairs` Not Update When Users Remove LiquiZkswap Finance - Audit · CertiK · 27 Dec 2023Open

We note that the variable `indexedPairs` is used to keep track of users who add liquidity, but does not remove the user from the variable `indexedPairs` after the user removes liquidity completely.

Open the report
LowLack of reasonable limitZkswap Finance - Audit · CertiK · 27 Dec 2023Open

The `setProtocolFeeFactor()` function allows the `feeToSetter` to set the minimum `protocolFeeFactor` as 2, which means half of the fee will be charged and sent to the `_feeTo`. The popular DEXs Uniswap V2 charges 1/6 and Pancake charges 1/4. ```solidity function _getFeeLiquidity(uint _totalSupply, uint _rootK2, uint _rootK1, uint8 _feeFactor) private pure returns (uint) { uint numerator = _totalSupply * (_rootK2 - _rootK1); uint denominator = (_feeFactor - 1) * _rootK2 + _rootK1; return numerator / denominator; } ```

Open the report
LowMissing Zero Address ValidationZkswap Finance - Audit · CertiK · 27 Dec 2023Open

Addresses are not validated before assignment or external calls, potentially allowing the use of zero addresses and leading to unexpected behavior or vulnerabilities. For example, transferring tokens to a zero address can result in a permanent loss of those tokens. ```solidity=34 feeToSetter = _feeToSetter; ``` - `_feeToSetter` is not zero-checked before being used. --- ```solidity=69 feeTo = _feeTo; ``` - `_feeTo` is not zero-checked before being used. --- ```solidity=86 pendingFeeToSetter = _feeToSetter; ``` - `_feeToSetter` is not zero-checked before being used. --- ```solidity=53 token0 = _token0; ``` - `_token0` is not zero-checked before being used. --- ```solidity=54 token1 = _token1; ``` - `_token1` is not zero-checked before being used. --- ```solidity=19 factory = _factory; ``` - `_factory` is not zero-checked before being used. --- ```solidity=20 WETH = _WETH; ``` - `_WETH` is not zero-checked before being used.

Open the report
LowUnsafe Integer CastZkswap Finance - Audit · CertiK · 27 Dec 2023Open

Type casting refers to changing an variable of one data type into another. The code contains an unsafe cast between integer types, which may result in unexpected truncation or sign flipping of the value. ```solidity=109 principal0: uint112(liquidity * _reserve0 / _totalSupply), ``` Casted expression `liquidity * _reserve0 / _totalSupply` has estimated range [0, 115792089237316195423570985008687907853269984665640564039457584007913129639935] but target type `uint112` has range [0, 5192296858534827628530496329220095]. --- ```solidity=110 principal1: uint112(liquidity * _reserve1 / _totalSupply), ``` Casted expression `liquidity * _reserve1 / _totalSupply` has estimated range [0, 115792089237316195423570985008687907853269984665640564039457584007913129639935] but target type `uint112` has range [0, 5192296858534827628530496329220095]. --- ```solidity=118 principal0: uint112(liquidity * _reserve0 / _totalSupply), ``` Casted expression `liquidity_scope_0 * _reserve0 / _totalSupply` has estimated range [0, 115792089237316195423570985008687907853269984665640564039457584007913129639935] but target type `uint112` has range [0, 5192296858534827628530496329220095]. --- ```solidity=119 principal1: uint112(liquidity * _reserve1 / _totalSupply), ``` Casted expression `liquidity_scope_0 * _reserve1 / _totalSupply` has estimated range [0, 115792089237316195423570985008687907853269984665640564039457584007913129639935] but target type `uint112` has range [0, 5192296858534827628530496329220095].

Open the report

Contracts9

AddressChainSource code
0x1179adfa22dd0e5050c1c00c9f8543a77f75a2c0Chain: BNB ChainSource code: Verified source
0xddfcdaacc836dd5a1ae2d375ffb153ce59dd09ffChain: BNB ChainSource code: Verified source
0x6af7a605953c0b462ee9540217f5bd80878c6b2eChain: BNB ChainSource code: Verified source
0xc54d35a8cfd9f6dae50945df27a91c9911a03ab1Chain: BNB ChainSource code: Verified source
0x13f4ea83d0bd40e75c8222255bc855a974568dd4Chain: BNB ChainSource code: Verified source
0x25a55f9f2279a54951133d503490342b50e5cd15Chain: BNB ChainSource code: Verified source
0xee1bcc9f1692e81a281b3a302a4b67890ba4be76Chain: BNB ChainSource code: Verified source
0x150c8abeb487137accc541925408e73b92f39a50Chain: BNB ChainSource code: Verified source
0x31c2c031fdc9d33e974f327ab0d9883eae06ca4aChain: zkSyncSource code: Verified source

All 9 addresses and the 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="zkswap-finance"
></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