Quantum Audit Logo
Launch App

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

Is Wrapped liquid staked Ether 2.0 Safe?

WSTETHBase
Not verified This record has not gone through deep verification and is not being monitored. The score is a dated snapshot — the token’s risk can change at any time.Own this token? Put it under verification →
Last checked Sep 4, 2026 · 1 audit on record
SummaryAI Copilot

The ERC20Bridged token, deployed via an OssifiableProxy, implements standard ERC20 functionality with additional bridge-specific minting and burning capabilities.

Read the full analysis
What raised the score
  • Ownership not renounced
  • Proxy contract
  • Admin is unclassified contract
  • Top-10 concentration > 30%
  • Liquidity not locked, but no owner/deployer address holds LP — market-depth risk, not rug risk
  • LP top1 unlocked holder = 57.0%
  • 1 Critical finding(s) from audit
  • 1 High finding(s) from audit
  • 1 Low finding(s) from audit
Exact factors
  • Ownership NOT renounced (admin/mint authority retained)
  • Proxy contract (upgradeable — admin can replace logic)
  • Admin is unclassified contract
  • Top-10 concentration > 30% (76.7% total → 34.3% effective; 6.1% in EOAs, 70.6% in contracts — moderate)
  • Liquidity not locked, but no owner/deployer address holds LP — market-depth risk, not rug risk
  • LP top1 unlocked holder = 57.0% (independent LP — depth risk, pool = 68% of DEX liquidity)
  • 1 Critical finding(s) from audit
  • 1 High finding(s) from audit
  • 1 Low finding(s) from audit

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 Checklist

as of audit · Sep 42 of 5 checks passed
Contract verifiedVerified
OwnershipRetained
MintNo mint
Liquidity lockNot locked
UpgradeabilityUpgradeable

Holders

as of audit · Sep 4, 2026
70.6%Contracts6.1%23.3%Everyone else
70.6%Contracts6.1%23.3%Everyone else
ContractsWalletsEveryone elseBubble area = share of supply
76.7%of supply sits with the top 10 holders
  • Contractstreasury, vesting, bridge, staking70.6%
  • Walletsanonymous holders, free to sell6.1%
  • Everyone elsethe rest of the supply23.3%
Effective concentrationwhat the score reads34.3%
How holder types affect the score

Share held by contracts — treasury, vesting, bridge or staking — is discounted against share held by wallets when the score is computed: a contract cannot decide to sell the way an anonymous holder can, though it can still be drained or voted to sell. Effective concentration is the figure the risk score is actually calculated from.

Holder balances as recorded by the audit of Sep 4, 2026

Liquidity

as of audit · Sep 4$4.87M across 23 pairs
LP tokensNot locked

The LP tokens of the analysed pool are not locked or burned, so whoever holds them can withdraw that liquidity.

Analysed pool$3.32MShare of depth68.3%
Top-1 Unlocked Holder57.0%
Top-3 Unlocked70.5%
Unlocked LP held by
0x3c34…fb710xfbf5…cd2d0x781d…47890x51cc…59130x0c2d…2ad50x799c…9cf80x88ad…7e760x24f3…51a10xfb2b…37470x24b0…94a6

No privileged address appears among these holders: the unlocked liquidity sits with independent providers, not with the deployer.

Security Findings

1 Critical1 High1 Low
Critical

Critical Proxy Initialization Flaw & Uninitialized Bridge Address

The ERC20Bridged implementation contract's constructor sets critical state variables (decimals, name, symbol, and crucially, the bridge address) using immutable for bridge. When deployed behind a proxy (like OssifiableProxy), the constructor is only executed once during the implementation's deployment, not during the proxy's initialization. Consequently, the bridge address in the proxy's storage will remain address(0), rendering the bridgeMint and bridgeBurn functions unusable as they are protected by onlyBridge. This fundamentally breaks the core functionality of a bridged token (7.1 Architecture, 7.7 Upgrades).C-01

Issue

The ERC20Bridged implementation contract's constructor sets critical state variables (decimals, name, symbol, and crucially, the bridge address) using immutable for bridge. When deployed behind a proxy (like OssifiableProxy), the constructor is only executed once during the implementation's deployment, not during the proxy's initialization. Consequently, the bridge address in the proxy's storage will remain address(0), rendering the bridgeMint and bridgeBurn functions unusable as they are protected by onlyBridge. This fundamentally breaks the core functionality of a bridged token (7.1 Architecture, 7.7 Upgrades).

Fix

All state-modifying logic, especially for critical parameters like the bridge address, name, symbol, and decimals, must be moved from the constructor to an initializer function (e.g., initialize). The bridge variable should not be immutable but a regular state variable set by the initializer. The initializer must then be called *once* on the proxy contract after deployment.

Status

Unresolved

High

Unprotected and Ineffective initialize Function

The initialize function in ERC20Bridged is intended for proxy initialization but lacks access control, allowing any external caller to execute it (7.3 Access Control). Furthermore, it attempts to set name and symbol, which are already set by the ERC20Metadata constructor. The _setERC20MetadataName and _setERC20MetadataSymbol functions revert if the metadata is already set, making initialize ineffective and prone to reverting if called. This design flaw prevents proper initialization of metadata via the proxy (7.7 Upgrades, 7.8 Operations).H-01

Issue

The initialize function in ERC20Bridged is intended for proxy initialization but lacks access control, allowing any external caller to execute it (7.3 Access Control). Furthermore, it attempts to set name and symbol, which are already set by the ERC20Metadata constructor. The _setERC20MetadataName and _setERC20MetadataSymbol functions revert if the metadata is already set, making initialize ineffective and prone to reverting if called. This design flaw prevents proper initialization of metadata via the proxy (7.7 Upgrades, 7.8 Operations).

Fix

Implement robust access control (e.g., onlyOwner or onlyInitializer) for the initialize function to ensure it can only be called once by an authorized entity. Refactor the ERC20Metadata constructor logic into the initialize function to avoid conflicts and ensure proper proxy initialization.

Status

Unresolved

Low

Custom Storage Slot Usage for Metadata

The ERC20Metadata contract uses a custom storage slot (DYNAMIC_METADATA_SLOT) for storing name and symbol. While this is a valid technique, it introduces a dependency on this specific slot for future upgrades. Any change in the storage layout of ERC20Metadata or its base contracts must carefully account for this custom slot to prevent storage collisions or data corruption (7.7 Upgrades).L-01

Issue

The ERC20Metadata contract uses a custom storage slot (DYNAMIC_METADATA_SLOT) for storing name and symbol. While this is a valid technique, it introduces a dependency on this specific slot for future upgrades. Any change in the storage layout of ERC20Metadata or its base contracts must carefully account for this custom slot to prevent storage collisions or data corruption (7.7 Upgrades).

Fix

Document the custom storage slot usage clearly. During future upgrades, ensure that the storage layout of the new implementation contract is compatible with the existing proxy's storage, paying particular attention to this custom slot to avoid overwriting or misinterpreting data.

Status

Unresolved

Analysis

AI Copilotas of audit · Sep 4
Executive SummaryWhat the contract is and what the review found

The ERC20Bridged token, deployed via an OssifiableProxy, implements standard ERC20 functionality with additional bridge-specific minting and burning capabilities. The core logic for token transfers and allowances appears robust, utilizing Solidity 0.8.10's default overflow/underflow checks and explicit unchecked blocks where appropriate. However, critical design flaws exist in the contract's interaction with the proxy pattern, specifically regarding state variable initialization and the use of immutable variables, leading to an uninitialized bridge address and an ineffective initialize function. These issues severely impact the token's intended functionality and upgradeability.

Technical6/10Medium risk

The ERC20Bridged contract implements standard ERC20 functionalities (7.2 Code Security) with custom _mint and _burn methods protected by an onlyBridge modifier (7.3 Access Control). The use of Solidity 0.8.10 provides built-in overflow/underflow protection, and unchecked blocks are correctly used after explicit boundary checks. The ERC20Metadata component uses a custom storage slot for dynamic metadata, which is a valid but less common pattern. However, the technical architecture suffers from critical flaws related to proxy initialization and state variable management (7.1 Architecture), particularly the immutable bridge address, which will be address(0) in the proxy's storage.

Governance1/10High risk

The economic model of the ERC20Bridged token is straightforward, functioning as a standard ERC20 with controlled minting and burning capabilities (7.4 Economic). The bridgeMint and bridgeBurn functions are appropriately restricted to a designated bridge address, preventing unauthorized supply manipulation. There is no explicit governance mechanism (7.5 Governance) within the token contract itself, relying on the external bridge for supply control. The primary economic risk stems from the technical flaw preventing the bridge address from being correctly initialized in the proxy, rendering the bridge functions unusable.

Upgrades1/10High risk

The contract is deployed behind an OssifiableProxy, indicating an intention for upgradeability (7.7 Upgrades). However, the current implementation has critical upgrade safety issues. The ERC20Bridged constructor initializes state variables like decimals, name, symbol, and the bridge address. For proxy contracts, these should be set via an initializer function, not the constructor. The immutable bridge variable in the implementation means the bridge address in the proxy's storage will remain address(0). Additionally, the initialize function, intended for proxy setup, conflicts with the constructor's actions and lacks access control, making it ineffective and potentially exploitable if it were to set critical parameters (7.8 Operations). The custom storage slot for metadata also requires careful management during upgrades.

Final RecommendationWhat to do about this score

It is critical to refactor the ERC20Bridged contract to correctly implement the proxy pattern.

All state-modifying logic, especially for critical parameters like the bridge address, name, symbol, and decimals, must be moved from the constructor to an initializer function. The bridge variable should be a regular state variable, not immutable, and set by this initializer. The initializer function must be protected with robust access control (e.g., onlyOwner or a dedicated initializer role) and called exactly once on the proxy contract after deployment. Thoroughly test the initialization process in a development environment before redeployment.

Contract & Record

1 audit on record
TypeOssifiableProxy
NetworkBase
Token age1y
Contract0xc1cb…e452
Deployer0xfa81…4ed2
Proxy Upgrade Controls
Proxy TypeEip1967 Transparent
AdminOther-Contract
ImplementationVerified source
Upgrades (30d)0 · stable
Badge for your website
Wrapped liquid staked Ether 2.0 security record badge

Free for any token on the record. It links to this page and always shows the current score and the date it was checked.

Audit History
  1. Aug 12, 202647Medium

Score changes are recorded as dated snapshots — history is append-only and cannot be edited.

Would You Like a More Detailed Audit of Wrapped liquid staked Ether 2.0?

Our AI-powered scanner gives you a deeper, real-time smart contract analysis — free, with every scoring factor shown.

Get Detailed Audit Is this your token? Publish your own audit on this page