Neutral Trade security record

As of 24 Oct 2026, Neutral Trade has 2 audit reports by 2 security firms on Trustblock; the latest is by Quantstamp, dated 4 Jul 2025. Those reports list no open critical findings.

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

Audits2

Newest first

AuditSecurity firmDateScopeCritical findingsReport
Neutral TradeSecurity firm: QuantstampDate: Scope: Files named in the reportNo open critical findingsOpen · certificate.quantstamp.com
Neutral Trade - Smart Contract AssessmentSecurity firm: HalbornDate: Scope: Not recorded (see the report)No open critical findingsOpen · halborn.com

Findings16

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

SeverityOpenAcknowledgedFixed
Critical000
High001
Medium002
Low175
LowDistribution Can Be Ended Before All Allocations Are SentNeutral Trade · Quantstamp · 4 Jul 2025Acknowledged

The `end_distribution()`function resets `left_to_distribute` and `distribution_base_amount` without verifying that the full distribution amount has been transferred to strategies. If the keeper closes the period prematurely, any undistributed balance is silently ignored, leaving some strategies under‑funded, and skewing allocation percentages across strategies.

Open the report
LowNo Slippage Tolerance for WithdrawalsNeutral Trade · Quantstamp · 4 Jul 2025Acknowledged

A user's withdrawal is not priced at the time of their request but at the time of processing. This exposes the user to potentially significant slippage, as processing can be delayed, and the share price can change in the interim. 1- When a user calls `request_withdrawal()`, the protocol only records the amount of shares (e.g., $100) to be withdrawn. The user's shares are not burned at this time. 2- The `process_withdrawal()` instruction, which calculates the asset amount to be withdrawn (`net_redemption_amount`), can be delayed by the `withdrawal_available_timestamp` mechanism. 3- Because the share price is only calculated within `process_withdrawal`, any price drop during the delay will force the user to get less asset amount than they anticipated. This makes the true cost of a withdrawal unpredictable.

Open the report
LowOracle Buffer of 100 % Creates Asymmetric Range—Unlimited Downside, Capped UpsideNeutral Trade · Quantstamp · 4 Jul 2025Acknowledged

The `update_oracle()` bounds each new equity value to `current_equity = (current_equity * oracle_buffer / 100)`. When `oracle_buffer` is set to **100 %**, the integer calculation yields: * **Lower bound:** `0` (‑100 %; equity can be reported as zero) * **Upper bound:** `current_equity * 2` (+100 %; equity cannot exceed 2×) The result is an **asymmetric clamp**: the keeper may drive the bundle’s equity all the way to **zero**, but can never report appreciation beyond a doubling. This allows a compromised keeper to drag the current equity to zero, but never more than the double of the current equity.

Open the report
LowStrategy `PDA` Cannot Be Closed, Resulting in Locked RentNeutral Trade · Quantstamp · 4 Jul 2025Acknowledged

The `remove_strategy` instruction fails to close the `strategy_account` PDA after disabling it in the bundle. Instead, it only sets the allowed flag to false. This orphans the on-chain account, making the SOL paid for its rent permanently irrecoverable. Every time a strategy is "removed," the protocol leaks the capital (rent) required to maintain that strategy's account. Over time, this will lead to a significant and irreversible loss of funds for the protocol manager.

Open the report
LowWithdrawal Cooldown Resets for All Shares After Each New DepositNeutral Trade · Quantstamp · 4 Jul 2025Acknowledged

Each time a user’s deposit is processed, `last_deposit_timestamp` is overwritten. When that user later calls `request_withdrawal()`, the cooldown is computed from this single, most‑recent timestamp, meaning **all** previously unlocked shares become subject to the full delay again. The design forces long‑term holders to wait unnecessarily if they make small top‑ups, and it encourages dividing assets across multiple accounts to avoid self‑induced lock‑ups.

Open the report
LowWithdrawal Fee Determined at Processing TimeNeutral Trade · Quantstamp · 4 Jul 2025Acknowledged

Users request withdrawals using `request_withdrawal()`, expecting the current fee schedule to apply. However, the fee is not finalised at request time; it is recalculated during `process_withdrawal()` using the live `bundle_account.withdrawal_fee`. The fee can change between these two events, leaving the user charged more (or less) than they had accounted for when submitting the request.

Open the report
LowCentralization risk due to manager control over ReceiversNeutral Trade - Smart Contract Assessment · Halborn · 21 Jan 2025Acknowledged

The report gives no description here.

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="neutral-trade"
></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