QuantumPoolsDocs
Guide 5 · Audit & Security

Audit & Security

An outside security firm, Hashlock, reviewed the vault contract and rated it Secure (September 2026). This page links the report, shows what they covered, what the code already does to protect you, and which facts you can read on-chain yourself.

Secure · Hashlock48h timelock · 2-of-2 Safe4 min readUpdated Oct 8, 2026

The 20-second version

  • Hashlock completed its review in September 2026 and rated the vault Secure. Every owner action waits 48 hours behind a multisig Safe (2-of-2 on most chains, 2-of-3 on Robinhood Chain); Hashlock notes that control of the protocol still remains with the core team. Read the final PDF report ↗
  • Hashlock found 2 Medium, 3 Low and 1 QA issue, all resolved. Hashlock verified that the live vaults on Robinhood Chain and Base run the fixed code (commit f2ca3d2).
  • Pause can't block your exit, the keeper can't take your funds, and every owner change waits 48 hours in public.
  • Public deposits are open on the live venues: Robinhood Chain, Base and BNB Chain. Other chains show as previews until their vaults go live.
01 · Status

Audited. Rated Secure by Hashlock.

Hashlock finished its review in September 2026, rated the vault Secure, and placed the project at the Decentralised end of its centralisation scale. The report also notes that every owner action sits behind a 48-hour timelock and a 2-of-2 Safe, and that control of the protocol remains with the core team. The final report is public, here and on Hashlock's site ↗. Even a finished audit cannot promise the code has no bugs — read the report and check the on-chain facts yourself.

Centralisation
Decentralised
Hashlock scale · 48 h timelock · 2-of-2 Safe · core team keeps control
Status
Secure
Hashlock · Sept 2026
Review opened
Sep 19
2026
Lines in scope
2,710
~1,515 of logic
Report
Final v3 · Sept 2026

The contract under review lives here. Tap to copy, or open it on the explorer:

View on Blockscout ↗

QuantumVaultV2 · Robinhood Chain (chain ID 4663) · deployed Sep 25, 2026 · runtime code 23,370 bytes. The same code is live on Base at 0x9597…386B.

02 · Scope

What Hashlock audited

Six files, 2,710 lines. The vault itself is about two-thirds of it. The rest are four helper libraries and the list of DEX functions the vault calls.

FileIts jobLines
QuantumVaultV2.solPositions, snuggles, fee, pause, ownership1,850
PositionQueue.solHolds top-ups until the next snuggle278
VaultMath.solRange math and price reads243
IUniswapV3.solDEX functions the vault may call144
VenueAdapter.solOpens and closes DEX positions98
FeeRouter.solRoutes earned fees per your setting97
TotalAbout 1,515 lines without blanks and comments2,710

Also read, not counted: DeployV2.s.sol, only to check which roles were assigned at launch.

03 · Findings

What Hashlock found

Hashlock reported 2 Medium, 3 Low and 1 QA finding, with no High or Critical. Every one is resolved: the fixes are in commit f2ca3d2, and Hashlock checked each fix.

IDSeverityWhat it wasStatus
M-01MediumA queued width or delay change was dropped during a snuggle, so the new position kept the old settings.Resolved
M-02MediumThe out-of-range wait was not measured over one continuous stretch, so a snuggle could come early.Resolved
L-01LowA valid zero-fee setting could be mistaken for "not set" and replaced with the default.Resolved
L-02LowThe default build settings pinned library addresses, a deployment-safety risk.Resolved
L-03LowFee rounding: on very small fee collections the protocol's fee could round down by a fraction of a cent. Fixed. Your fees and deposit were never affected.Resolved
Q-01QAKeeper reliability (off-chain, no funds involved). Resolved in the audited fix; a follow-up hardening is under Hashlock review.Resolved

Full details, code excerpts and Hashlock's recommendations are in the final report (PDF) and on Hashlock's Quantum Pools page ↗.

04 · Deployed contracts

Deployed contracts Hashlock verified

Hashlock confirmed that both live vaults run the fixed code (f2ca3d2), differing only in each chain's Uniswap V3 addresses, and that both use the libraries below.

ContractNetworkAddress
QuantumVaultV2 (live)Robinhood Chain0x5433f385F538Fa11b8A25B82230a306d25dF8EB3
QuantumVaultV2 (live)Base0x9597f68203d1bc85744A5Fc11D890aA7777e386B
FeeRouterRobinhood Chain, Base0xF383d5408Aa36005B59952a05cE84D098e54C9f2
PositionQueueRobinhood Chain, Base0xC6Fe2Ac3b6Ba2b089F263324634aF37E45E3993F
VaultMathRobinhood Chain, Base0x9b6D35FA063ddB11d7e59ef00454C9134e211940
VenueAdapterRobinhood Chain, Base0xb4ACC0209fC349EC509362CcA7d5fC4C5719dc60
QuantumVaultV2 (superseded, pre-fix)Robinhood Chain0x07c688E3C1d606edc7Fe428862C08c3FA9aAEb3B · paused, do not use
05 · About the auditor

Who audited us: Hashlock

Hashlock is an Australian security firm (Hashlock Pty Ltd) that does manual, line-by-line smart contract audits. In its own words: "We collaborate with blockchain developers, project creators and corporations to ensure that web3 innovations are secure and successful."

Hashlock is a member of

Digital Economy Council of Australia — memberFinTech Australia — memberSBMLF Decentralized Trust — general member

Source: hashlock.com/audits. Names and logos belong to their owners and are shown only to illustrate Hashlock's track record; these projects are not affiliated with QuantumPools and do not endorse it. Our own listing: hashlock.com/audits/quantum-pools ↗.

06 · Check it yourself

What you can check on-chain

You don't have to take our word for the basics. Anyone can read these values straight from the chain, with no account and no access.

Who owns the vault?owner() → the timelock, 0x41D3…27AC
How long must owner changes wait?getMinDelay() on the timelock → 172,800 s (48 hours)
What is the fee today?performanceFeeBps() → 1500 (15%)
Is it paused?paused() → false
How many pools?poolCount() → 2

With Foundry installed, each one is a single command. For example:

cast call 0x5433f385F538Fa11b8A25B82230a306d25dF8EB3 "performanceFeeBps()(uint256)" --rpc-url https://rpc.mainnet.chain.robinhood.com
What you can't check yetThe source repository is private, and explorer source verification of this vault is not confirmed. Rebuilding the bytecode from source is open only to reviewers with repo access, such as the auditor. The in-scope Solidity was audited at tag audit-hashlock-2026-09-11 (commit 6ccce2e, dated Sep 9, 2026); the deployed vault applies Hashlock's round-1 fixes on top of that (commit f2ca3d2). The on-chain bytecode matches that fixed source.
07 · Built-in protection

Safety controls in the code

Each card says what a control does for you. The small code tag under it shows where it sits in the contract. Pick who you want to be protected from.

Exit has no off switch
A pause can't freeze your funds. Withdrawals keep working while the vault is paused, with no lock-up or approval step.
withdraw, withdrawTo, withdrawFraction
Your settings are yours
Only you can withdraw, harvest, compound, or change your position's width, delay and fee routing. If you turn auto-snuggle on, the keeper can snuggle it for you. Our published fee is at most 15% of the trading fees your LPs earn, never your deposit (up to 25% only when you copy another member's LP position); fee increases wait 48 hours in public.
_requireOwner
Fee payout can't jam your exit
If a fee recipient can't receive tokens, the cut is held in the vault and your withdrawal still goes through.
_payTo, claimProtocolFees
Where these controls stopThese controls lower risk. They don't remove it.
  • The code can still have bugs, audit or not.
  • A snuggle sets your new range at today's price, even in the middle of a swing. The snuggle is itself a public transaction, so outside traders can still front-run it or "sandwich" it (trade just before and just after it) in the pool.
  • The 48-hour wait slows us down too. Pausing or removing a misbehaving keeper takes at least two days.
Impermanent loss is a market effect, and no code check can stop it. Read the full risks.
08 · Permissions

Who can do what

Three parties can call the vault. Here is how their powers line up.

Who can reach the vaultA Safe needing 2 of 2 signatures controls a timelock that waits 48 hours, which owns the vault. The keeper can only run the snuggle steps and lower a wallet's fee rate. You can withdraw and change your own settings.Safe multisig2 of 2 signaturesTimelockwaits 48 h in publicVaultholds every positionowner powers, after 48 h: fee rates (15% · copy trading 25%),treasury, referrer, keepers, pools, limits, range/TWAP config, pauseKeeperpays gas for snugglesruns snuggle steps · can only lower a fee rateYouposition owner✕ keeper cannot withdraw, harvest, compound or pick a rangeWho can reach the vault: Safe, then timelock, then vault, with keeper and you belowSafe multisig2 of 2 signaturesTimelockwaits 48 h in publicowner powers, after 48 h:fee rates (15% · copy trading 25%)treasury, referrer, keepers, poolslimits, range/TWAP config, pauseVaultholds every positionKeeperYousnuggle stepslower a fee rateyour positionand settings✕ keeper cannot withdraw, harvest,compound or pick a range
Three doors: the owner changes rules slowly and in public, the keeper only runs snuggle steps and can lower a fee rate, and only you can withdraw. Nobody can upgrade the code: there is no proxy to swap it out.
ActionYouKeeperOwner (Safe + timelock)
Withdraw your positionAny timeNoNo
Harvest or compound your feesYesNoNo
SnuggleYes, skipping your delay, only while out of range and not paused; you pay the gasOnly if you switched auto on, after your delayNo
Set your snuggle range widthYes, with your width settingNoNo
Change the feeNoCan only lower a wallet's rateCan change the default and per-wallet rates (published: 15% on LPs, 25% copy trading). Always after a 48 h public wait
Change treasury, referrer, keepers, pools, limitsNoNoYes, after 48 h
Pause deposits and automationNoNoYes, after 48 h
Replace the contract codeNoNoNo

The two contracts that control owner actions, if you want to keep an eye on them:

09 · Found a bug?

Tell us privately first

Email admin@quantumpools.io with SECURITY in the subject line.

  1. What's affected. The contract address or page URL.
  2. How to reproduce it. Steps, a transaction hash, or a short proof of concept.
  3. The impact. What an attacker could do, and to whose funds.
Please keep it private until it's fixedPosting a live bug in public puts every depositor at risk before a fix exists. There's no bug bounty right now. This contact is also published at /.well-known/security.txt, where security tools look for it.
10 · FAQ

Quick answers

If QuantumPools disappeared, could I still get my money out?

Yes. Your funds sit in the vault contract on-chain — on the chain where you opened your position — not with us, so you can withdraw directly at any time. A withdrawal only needs your own wallet and the vault contract: it can't be paused, and it doesn't depend on the keeper or the website. You do need a way to send the transaction, and a lost wallet can't be recovered.

Can I deposit now?

Yes. Public deposits are open on the live venues: Robinhood Chain, Base and BNB Chain. Venues marked as previews on the Add page are not open yet.