Volatility Technologies Ltd

QuantstampFiles named in the report

Quantstamp reviewed Volatility Technologies Ltd on 22 Nov 2023: 13 findings, 0 critical; 7 marked fixed, 6 open.

No open critical findings
Open the reportOpen Volatility Technologies Ltd’s security record

Report hosted on certificate.quantstamp.com.

Trustblock does not review code.

Findings13

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

SeverityOpenAcknowledgedFixed
Critical000
High000
Medium000
Low607
LowDeposit Accounting Will Be Invalid if the Collateral Token Is a Fee-on-Transfer or Rebasing TokenFixed

In `_depositToPoolA()` and `_depositToPoolB()`, `size` is added to the total deposits mapping, but the actual amount of token transferred to the contract may be less than `size` if the token supports fee-on-transfer or is a rebasing token.

LowEvents Can Be Emitted with Empty ArraysFixed

The following functions take arrays as their arguments but do not validate their lengths, allowing an empty array passed to them to cause the function to emit an event without carrying out the function's intended logic: - `PriceFeed.store()` - `PriceFeed.setInvalid()` - `MultiLot.invite()`

LowIncorrect Event Emitting Due to the Lack of Duplicate Address ChecksFixed

The function `store()` doesn't check that `_tokenIds` doesn't contain duplicate strings. This may result in erroneously emitting an event with two prices for the same token string. While this might not be a security concern, other projects might encounter issues if they depend on the events emitted.

LowMissing Input ValidationFixed

It is important to validate inputs, even if they only come from trusted addresses, to avoid human error. Specifically, in the following functions arguments of type `address` may be initialized with value `0x0`: 1. `MultiLot.constructor()`: needs to check that the address of `_priceFeed`, `_trustedForwarded` and each of the collateral tokens is not `address(0)`. 2. `MultiLot.setPriceFeed()`: needs to check that the address of `_priceFeed` is not `address(0)`. 3. `MultiLot.createLot()`: needs to validate that the duration is not too high. Consider adding an upper limit. 4. `PriceFeed.setInvalid()`: needs to validate that the token exists. Otherwise, the function could be (in)validating an id that is not used yet, leading to unexpected behavior. 5. `MultiLot.createLot()`: needs to validate that `_tokenA` and values in `_tokenBChoices` are non-empty strings .

LowPrice Could Be OverwrittenFixed

The function `PriceFeed.store()` could overwrite the price for a given token and timestamp if the function is called within the same minute of the last call.

LowRoles and Ownership Can Be RenouncedFixed

The `AccessControl` contract inherited by `PriceFeed` has a `renounceRole()` function, allowing role holders to renounce their roles and leave the contract without accounts holding those roles, which may render the contract irreversibly unusable. Similarly, the `MultiLot` contract is `Ownable` and the `renounceOwnership()` function can be used to leave the contract without an owner.

LowUnlocked PragmaFixed

Every Solidity file specifies in the header a version number of the format `pragma solidity (^)0.8.*`. The caret (`^`) before the version number implies an unlocked pragma, meaning that the compiler will use the specified version _and above_, hence the term "unlocked".

Contracts in scope

No deployed address is recorded for this audit.

The report names a repository or files. Open the report to see its scope.

Repository and files the report names (3)

  • src/IPriceFeed.sol
  • src/PriceFeed.sol
  • src/MultiLot.sol

Part of Volatility Technologies Ltd’s security record

Volatility Technologies Ltd
Audits1 audit by 1 firmLast audit Nov 2023, by Quantstamp.
Critical findingsNo open critical findingsIn 1 report.
Open Volatility Technologies Ltd’s security record

Security firm

Quantstamp

236 projects reviewed · 332 reports · latest Oct 2026

See Quantstamp’s audits

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