Jelly -Watt2Trade security record

Polygon (POS)watt2trade.com

As of 24 Oct 2026, Jelly -Watt2Trade has 1 audit report on Trustblock, by QuillAudits, dated 16 Oct 2023. That report lists no open critical findings.

Critical findings
No open critical findings
In 1 report.
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.

Audits1

Newest first

AuditSecurity firmDateScopeCritical findingsReport
Jelly -Watt2TradeSecurity firm: QuillAuditsDate: Scope: Files named in the reportNo open critical findingsOpen · quillaudits.com

Findings9

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

SeverityOpenAcknowledgedFixed
Critical000
High002
Medium001
Low006
HighCostly DOS for futureOrder traders due to cancellations array loop execution in withdrawFutureOrder()Jelly -Watt2Trade · QuillAudits · 16 Oct 2023Fixed

When a trader calls withdrawFutureOrder(), it iterates through the FutureCancellations array of the futureOrder to ensure the trader is eligible by first-come-first-serve approach. The issue arises from the cancellations array being a user manipulated array and also never gets decreased. Iterating through such an array where users can decide how large the array can grow could cause a revert due to out of gas error, meaning traders attempting to withdraw their futureOrder would fail causing DOS.

Open the report
HighNot updating on withdrawal opens opportunity to draining fundsJelly -Watt2Trade · QuillAudits · 16 Oct 2023Fixed

The withdrawOptionOrder() function doesn't delete the sell order on withdraw of sell trade as stated here:https://github.com/Watt-2-Trade/dex-smartcontracts/blob/main/contracts/EscrowAccount.sol#L707 . However, it doesn't include any update to the withdrawal. Trader of the optionSellOrder can execute this action for an infinite amount to drain out funds.

Open the report
MediumLack of unwhitelist function on sensitive permission lead to unavertable DOS privilegeJelly -Watt2Trade · QuillAudits · 16 Oct 2023Fixed

admin calling `StakingVault::whitelistContractAddress()` on any address allows that address to call the `StakingVault::consumeCoins()` function, this also gives that address the ability to DOS any user from removing their coins. However, there is NO undo function on this operation, meaning if this happens it would be permanent and unavertable.

Open the report
LowComparison of values to a boolean constantJelly -Watt2Trade · QuillAudits · 16 Oct 2023Fixed

Some mappings were used in the contract to map addresses to a boolean. This is to help know when a value is true or false. However, because these are the only two possible outcomes, it is recommended to use the mapping to serve as the condition within the require statement.  W2TContractAddress[msg.sender] is expected to return a true while !W2TContractAddress[msg.sender] for false.StakingVault: • onlyW2T modifier EscrowAccount: • placeOptionSellOrder • placeOptionBuyOrder

Open the report
LowFunctions certain to fail when called by unpermitted address should be marked as payable to save gasJelly -Watt2Trade · QuillAudits · 16 Oct 2023Fixed

There are some privileged functions in all the contracts under scope that allow for either admin or whitelisted addresses to call, else it fails. Since these functions are certain to fail when triggered when unpermitted addresses, they can be marked as payable functions. Payable functions are cheaper when called and can save over 50 gas or more.

Open the report
LowMissing check for zero addressJelly -Watt2Trade · QuillAudits · 16 Oct 2023Fixed

Updating state changes that pertains to addresses are a critical action especially avoiding setting any to the null address. For instance, on changing the ENERGY_COIN address in the staking vault contract to a zero address, this would disrupt the contract flow and cause a denial of service. StakingVault: • consumeCoins EscrowAccount: • adjustContractAddresses

Open the report
LowPermanent unprotected admin addressJelly -Watt2Trade · QuillAudits · 16 Oct 2023Fixed

Hardcoding the admin address set to constant and also not a multisig creates a point of target to attackers and leaves the contract permanently unprotected if compromised. This will make it impossible to carry out a swift incident response process to curtail the attack. This is common across all contracts under audit scope.

Open the report
LowRedundant code creationJelly -Watt2Trade · QuillAudits · 16 Oct 2023Fixed

Unnecessary code implemented on update functions can be removed to save gas. In the preceding lines before the issue pointed out, a new local variable was created called newGen. The newGen variable equals the summation of the CURRENT_FEE_GEN and 1. After updating all mappings that pertains to the fee, the state variable CURRENT_FEE_GEN was afterwards set to newGen. For an optimized code, it is okay to update the CURRENT_FEE_GENhttps://github.com/Watt-2-Trade/dex-smartcontracts/blob/main/contracts/EscrowAccount.sol#L1042 https://github.com/Watt-2-Trade/dex-smartcontracts/blob/main/contracts/EscrowAccount.sol#L1062

Open the report
LowUpdate all state changes before invoking external functionsJelly -Watt2Trade · QuillAudits · 16 Oct 2023Fixed

In the removeCoins function from the StakingVault contract, an external call was made to the Energy Coin contract before state variables were updated. This exposes the contract to the possibility of a reentrancy. This negates the principle of the check-effect interaction that poses the need for all state updates before an external call. This is also common in the withdrawOptionOrder and withdrawStakingVault: • removeCoins EscrowAccount: • withdrawOptionOrder • withdrawFutureOrder

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="jelly-watt2trade"
></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