Quantelica

QuillAuditsFiles named in the report

Audit · firm’s term: audit report

QuillAudits reviewed Quantelica on 8 Jan 2024: 14 findings, 0 critical; all marked fixed.

No open critical findings
Open the reportOpen Quantelica’s security record

Report hosted on quillaudits.com.

Trustblock does not review code.

Findings14

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

SeverityOpenAcknowledgedFixed
Critical000
High003
Medium002
Low009
HighIncorrect token burn during subcollection removalFixed

The contract has a critical logic flaw in the removeSubcollection function, where tokens from other subcollections can be mistakenly burned. The iteration over token IDs for removal does consider that token IDs are the startIndex and endIndex of a subCollection but that’s not the case for any subcollection. As a result, this could lead to the unintended burning of NFTs that do not belong to the subcollection being removed, causing a severe impact on token ownership and integrity of the protocol.

HighLack of Access Control in fulfillRandom Words FunctionFixed

The fulfillRandomWords function lacks proper access control, allowing any external entity to call this internal function. As a result, there is a critical security vulnerability where an unauthorized entity could potentially spoof a VRF response with arbitrary random values. It is crucial to restrict the invocation of this function to only trusted entities, specifically the VRFConsumerBase.rawFulfillRandomness method, to ensure the integrity of the VRF process.

HighLack of blacklist check in batch transfer functionFixed

The contract exhibits a potential security risk due to a missing check for whether the destination address (to) is blacklisted or not in the batchTransfer and mintGoldenToken function. Without proper validation, blacklisted addresses can potentially receive tokens through batch transfers, leading to a bypass of the blacklist mechanism. This oversight poses a security vulnerability, as it allows tokens to be transferred to blacklisted addresses, contrary to the intended restrictions.

MediumInability to delete TokenCID due to private set functionFixed

The contract has an issue where the burn function attempts to delete a tokenCID, but the corresponding set function _setTokenCID is marked as private and cannot be directly called by the burn function. As a result, there is no mechanism in place to set or update the tokenCID, making it impossible to delete the CID within the burn function. This limitation hinders the contract's functionality and could lead to undesired consequences.

MediumMissing check for token existence in burn functionFixed

The contract has a high-severity issue in the burn function where it fails to check whether the specified token exists or not before attempting to burn it. This absence of a pre-check on token existence creates a critical vulnerability, as attempting to burn a nonexistent token could lead to unexpected behavior, compromising the integrity of the contract and causing potential disruptions in token ownership.

LowChange function visibility from public to externalFixed

LM Internal Functions(except isValidDepositAmount() function) in LoanManager.sol are never called from within contracts but yet declared public. Their visibility can be made external to save gas.

LowChecks that are must to implement.Fixed

Several functions within the contract lack necessary checks and verifications, potentially leading to unintended behaviours or vulnerabilities. These missing checks can impact the contract's security, correctness, and adherence to intended rules. It's crucial to incorporate these checks to ensure proper functionality and prevent unauthorized or erroneous actions.

LowConsider using custom errorsFixed

Custom errors reduce the contract size and can provide easier integration with a protocol. Consider using those instead of require statements with string error.

LowGeneral RecommendationFixed

In the case of stable coins, the hierarchy of authority plays a crucial role and our team recommends that the roles with privileges must be given to the accounts with proven authority and functions like “Minting” and “Burning” must be used cautiously because once these functions are called on the mainnet then could be no minting or burning. Hence, it will be an irreversible change.

LowMissing Zero checksFixed

Several critical functions within the contract lack validation checks to ensure that zero addresses are not accepted as input parameters. This oversight can lead to unintended behavior, security vulnerabilities, and potential exploitation if malicious actors pass zero addresses as arguments to these functions.

Show 4 more
LowState-changing methods are missing event emissionsFixed

Critical functions within the contract lack the emission of events. Events play a vital role in providing transparency, enabling external systems to react to changes, and offering a way to track important contract activities. The absence of events can hinder monitoring and auditing efforts, making it difficult to detect and respond to critical contract actions.

LowUnlocked pragma ( pragma solidity ^0.8.19 )Fixed

Contracts should be deployed with the same compiler version and flags that they have been tested with thoroughly. Locking the pragma helps to ensure that contracts do not accidentally get deployed using, for example, an outdated compiler version that might introduce bugs that affect the contract system negatively.

LowUnused codesFixed

The contract contains sections of code that are defined but not referenced or executed during the contract's operation. This unused code might include functions, variables, or entire code blocks that serve no functional purpose or are not part of the contract's intended behavior. Unused code can increase the contract's complexity, potentially introducing confusion for developers and auditors and leading to unnecessary gas consumption.

LowVulnerable Merkle Proof Library VersionFixed

Affected versions of this package are vulnerable to Improper Input Validation.

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 (7)

  • VRFConsumerBaseV2.sol
  • openzeppelin/contracts/utils/cryptography/MerkleProof.sol
  • LoanManager.sol
  • -PioneersCollection.sol
  • PioneersCollection.sol
  • -PartnershipProcessor.sol
  • ReferralProcessor.sol

Part of Quantelica’s security record

Quantelica
Audits2 audits by 1 firmLast audit Mar 2024, by QuillAudits.
Critical findingsNo open critical findingsAcross 2 reports.
Open Quantelica’s security record

Security firm

QuillAudits

350 projects reviewed · 459 reports · latest Apr 2025

See QuillAudits’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