As of 24 Oct 2026, Zoniqx has 1 audit report on Trustblock, by QuillAudits, dated 6 May 2024. That report lists no open critical findings.
Record last updated . It holds audits and findings, contracts and incidents up to Oct 2026. Trustblock does not review code.
Newest first
| Audit | Security firm | Date | Scope | Critical findings | Report |
|---|---|---|---|---|---|
| Zoniqx | Security firm: QuillAudits | Date: | Scope: Files named in the report | No open critical findings | Open · quillaudits.com |
Statuses are the security firm’s own, from each report.
| Severity | Open | Acknowledged | Fixed |
|---|---|---|---|
| Critical | 0 | 0 | 0 |
| High | 1 | 0 | 3 |
| Medium | 0 | 0 | 0 |
| Low | 0 | 0 | 13 |
The safeTransferFrom method incorrectly handles the allowance verification due to a parameter mismatch and a logical error in the associated _spendAllowance method. This issue arises because the function uses a hardcoded zero (0) for the token ID instead of the actual token ID provided to the function, and there's a mix-up between the amount and id parameters in _spendAllowance.Impact: This flaw allows users (e.g., delegated operators) to potentially transfer tokens beyond their authorized allowance, leading to unauthorized asset movement and breach of trust assumptions in the token management system. It undermines the ERC-1155 standard's security guarantees regarding token transfers and allowance management.
Open the reportThe erc7518 specification states that only unlocked assets can be transferred or used by users who own them, however the safeBatchTransferFrom() allows the users to move their funds as this method is directly inherited from the ERC1155Upgradeable contract and is not overridden like safeTransferFrom() that implements additional checks like canTransfer to ensure correct restrictions and signatures are provided before transfers are made.
Open the reportThe lockTokens method in the contract lacks necessary authorization checks to verify if the caller has the right to lock tokens for the specified account. This allows any user to lock any amount of tokens belonging to any account, leading to potential misuse where tokens can be frozen maliciously without the owner's permission.
Open the reportThe naming of the forceTokenUnlock() and _forceUnlockTokens functions in ERC7518.sol are inconsistent, which could lead to confusion about their functionality.
Open the reportThe methods listed above do not check for the validity of the incoming function arguments which might result in setting invalid values such as for the payout address or an excessively large floor price, potentially leading to loss of funds or failed transactions.
Open the reportThe contracts and methods listed above perform critical functionality to manage users' assets and funds. However, there is no supporting documentation provided for NatSpec that explains the business needs and limitations of the applications which can cause misunderstandings and threaten users' operations.
Open the reportThe batchPayout() function lacks a non-reentrant modifier, potentially allowing reentrancy attacks which could lead to unexpected behaviors or exploits.
Open the reportRedundant checks for the to address in the _payout() function can lead to unnecessary gas consumption and code complexity. This check is already placed inside ERC20Upgradeable contract that handles the payout's transfer call underneath.
Open the reportSome functions in the listed contracts include arguments or return variables that are never used, leading to unnecessary code complexity and gas costs. For instance, the data variable in freeze() and unfreeze() is never utilized in the method for operation. Similarly, in the getDealsCount(), the return value deals is never used.
Open the reportThe order of arguments in verifySignature() _transferTokensToInvestor() is unconventional and might cause confusion, potentially leading to incorrect implementations or usage.
Open the reportThe _msgSender and _msgData methods in the ERC2771ContextUpgradeable contract do not conform to a set standard while fetching the data or caller from the context as the sender is extracted using assembly code block which has proven manipulatable in past due to either delegatecalls or by calldata stuffing.
Open the reportThe _changePayoutAddress() method does not emit the previous payout address when it is changed, which can obscure tracking of changes in the contract state.
Open the reportThere is a typo in the interface at changeComplainceAddress which could lead to implementation errors or issues when interfacing with other contracts. Additionally, the interface is not implemented in the ERC7518Marketplace contract, specifically for create() method the contract implements a different function selector with additional arguments that deviate from the interface.
Open the reportThe methods in CompliTo.sol and ERC1155Mod.sol are not organized according to the Solidity style guide which recommends ordering methods by visibility and functionality so that gas consumption for all users facing external or public methods are optimized.
Open the reportMethods such as _freeze(), _unfreeze() in FreezeAddress.sol, _removeFromWhiteList() in IssuerFactory.sol and _restrict(), _removeRestriction() in RestrictTransfer.sol are performed without checking the previous state of the account address. This oversight can lead to redundant operations and event spamming, which may impact the efficiency and reliability of the system. For instance, the ERC7518 token standard specs state the following about _removeRestriction() > MUST check if id is previously restricted.
Open the reportThe enumerable structs InvestmentStatus and InvestmentType in the PaymentTracker contract do not implement the variables inside in uppercase format, which is the standard practice for enums to differentiate them from other variables and mark the use of uint8 variable for enums.
Open the reportThe reports name a repository or files. Open a report to see its scope.
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.
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.
<head><script src="https://widget.trustblock.run/project-widget.min.js" defer></script></head><body><divdata-tb-project-widgetdata-tb-project-slug="zoniqx"></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