Celer Network security record

Arbitrum, Ethereum, zkSyncceler.networkXGitHub

As of 21 Oct 2026, Celer Network has 3 audit reports by 2 security firms on Trustblock; the latest is by PeckShield, dated 15 Feb 2023. Those reports list no open critical findings.

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 and findings, contracts and incidents up to Oct 2026. Trustblock does not review code.

Audits3

Newest first

AuditSecurity firmDateScopeCritical findingsReport
Celer: Celer MultiBridge auditSecurity firm: PeckShieldDate: Scope: Not recorded (see the report)No open critical findingsOpen · GitHub
Celer Layer2 Finance v2Security firm: CertiKDate: Scope: Files named in the reportNo open critical findingsOpen · skynet.certik.com
Celer NetworkSecurity firm: CertiKDate: Scope: Files named in the reportNo open critical findingsOpen · skynet.certik.com

Findings73

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

SeverityOpenAcknowledgedFixed
Critical000
High000
Medium000
Low30043
LowAddress parameters not verifiedCeler Layer2 Finance v2 · CertiK · 25 Jun 2021Open

The linked address parameters are not verified to be non-zero before assigning them to state variable which cannot be modified in the future.

Open the report
LowAnyone can induce a withdraw for an arbitrary accCeler Layer2 Finance v2 · CertiK · 25 Jun 2021Open

The external `withdraw` and `withdrawETH` functions in the `RollupChain` contract both take an arbitrary `_account` address parameter instead of utilizing `msg.sender`, which allows anyone to request a withdraw for a particular account without permission for `msg.sender` to do so, which may be undesired by the account owning the funds.

Open the report
LowArbitrary wETH address parametersCeler Layer2 Finance v2 · CertiK · 25 Jun 2021Open

The linked lines contain arbitrary address parameters which are intended to represent the wETH address.

Open the report
LowAsset not verified to exist in registry before drCeler Layer2 Finance v2 · CertiK · 25 Jun 2021Open

The external `drainToken` function in the `RollupChain` contract does not verify if the supplied `_asset` address exists within the `registry` prior to the transfer.

Open the report
LowOwner can change block challenge period at any tiCeler Layer2 Finance v2 · CertiK · 25 Jun 2021Open

The external `setBlockChallengePeriod` function in the `RollupChain` contract allows the owner to change the period in which blocks are allowed to be challenged at any time.

Open the report
LowOwner can change maximum priority transaction delCeler Layer2 Finance v2 · CertiK · 25 Jun 2021Open

The external `setMaxPriorityTxDelay` function in the `RollupChain` contract allows the owner to change the maximum priority transaction delay at any time.

Open the report
LowOwner can change strategy implementation at any tCeler Layer2 Finance v2 · CertiK · 25 Jun 2021Open

The owner of the contract can change the implementation address associated with the supplied `_strategyId` at any time

Open the report
LowOwner can drain any ERC-20 when pausedCeler Layer2 Finance v2 · CertiK · 25 Jun 2021Open

The external `drainToken` function in the `RollupChain` contract allows the owner of the contract to drain any specified ERC-20 token when the contract is in a paused state.

Open the report
LowOwner can drain ETH sent to contract when pausedCeler Layer2 Finance v2 · CertiK · 25 Jun 2021Open

The external `drainETH` function in the `RollupChain` contract allows the owner of the contract to drain any ETH sent to the contract when the contract is in a paused state.

Open the report
LowOwner can set net deposit limit for any existingCeler Layer2 Finance v2 · CertiK · 25 Jun 2021Open

The external `setNetDepositLimit` function in the `RollupChain` contract allow the owner to set the net deposit limit for the supplied `_asset` at any time.

Open the report
Show 10 more
LowRedundant reading of state variables from storageCeler Layer2 Finance v2 · CertiK · 25 Jun 2021Open

The linked lines read state variables from storage redundantly, which is inefficient.

Open the report
LowUnchecked casting of uint to lower bit count contCeler Layer2 Finance v2 · CertiK · 25 Jun 2021Open

The linked lines may truncate due to casting `uint` values with a higher bit count into `uint` values with a lower bit count without verifying that the `uint` values with higher bit counts are valid within the bounds of a `uint` value with a lower bit count.

Open the report
LowUnrestricted receive function allows anyone to seCeler Layer2 Finance v2 · CertiK · 25 Jun 2021Open

The receive function in the `RollupChain` contract allows anyone to send ETH to the contract, which can be unintentional.

Open the report
LowWithdraws larger than net deposit are truncatedCeler Layer2 Finance v2 · CertiK · 25 Jun 2021Open

The private `_withdraw` function in the `RollupChain` contract allows the `pendingWithdraws` value for the supplied `_account` and `_asset` to be larger than what is available in `netDeposits` for the supplied `_asset`. This is possible due to setting the `netDeposits` for the supplied `_asset` to zero on L526 and setting the `pendingWithdraws` for the supplied `_account` and `_asset` to zero on L530, effectively truncating the withdraw to only what is available in `netDeposits` for the supplied `_asset` without emitting an event or tracking how much the withdraw was truncated by. The function also returns the amount that was requested in `pendingWithdraws` instead of the actual amount that was available in `netDeposits`, which can affect any functionality relying on the result of the function.

Open the report
LowAbility of Owner to withdraw at WillCeler Network · CertiK · 23 Oct 2020Open

The function on the aforementioned line allows the owner of contract to withdraw celerToken funds at will. Although, it does not compromise the security of the system in any way but the owner has to be trusted to maintain the funds of the contract.

Open the report
LowAbility of Owner to withdraw at WillCeler Network · CertiK · 23 Oct 2020Open

The function on the aforementioned line allows the owner of contract to withdraw celerToken funds at will. Although, it does not compromise the security of the system in any way but the owner has to be trusted to maintain the funds of the contract.

Open the report
LowIncorrect order of functionsCeler Network · CertiK · 23 Oct 2020Open

The structure of the codebase does not conform to the official Solidity style guide of v0.5.x .

Open the report
LowIneffectual if statementCeler Network · CertiK · 23 Oct 2020Open

The if statements on the aforementioned lines have hardcoded false conditional as predicate which makes the if statement and its block ineffectual. As the comment at the top of library indicates that it is a code generated library and the rectification may require changes in the tool used to generate this library. The exhibit is informational and can be safely ignored.

Open the report
LowInefficient storage ReadCeler Network · CertiK · 23 Oct 2020Open

The for-loop on the aforementioned lines makes use of inefficient storage read operations on the lines L767 and L768 with the use of d.intentStartIndex . Although, the enclosing function is a view type and is never called from within the contract but a possible call from another contract will be gas inefficient.

Open the report
LowInexistence of reason in Require StatementsCeler Network · CertiK · 23 Oct 2020Open

The require statements on the aforementioned lines do not specify reason string . The reason string s should be provided to require statements to aid debugging and readability of the code.

Open the report
Show 10 more
LowMissing check for the valid inputCeler Network · CertiK · 23 Oct 2020Open

The functions on the aforementioned lines has parameter lock end time . There are no checks in the function to assert against a valid value of it which should be greater than block.number .

Open the report
LowPotential Overflow of bytes ArrayCeler Network · CertiK · 23 Oct 2020Open

The addition of idx and len is Unsafe and can potentially overflow resulting in the followed require check potentially passing despite the overflow. Additionally, The require statements on the aforementioned lines check against that the current read index idx should not exceed the length of buf , which is of type bytes . As the idx starts from 0 and the length of buf starts from 1 , if in any case idx is equal to length of buf , the require statement evaluates to true and the memory read in that case would not be a part of buf as the idx would have oveflown

Open the report
LowRedundant initialization with default valueCeler Network · CertiK · 23 Oct 2020Open

The aforementioned lines declare variables of type uint256 and initialize it with 0 . In Solidity, all un-initialized variables have a default value which for the uint256 variable is 0 , hence the initialization part is redundant and can be removed.

Open the report
LowStorage Updated after External CallCeler Network · CertiK · 23 Oct 2020Open

The code on the aforementioned lines update storage after making an external call which violates the checkseffects-interactions pattern and poses threat for reentrancy attack. Reference the Check Effects Interactions pattern: https://fravoll.github.io/solidity-patterns/checks_effects_interactions.html

Open the report
LowStorage Updated after External CallCeler Network · CertiK · 23 Oct 2020Open

The code on the aforementioned lines update storage after making an external call which violates the checkseffects-interactions pattern and poses threat for reentrancy attack. Reference the Check Effects Interactions pattern: https://fravoll.github.io/solidity-patterns/checks_effects_interactions.html

Open the report
LowSubstitution of require calls with ModifierCeler Network · CertiK · 23 Oct 2020Open

The `require` statement on the aforementioned lines can be converted into a modifier to avoid code duplication and increase the legibility of the code.

Open the report
LowSubstitution of require calls with ModifierCeler Network · CertiK · 23 Oct 2020Open

The require statement on the aforementioned lines can be converted into a modifier to avoid code duplication and increase the legibility of the code.

Open the report
LowSubstitution of require calls with ModifierCeler Network · CertiK · 23 Oct 2020Open

The require statement on the aforementioned lines can be converted into a modifier to avoid code duplication and increase the legibility of the code.

Open the report
LowUsage of `uint` alias instead of `uint256`Celer Network · CertiK · 23 Oct 2020Open

The library is using uint to declare 256-bit unsigned integers. Although, uint is an alias for uint256 and both represent the same underlying integer allocation. It is advisable that for clean coding practices the complete form uint256 should be used instead of the alias uint .

Open the report
LowUsage of uint alias instead of uint256Celer Network · CertiK · 23 Oct 2020Open

The library is using uint to declare 256-bit unsigned integers. Although, uint is an alias for uint256 and both represent the same underlying integer allocation. It is advisable that for clean coding practices the complete form uint256 should be used instead of the alias uint . As the comment at the top of library indicates that it is a code generated library and the rectification may require changes in the tool used to generate this library. The exhibit is informational and can be safely ignored.

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="celer-network"
></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