Volatility Technologies Ltd security record

Arbitrum, Polygon (POS)relative.fi

As of 3 Nov 2026, Volatility Technologies Ltd has 1 audit report on Trustblock, by Quantstamp, dated 22 Nov 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, findings and contracts up to Nov 2026, and incidents up to Oct 2026. Trustblock does not review code.

Audits1

Newest first

AuditSecurity firmDateScopeCritical findingsReport
Volatility Technologies LtdSecurity firm: QuantstampDate: Scope: Files named in the reportNo open critical findingsOpen · certificate.quantstamp.com

Findings13

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

SeverityOpenAcknowledgedFixed
Critical000
High000
Medium000
Low607
LowPotential Integer Overflow Can Break System's AccountingVolatility Technologies Ltd · Quantstamp · 22 Nov 2023Open

There are various locations where integer overflow can occur in the codebase, which can lead to inaccurate rewards accounting and unintentional reverts. In particular, we have the following snippet from `_resolveLot()`: ```solidity! if (startPriceTokenA == 0 || d2 > d1) { lot.totalClaimPoolB = (2 * (size - feeAmountPerSide)).toUint128(); winningToken = lot.tokenB; } // If token B is invalid or if token A had a greater increase in price... else if (startPriceTokenB == 0 || d1 > d2) { lot.totalClaimPoolA = (2 * (size - feeAmountPerSide)).toUint128(); winningToken = lot.tokenA; } // Otherwise, in the case of a tie... else { uint128 claim = (size - feeAmountPerSide).toUint128(); lot.totalClaimPoolA = claim; lot.totalClaimPoolB = claim; } ``` It is possible for `(2 * (size - feeAmountPerSide))` to be greater than `2^128`. In which case, casting it back to the `uint128` will lead to an inaccurate accounting of how much the users can claim. This happens when `size` is on the order of `2^128`. However, this is unlikely to happen because `size` equals how many collateral tokens are in the lot, and per discussion with the team, these tokens will likely be stablecoins. Furthermore, it is also possible for the following snippet in `_resolveLot()` to revert: ```solidity! if (!priceFeed.isInvalid(lot.tokenA)) { startPriceTokenA = priceFeed.getHistoricalPrice(lot.tokenA, lot.startTimestamp); resolvePriceTokenA = priceFeed.getHistoricalPrice(lot.tokenA, endTimestamp); } if (!priceFeed.isInvalid(lot.tokenB)) { startPriceTokenB = priceFeed.getHistoricalPrice(lot.tokenB, lot.startTimestamp); resolvePriceTokenB = priceFeed.getHistoricalPrice(lot.tokenB, endTimestamp); } uint256 d1 = resolvePriceTokenA * startPriceTokenB; uint256 d2 = resolvePriceTokenB * startPriceTokenA; ``` Since `priceFeed.getHistoricalPrice()` returns a type of `uint256`, it is possible to overflow in the calculation of `d1` and `d2`, causing unintentional reverts. The likelihood of this happening depends on the results of the price feed and how the Relative Finance team chooses to represent the price in the price feed backend.

Open the report
LowPrivileged Roles and OwnershipVolatility Technologies Ltd · Quantstamp · 22 Nov 2023Open

Smart contracts will often have `owner` variables to designate the person with special privileges to make modifications to the smart contract. We list the areas where owners have special privileges and the corresponding actions they can take. 1. `owner`: 1. `MultiLot.setIsValidCollateralToken()` 2. `MultiLot.setPriceFeed()` 3. `MultiLot.withdrawFee()` 4. `MultiLot.setFeePercentage()` 5. `MultiLot.pauseContract()` 6. `MultiLot.unpauseContract()` 2. `ORACLE_ROLE` 1. `PriceFeed.store()` 2. `PriceFeed.setInvalid()` 3. `DEFAULT_ADMIN_ROLE` 1. Any role-related modifications in `AccessControl`, inherited by `PriceFeed`.

Open the report
LowSame Tokens May Be Represented by Different StringsVolatility Technologies Ltd · Quantstamp · 22 Nov 2023Open

The `price` mapping maps token strings to timestamp slots that contain the token prices at a given time. The mapping doesn't differentiate between strings like `ETH` and `eth`, allowing for the possibility of having two different prices for the same token.

Open the report
LowSystem Heavily Depends on Off-Chain ComponentsVolatility Technologies Ltd · Quantstamp · 22 Nov 2023Open

The correctness of the whole system depends on the data correctness from the price feed, which is maintained by the Relative Finance team off-chain. In particular, the rewards accounting will be most impacted by inaccurate data from the price feed. Furthermore, if, at any point in time, price data is not submitted to the price feed contract (due to benign or malicious reasons), any lot that depends on the price at that timeslot will revert upon calling `_resolveLot()`, which means users will not be able to withdraw their funds from the system. The availability and correctness of the price feed are critical to the health and functionality of the system. While the off-chain part is not in the scope of this audit, we simply want to raise awareness of the reliance on off-chain components and their associated risks.

Open the report
LowUser Cannot Withdraw if Token Price Drops to ZeroVolatility Technologies Ltd · Quantstamp · 22 Nov 2023Open

A "lot" in general supports betting across arbitrary asset classes, as long as the token is supported by the price feed. However, an asset (e.g. NFT) can potentially have a price of `0 ETH` (e.g. starts from `0 ETH` or drops to `0 ETH`). The current code will then revert whenever `PriceFeed.getHistoricalPrice()` is called, which means it will revert whenever a user tries to resolve the lot.

Open the report
LowUser Has to Pay Fees Even for Tokens Unsupported by the Price FeedVolatility Technologies Ltd · Quantstamp · 22 Nov 2023Open

Currently, there are no checks for whether the tokens involved in a "lot" are supported by the price feed. If a user creates a "lot" with invalid tokens (e.g. the tokens `_tokenA` and `_tokenBChoices` passed as parameters to `createLot()` are not supported by the price feed), then, while the players can still withdraw their funds, they will lose a portion of their funds to the fees collected in `_resolveLot()`.

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="volatility-technologies-ltd"
></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