Quantum Audit Logo
Arbitrum · Smart Contract Security · Updated Jul 24, 2026

Is Wrapped BTC Safe? WBTC

On-chain security analysis — is it a scam or legit?

Contract 0x2f2a…5b0f DexScreener ↗
Volume 24h
$18.42M
Liquidity
$35.55M
Price
$65531.5900
Token Age
4y
Top 10 Holders
61.1%

Security Checklist

Contract VerifiedPass
Ownership RenouncedUnknown
No Mint FunctionPass
Liquidity LockedFail
Not a ProxyFail

Audit History

Jul 2281Jul 2357

Every audit run adds a dated snapshot — history is append-only and cannot be edited.

Audit Summary

The audited system comprises a `BeaconProxyFactory` for deploying `ClonableBeaconProxy` instances, which derive their implementation from an `UpgradeableBeacon`. While leveraging well-audited OpenZeppelin components, a critical access control vulnerability in the factory's initialization function allows any caller to set the beacon, potentially leading to a full compromise of all deployed proxies. Additionally, the implementation contract is not source-verified, significantly hindering transparency and trust. Centralized upgrade control via the beacon owner also presents a high single point of failure risk.

Final Recommendation: Address the critical access control vulnerability in the `BeaconProxyFactory.initialize` function immediately by implementing robust access control, such as `onlyOwner` or a multi-signature wallet. Ensure the implementation contract is fully source-verified on all relevant block explorers to provide transparency and allow for public auditing. Consider implementing a time-lock or multi-signature governance for the `UpgradeableBeacon` owner to mitigate the risks associated with centralized upgrade control. Additionally, review the initialization process for proxy implementations to ensure they are correctly and securely initialized after deployment.

Category Ratings

TechnicalMedium
5/10

The technical architecture (7.1 Architecture) utilizes the OpenZeppelin Beacon Proxy pattern, enabling efficient deployment of multiple proxies pointing to a single upgradeable beacon. The `BeaconProxyFactory` uses `CREATE2` for deterministic proxy address generation, a robust feature. However, a cr

GovernanceHigh
2/10

The system's governance (7.5 Governance) relies on a centralized `Ownable` pattern for the `UpgradeableBeacon` contract. The owner of this beacon has the sole authority to upgrade the implementation contract for all associated proxies. This single point of control introduces a high economic ris

UpgradesHigh
1/10

The upgradeability mechanism (7.7 Upgrades) is based on the Beacon Proxy pattern, where all `ClonableBeaconProxy` instances delegate calls to an implementation address managed by a single `UpgradeableBeacon`. This allows for efficient upgrades across many proxies by simply updating the beacon's

Proxy Upgrade Controls

Proxy TypeBeacon
ImplementationVerified source
Upgrades (30d)0 · stable

LP Distribution

Top-1 Unlocked Holder20.9%
Top-3 Unlocked44.4%

What Raised This Score

Each factor is an on-chain fact recorded at the time of this analysis. The score is computed from them by a deterministic function, so the same contract returns the same score for anyone who runs the audit. How scores are computed

Security Findings

1 Critical 2 High 1 Medium 1 Info
C-01CriticalUnresolved

BeaconProxyFactory.initialize Lacks Access Control

The `initialize` function in `BeaconProxyFactory` is designed to set the crucial `beacon` address, which dictates the implementation logic for all proxies deployed by the factory. However, this function lacks any access control, meaning any external address can call it. If an attacker calls `initialize` before the legitimate owner, they can set a malicious beacon address, effectively compromising all future proxies deployed by this factory to point to an attacker-controlled implementation. This leads to a complete loss of control over the system's core logic.

Recommendation: Implement robust access control for the `initialize` function. It should only be callable once by a trusted entity, preferably the deployer or a designated owner/governance contract. Consider using OpenZeppelin's `Ownable` or a multi-signature wallet for this critical setup function.
H-01HighUnresolved

Unverified Implementation Contract

The implementation contract (`0x3f770ac673856f105b586bb393d122721265ad46`) that the `UpgradeableBeacon` points to is not source-verified on Etherscan. This lack of transparency makes it impossible for users, auditors, or the community to inspect the actual code that the `ClonableBeaconProxy` instances will execute. Without verified source code, there is no way to confirm the contract's intended functionality, security, or absence of malicious logic, posing a significant trust and security risk.

Recommendation: Immediately verify the source code of the implementation contract on all relevant block explorers (e.g., Etherscan, Arbiscan). This is a fundamental step for transparency and user trust in any proxy-based system.
H-02HighUnresolved

Centralized Control Over Upgrades

The `UpgradeableBeacon` contract, which dictates the implementation for all deployed proxies, is controlled by a single owner via the `Ownable` pattern. This centralized control means that if the owner's private key is compromised, a malicious actor could upgrade all associated proxies to a harmful implementation, potentially leading to a complete loss of user funds or system manipulation. This represents a single point of failure for the entire system's upgradeability.

Recommendation: Consider decentralizing or enhancing the security of the upgrade mechanism. Options include transferring ownership to a multi-signature wallet (e.g., Gnosis Safe), implementing a time-lock contract for upgrade delays, or integrating a more robust governance mechanism to approve upgrades.
M-01MediumUnresolved

No Initialization Data Passed to ClonableBeaconProxy

The `ClonableBeaconProxy` constructor calls `BeaconProxy(ProxySetter(msg.sender).beacon(), "")`, passing an empty `data` parameter. This means that if the underlying implementation contract has an `initialize` function (a common pattern for upgradeable contracts), it will not be called automatically during the proxy's deployment. If the implementation requires initialization for proper functioning or to set critical parameters, it must be initialized separately after proxy deployment. Failure to do so could leave the implementation in an uninitialized or vulnerable state.

Recommendation: Ensure that the implementation contract is designed to either be immutable (not requiring initialization) or that a robust and secure process is in place to call its `initialize` function immediately after the proxy's deployment. Document this initialization requirement clearly for operators.
I-01InformationalUnresolved

Use of CREATE2 for Deterministic Proxy Addresses

The `BeaconProxyFactory` utilizes the `CREATE2` opcode via OpenZeppelin's `Create2` library to deploy `ClonableBeaconProxy` instances. This allows for deterministic address generation, meaning the address of a proxy can be calculated in advance using the factory address, a salt, and the proxy's creation bytecode. While a powerful feature, it implies that if a specific salt is reused, deployment will fail. The factory mitigates this by generating a unique salt based on `msg.sender` and `userSalt`.

Recommendation: No direct recommendation for a vulnerability, as this is an intended feature. However, ensure that the implications of deterministic addresses (e.g., potential for 'counterfactual interactions' or pre-funding addresses) are fully understood and align with the project's design goals.

Would You Like a More Detailed Audit of Wrapped BTC?

Our AI-powered scanner gives you a deeper, real-time smart contract analysis — free, no signup required.

Get Detailed Audit
Run Free Audit →