Equilibrium Quantum addendum

CertiKFiles named in the report

CertiK reviewed Equilibrium Quantum (Equilibrium Quantum addendum) on 27 Nov 2024: 19 findings, 0 critical; 12 marked fixed, 7 open.

No open critical findings
Open Equilibrium Quantum’s security record

The original report was removed from its address (seen 16 Oct 2026).

Trustblock does not review code.

Findings19

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

SeverityOpenAcknowledgedFixed
Critical000
High202
Medium001
Low509
HighCentralization Related RisksOpen

In the contract `LPPool`, the role `_owner` has authority over the functions shown in the diagram below. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority and set the token address, set the sign address, and set the LP token address. ![](https://accelerator-tasks-prod.acc.corp.certik.com/11ef-94d3-8838d150-bb46-5bffcad76a75/diagrams/centralization_LPPool-LPPool-_owner.svg) The `LPPool` contract enables users to stake their `LP` tokens to earn rewards. Users can unstake their `LP` tokens using the `unDepositLP()` function, but only after obtaining signatures from the project team. If the signer's private key is compromised, users' `LP` tokens may be at risk, potentially leading to losses for the users. --- In the contract `EQNFT`, the role `_owner` has authority over the functions shown in the diagram below. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority and set or update the mint address status, as well as set the base URI. ![](https://accelerator-tasks-prod.acc.corp.certik.com/11ef-94d3-8838d150-bb46-5bffcad76a75/diagrams/centralization_EQNFT-EQNFT-_owner.svg) In the contract `EQNFT`, the role `mintAddress` has authority over the functions shown in the diagram below. Any compromise to the `mintAddress` account may allow the hacker to take advantage of this authority and mint a new token to an address. ![](https://accelerator-tasks-prod.acc.corp.certik.com/11ef-94d3-8838d150-bb46-5bffcad76a75/diagrams/centralization_EQNFT-EQNFT-mintAddress.svg) --- In the contract `NodePool`, the role `_owner` has authority over the functions shown in the diagram below. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority and set the token address, as well as set the sign address. ![](https://accelerator-tasks-prod.acc.corp.certik.com/11ef-94d3-8838d150-bb46-5bffcad76a75/diagrams/centralization_NodePool-NodePool-_owner.svg) --- In the contract `Store`, the role `_owner` has authority over the functions shown in the diagram below. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority and set the admin address, set buy gas allocation ratios, set admin transfer address, set buy NFT USDT allocation admin ratio, set buy gas allocation addresses, set the USDT token address, set the NFT token address, set the token address, and set the buy NFT USDT amount. ![](https://accelerator-tasks-prod.acc.corp.certik.com/11ef-94d3-8838d150-bb46-5bffcad76a75/diagrams/centralization_Store-Store-_owner.svg) --- In the contract `AllowContract`, the role `_owner` has authority over the functions shown in the diagram below. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority and set the allowed status for an address list. ![](https://accelerator-tasks-prod.acc.corp.certik.com/11ef-94d3-8838d150-bb46-5bffcad76a75/diagrams/centralization_AllowContract-AllowContract-_owner.svg) --- In the contract `Ownable`, the role `_creator` has authority over the functions shown in the diagram below. Any compromise to the `_creator` account may allow the hacker to take advantage of this authority and transfer the creator role, remove an owner from the owners list, set the required signatures, and add a new owner. ![](https://accelerator-tasks-prod.acc.corp.certik.com/11ef-94d3-8838d150-bb46-5bffcad76a75/diagrams/centralization_Ownable-Ownable-_creator.svg) --- In the contract `Sign`, the role `_owner` has authority over the functions shown in the diagram below. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority and set the allow contract address, set the verify address, and set the user nonce address. ![](https://accelerator-tasks-prod.acc.corp.certik.com/11ef-94d3-8838d150-bb46-5bffcad76a75/diagrams/centralization_Sign-Sign-_owner.svg) --- In the contract `UserNonce`, the role `_owner` has authority over the functions shown in the diagram below. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority and set user's nonce, set allowed contract address, update user's last block number, and set the lock block. ![](https://accelerator-tasks-prod.acc.corp.certik.com/11ef-94d3-8838d150-bb46-5bffcad76a75/diagrams/centralization_UserNonce-UserNonce-_owner.svg) --- In the contract `EQ`, the role `_owner` has authority over the functions shown in the diagram below. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority and mint new tokens to specified addresses, set the node mint address, set the pool mint address, and set the tax address. ![](https://accelerator-tasks-prod.acc.corp.certik.com/11ef-94d3-8838d150-bb46-5bffcad76a75/diagrams/centralization_EQToken-EQ-_owner.svg)

HighInitial Token DistributionOpen

Some or all tokens are sent to the contract deployer or one or several externally-owned account (EOA) addresses. This is a centralization risk because the deployer or the owner(s) of the EOAs can distribute tokens without obtaining the consensus of the community. Any compromise to these addresses may allow a hacker to steal and sell tokens on the market, resulting in severe damage to the project.

LowClarification On `_beforeTransfer()`Open

According to the design of the `_beforeTransfer()` function, when `to == pairAddress`, a fee will be charged for the transaction. ```solidity if (to == pairAddress) { require( block.number != lastTransactionBlock[from], "Cannot buy/sell in the same block" ); taxFee = (amount * dexTaxFee) / 10_000; require(amount > taxFee, "Amount less than tax fee"); super._transfer(from, taxAddress, taxFee); emit TransferTaxPaid(from, taxAddress, taxFee); } ``` The same condition applies to adding liquidity, and the contract does not have a whitelist mechanism. This means that anyone (including the team) adding liquidity will incur a fee, which may result in the ratio of the two tokens in the pair contract not meeting expectations after the team first adds liquidity.

LowClarification on `onlyOwner` DesignOpen

Owners may fail to call centralized methods. For example, setting a variable to the zero address or when certain conditions are not met. If owners fail to call a method, the entire transaction will roll back, and the current owner's `action.signatures` will not be updated. However, the value for owners who previously voted will be set to true. This might cause an issue: if the failure was due to unmet conditions (e.g., EQToken's `mint()` method requires `mintNodeAddress` to be set), once the condition is met, only one owner needed to execute the failed method to complete the operation. This is because the early votes by owners remain intact since they were not cleared when the centralized method failed. Have you considered this case?

LowIncompatibility With Deflationary Tokens (Non-staOpen

The project design may not be compatible with non-standard ERC20 tokens, such as deflationary tokens or rebase tokens. The functions use `transferFrom()`/`transfer()` to move funds from the sender to the recipient but fail to verify if the received token amount matches the transferred amount. This could pose an issue with fee-on-transfer tokens, where the post-transfer balance might be less than anticipated, leading to balance inconsistencies. There might be subsequent checks for a second transfer, but an attacker might exploit leftover funds (such as those accidentally sent by another user) to gain unjustified credit.

LowPotential Sandwich AttacksOpen

A sandwich attack can occur when an attacker notices a transaction involving token swaps or liquidity additions that lacks slippage restrictions or minimum output amount settings. The attacker can exploit this by frontrunning the transaction to purchase one of the assets, thereby manipulating the exchange rate, and then backrunning the transaction to sell the asset for a profit. The referenced functions are invoked without setting slippage restrictions or minimum output amounts, making transactions that trigger these functions particularly vulnerable to sandwich attacks, especially when large input amounts are involved.

LowThird-Party Dependency UsageOpen

The contract is serving as the underlying entity to interact with one or more third party protocols. The scope of the audit treats third party entities as black boxes and assumes their functional correctness. However, in the real world, third parties can be compromised and this may lead to lost or stolen assets. In addition, upgrades of third parties can possibly create severe impacts, such as increasing fees of third parties, migrating to new LP pools, etc. ```solidity IPancakeRouter02 public immutable pancakeRouter; address public tokenAddress; address public usdtTokenAddress; address public nftTokenAddress; ``` - The contract `Store` interacts with the above third party contracts. ```solidity address public immutable pairAddress; address public immutable routerAddress; address public usdtAddress; ``` - The contract `EQToken` interacts with the above third party contracts. ```solidity address public tokenAddress; address public lpTokenAddress; ``` - The contract `LPPool` interacts with the above third party contracts. ```solidity address public tokenAddress; ``` - The contract `NodePool` interacts with the above third party contracts.

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

  • EQToken.sol
  • EQNFT.sol
  • UserNonce.sol
  • Ownable.sol
  • AllowContract.sol
  • Sign.sol

Part of Equilibrium Quantum’s security record

Equilibrium Quantum
Audits2 audits by 1 firmLast audit Nov 2024, by CertiK.
Critical findingsNo open critical findingsAcross 2 reports.
Open Equilibrium Quantum’s security record

Security firm

CertiK

1,044 projects reviewed · 1,375 reports · latest May 2025

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