wstETH — Wrapped Staked Ether (Non-Rebasing)

🧐What it is:
wstETH is the wrapped, non–rebasing version of stETH (ETH staked via Lido). Non–rebasing = your wstETH balance doesn’t change; staking yield is reflected in an exchange rate between wstETH ↔ stETH that increases over time. It’s 100% ERC–20, ideal for protocols that don’t support rebases.
🧿 Definition note: wstETH is redeemable for stETH (not for ETH).
🔑 Key facts:
- 🔢 Decimals: 18
- 🧾 Canonical contract (Ethereum L1):
0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0
— ALWAYS verify the checksummed address with official sources before interacting. - Refs: Etherscan — wstETH / docs.lido.fi / help.lido.fi
🛠️ How it works (short):
- 🔁 Wrap (stETH → wstETH): You deliver stETH to the contract and receive wstETH. It is not 1:1 in units; it is 1:1 in value using an exchange rate (ratio) that the contract maintains. Result: your number of wstETH stays fixed from the start.
- 📈 What is the “exchange rate”?: It is how many stETH 1 wstETH is “worth” (stETH_per_wstETH). As staking generates rewards, that ratio rises gradually; therefore, over time 1 wstETH redeems for more stETH.
Think of it as a “redemption value” that grows. Your wstETH balance does not change; what changes is what it gets when you redeem it.

- 🔄 Unwrap (wstETH → stETH) — You return wstETH and the contract gives you stETH according to the ratio at that moment. Simple: wstETH × ratio = stETH received.
- 🧠 Clear mini–examples:
- Case A (wrap): if today 1 wstETH = 1.06 stETH and you deposit 1.06 stETH, you receive ≈ 1 wstETH.
- Case B (unwrap): if you have 1 wstETH and the ratio is 1.06, upon redeeming you receive ≈ 1.06 stETH.
Case C (different numbers): ratio 1.0572 →
🔸 You deposit 10 stETH → you mint 10 ÷ 1.0572 ≈ 9.462 wstETH.🔸 You return 5 wstETH → you receive 5 × 1.0572 = 5.286 stETH.
(UIs round to 18 decimals; the contract does the exact calculation.)
- Case A (wrap): if today 1 wstETH = 1.06 stETH and you deposit 1.06 stETH, you receive ≈ 1 wstETH.
- 🧩 “Non–rebasing,” short explanation: With stETH (rebasing) your balance increases day by day; with wstETH (non–rebasing) your balance stays the same and the ratio goes up. dApps like wstETH because it is pure ERC–20 and your balance doesn’t “wiggle.”
- 🛣️ Typical paths (to orient yourself):
- You have ETH and want wstETH → first stake to stETH (Lido) → then wrap to wstETH.
- You already have stETH → wrap directly to wstETH.
- You want ETH at the end → unwrap to stETH and then swap it for ETH (depending on your flow).
- You have ETH and want wstETH → first stake to stETH (Lido) → then wrap to wstETH.
💡 Why it matters:
- 🧱 Full compatibility (non-rebasing): Many protocols and bridges don’t accept balances that change on their own (rebasing). wstETH “standardizes” stETH as a fixed-balance ERC–20, so everything fits without hacks.
- 🔐 Approvals & transferFrom: With wstETH you can use the standard ERC–20 allowance flow (approve → transferFrom): you grant permission (approve) and contracts move your token with transferFrom. Result: swaps on AMMs, lending, vaults, and auctions work as they should.
- 🧮 Accounting that doesn’t break your head: Since the balance doesn’t “wiggle,” reconciling numbers is easy: P&L, treasury reports, on–chain audits… all clearer than with a rebasing token.
- 🧩 Composability & chained operations: Strategies that combine several steps (deposit, swap, add liquidity, etc.) run smoother because wstETH speaks pure ERC-20.
- 🌉 Multichain EVM: On EVM networks like Base/Arbitrum/Optimism/Polygon you’ll see network-native wstETH (same logic, different address). Always verify the correct per–network contract and 18 decimals in the destination explorer before using it.
- 🤹 Useful references:
🔗 Lido Help Center
🔗 Lido Docs
🔗 Base Explorer (BaseScan) (search “wstETH” and verify the official contract for Base)

WAFFT summary: wstETH is the base block that makes stETH easy to integrate across the ecosystem—less friction, more play, no drama. At WAFFTlab, we shape financially wise minds ready to navigate DeFi with clarity and confidence. 🚀
💼 Use it for:
- 🏦 Collateral in lending markets: Deposit wstETH as collateral and borrow assets (e.g., USDC). Since it’s non–rebasing, your balance stays fixed and calculations are clean.
- LTV (Loan-to-Value) = how much you can borrow based on your collateral (e.g., deposit $10,000 and at 70% LTV, you can borrow $7,000).
- Health Factor (HF) = your “safety buffer” (if it’s >1, you’re safe; if it drops near 1, you risk liquidation).
- LTV (Loan-to-Value) = how much you can borrow based on your collateral (e.g., deposit $10,000 and at 70% LTV, you can borrow $7,000).

- Typical flow: deposit wstETH → enable as collateral → borrow stablecoins → manage your HF smartly.
🔗 Try it on Aave.
WAFFT note: Listings and parameters vary by network/market; confirm wstETH is listed and check the LTV/collateral factors before using.
- Typical flow: deposit wstETH → enable as collateral → borrow stablecoins → manage your HF smartly.
- ⚙️ Yield strategies (vaults / auto–compound): Many strategies require pure ERC–20 tokens. wstETH fits right in: your balance stays constant and staking rewards are embedded in the exchange rate; on top of that, the vault adds extra yield (fees, incentives, autocompounding).
- 🌊 Liquidity on AMMs/DEXs: Provide wstETH to deep liquidity pools (wstETH/ETH, wstETH/USDC, wstETH/stETH) to earn trading fees. Works well in both V2 and V3–style pools (concentrated liquidity).
- Slippage = the difference between the expected and actual execution price due to insufficient liquidity at your price.
- Impermanent Loss (IL) = the difference between “just holding both tokens” and “being an LP” when price moves. It can be reduced with tight ranges and correlated pairs (e.g., wstETH/ETH or wstETH/stETH).
- Slippage = the difference between the expected and actual execution price due to insufficient liquidity at your price.

- Typical flow: choose pool → deposit wstETH + the other token → receive LP tokens → earn fees based on volume and time in range.
🔗 Popular DEXs: Uniswap / Balancer / Curve.
WAFFT note: On Uniswap v3–style pools, your fee tier (e.g., 0.05% / 0.3% / 1%) and price range choices materially affect fee income and IL.
- Typical flow: choose pool → deposit wstETH + the other token → receive LP tokens → earn fees based on volume and time in range.
- 📒 Treasury & on-chain accounting: For DAOs, teams, and creators, wstETH makes the numbers simpler:
- Stable balances (no rebasing) → cleaner reporting and audits.
- Programmable payments (ERC–20 standard) → easier payrolls, grants, and vendor payments.
- Smooth integration with other dApps (predictable allowances, transferFrom works as expected).
- Example: DAO receives income in stETH → wraps to wstETH → pays contributors in wstETH and tracks it cleanly on dashboards.
🔗 Reference: Lido Docs – wstETH Use Cases.
- Stable balances (no rebasing) → cleaner reporting and audits.
- 🧩 Composability & chained operations: With wstETH (pure ERC–20), you can chain multiple steps into a single transaction (swap → LP → stake), ideal for all–or–nothing flows executed by smart contracts.
- Real benefit: fewer clicks, less friction, and dApps “speak” a standard everyone understands (approvals and transferFrom just work).

🔗 More: Ethereum Dev Docs – Composability.
🚪 Exit path to native ETH:
- 🔁 Unwrap: Swap your wstETH for stETH at the current exchange rate (you’re just changing the wrapper; wstETH is non–rebasing).
- 🧾 Request in Lido (Withdraw): In the Lido dApp, choose how much stETH to convert to ETH, sign; this creates an on–chain withdrawal ticket.
- ⏳ Claim: When the ticket is Ready, go back to Lido and click Claim: you receive native ETH in the same wallet that created the request.
- 🌉 If you’re on L2: Bridge your wstETH or stETH to Ethereum mainnet (L1) first, then execute Withdraw → Claim there.
- ⏱️ Wait time: Depends on the withdrawal queue; the Lido UI shows the status (Pending/Ready) and an ETA.
- Quick steps (1–2–3) 🧠:
- wstETH → stETH (Unwrap).
- stETH → ETH (Withdraw on Lido → wait → Claim).
- On L2? Bridge to L1 first, then do 1–2.
- wstETH → stETH (Unwrap).
Lightning example ⚡:
You have 1 wstETH and the exchange rate is 1.05 → Unwrap → you receive 1.05 stETH → Withdraw on Lido → Claim when Ready → ∼1.05 ETH in your wallet

Mini-glossary 📚:
🔸 Unwrap: Swap wstETH for stETH.
🔸 Exchange rate: How much stETH 1 wstETH redeems for (it usually increases with rewards).
🔸 Withdraw/Claim: Request and receive your native ETH.
🔸 L1/L2: Main chain / layer two.
🔸 Bridge: Move tokens between L1 and L2.
💡 WAFFTip: If you want the ETH to land in a different wallet, first transfer your stETH to that wallet, then have that wallet perform Withdraw → Claim.
If you’re on L2, bridge to L1 before requesting the withdrawal so the Claim arrives directly as native ETH.
🌉 L2 & cross-chain:
- 🧭 Same logic, different contract address: On Arbitrum / Optimism / Base / Polygon PoS / Polygon zkEVM (and other EVM chains) there’s a chain–native representation of wstETH on each chain. It’s ERC–20, 18 decimals, same logic, but a different contract address per chain.
👉 “Native” here means the canonical token representation on that chain (typically bridged from Ethereum mainnet via the official route). Always verify the exact contract address in the block explorer (checksum), ideally from official docs or token lists.
- 🧩 Local unwrap (availability note): On most L2s the canonical asset is wstETH; stETH may not exist on that chain. Unwrapping to stETH only applies where stETH exists on that L2. It doesn’t “jump” to L1 by itself. To move value L2 ↔ L1 or L2 ↔ L2 you need a bridge/router.
- 🗺️ Typical (mental) flows:
L1 → L2: wstETH (L1) → bridge → wstETH (L2) (or stETH, if that bridge provides it) → then operate there.
- L2 → L1: wstETH (L2)→ bridge → wstETH (L1) → (if you want native ETH, follow “Exit path to native ETH”).
- L2 → L2: wstETH (L2 A) → cross–chain router/bridge → wstETH (L2 B).
- 🧪 Best practices:
- Use official or recommended bridges/routers; note the difference between canonical bridges (cheaper, slower; L2 → L1 withdrawals can take days) and fast liquidity bridges (faster, higher fees/slippage).

- Confirm the destination contract address in the chain’s block explorer; beware of look–alike names/symbols.
- Gas per chain: you need the chain’s native gas token to transact (e.g., ETH on Arbitrum, Optimism, Base; on Polygon PoS use POL; on Polygon zkEVM use ETH).
- Test with a small amount before moving a larger amount.
- Allowances per network: approvals don’t travel between chains and are per token/contract. Some dApps support permit (EIP–2612) to save an approval transaction.
- Confirm the destination contract address in the chain’s block explorer; beware of look–alike names/symbols.
- 🛡️ Security hygiene:
- Check the bridge’s domain and the chain ID in your wallet before signing.
- Don’t copy addresses from search results or random chats; rely on official sources.
- Check the bridge’s domain and the chain ID in your wallet before signing.

🔗 Block explorers for each network: Base / Arbitrum / Optimism / Polygon PoS / Polygon zkEVM.
💡 WAFFTip : Treat each blockchain as a separate fortress with its own rules—bridges are your drawbridges between them. Inside a fortress, wrapping/unwrapping (like stETH ↔ wstETH) just reshapes your assets without crossing borders. Master the gates, guard your keys, and move with purpose. That’s how you build an empire across chains. 🏰⚔️
Chain | Canonical token (contract address) | Block explorer | Recommended bridge |
---|---|---|---|
Arbitrum | 0x5979D7b546E38E414F7E9822514be443A4800529 | arbiscan.io — token | Arbitrum Bridge |
Optimism | 0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb | optimistic.etherscan.io — token | Superchain Bridge (Optimism) |
Base | 0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452 | basescan.org — token | Base Docs — Bridges |
Polygon PoS | 0x03b54A6e9a984069379fae1a4fC4dBAE93B3bCCD | polygonscan.com — token | Polygon Portal Bridge |
Polygon zkEVM | 0x5D8cFF95D7A57c0BF50B30b43c7CC0D52825D4a9 | zkevm.polygonscan.com — token | Polygon zkEVM Bridge |
THE PATH TO WEALTH IS PAVED WITH INTERCHAIN WISDOM. WELCOME TO WAFFT Academy. 🧠🚀
🦾 PoR / transparency:

- 🧾 PoR (Proof of Reserves): “Proof of reserves”: verify on–chain that wstETH ↔ stETH is backed by the contract’s public exchange rate and actual balances.
- 🧲 Peg (wstETH ↔ stETH): wstETH is non–rebasing: your balance stays fixed and the exchange rate (stETH per 1 wstETH) rises with rewards; the “peg” is the on-chain convertibility, not a fixed market price.
- 📈 Price feeds: Check stETH/ETH and wstETH/ETH on DEX/aggregators to compare market vs. theoretical (mind fees/slippage).
- Theoretical price of 1 wstETH ≈ (stETH per 1 wstETH, the exchange rate) × (price of stETH in ETH, stETH/ETH spot).
- Theoretical price of 1 wstETH ≈ (stETH per 1 wstETH, the exchange rate) × (price of stETH in ETH, stETH/ETH spot).
- 🧮 On-chain exchange rate: The contract exposes conversion functions (wstETH ↔ stETH). Use them to query the current exchange rate before sizing a trade.
- 🔢 Supply and activity: In the block explorer, open the wstETH token page and check:
totalSupply: total wstETH on that chain.
holders: holder count and distribution (rich list/concentration).
mint/burn: events corresponding to wrap/unwrap (mint when wrapping stETH; burn when unwrapping).
⏩ Then open stETH on the same chain and check its totalSupply and activity (transfers/events).
👉 Why it matters: to confirm supply and events match actual usage and to spot anomalies (sudden spikes, unusual changes in holders, etc.).
- 🌊 Liquidity: Check depth in wstETH/ETH and wstETH/stETH pools (more depth = pricing closer to theoretical).
- 🧠 Quick example: If the exchange rate = 1.0612 and stETH/ETH (spot) = 0.999, then theoretical ≈ 1.0612 × 0.999 = 1.0601 ETH per 1 wstETH (approx).
💡WAFFTip : Validate exchange rate → spot price → supply/events → liquidity — then size the trade.
🔧 Underlying risk (staking):
👉 Yield and risk depend on validator diversity and performance, potential slashing, and Lido governance.

- 🧬 Staking inheritance: wstETH inherits the good and the bad of the staking behind stETH: if validators perform well, the exchange rate progresses smoothly; if they fail, you see it in the pace.
- 🌐 Validator diversity: The more diverse the set (distinct operators, regions, and consensus/execution clients), the lower the risk of coordinated failures (everyone going down at once).
- ⏱️ Performance: Offline, slow, or out of sync validators ⇒ fewer rewards accrue, and the wstETH ↔ stETH exchange rate rises more slowly.
- 🪓 Slashing: A penalty when a validator commits a serious fault (e.g., double–signing): part of their staked ETH is cut, which temporarily reduces the validator set’s rewards (it may show up as a dip in the exchange rate’s progress).
- 🗳️ Lido governance: Decisions on which operators participate, fees, and operational parameters influence net APR and the allocation across validators (and therefore the pace of the exchange rate).
- 📊 How it shows up in wstETH: Your wstETH count doesn’t change; everything is reflected in the exchange rate:
- good performance/diversity → the exchange rate rises steadily;
- incidents/slashing → the exchange rate rises more slowly or adjusts temporarily.
- good performance/diversity → the exchange rate rises steadily;
Mini-glossary 📚:
🔸 Validator: A node that proposes/attests blocks on the network.
🔸 Client: Node software (consensus/execution).
🔸 Slashing: Stake reduction for invalid behavior (network security).
🔸 Governance: Protocol votes/decisions that can affect future performance.

🧠 WAFFT Mental Model : read the exchange rate like a car dashboard — if the engine (staking) runs smoothly, progress is steady. 🚗📈
⚠️ Watch out for…
- 📉 Basis risk vs. ETH: Under stress, the stETH/ETH price (and by extension wstETH via its exchange rate) can deviate from spot—trade at a discount (worth less) or a premium (worth more).
☆ WAFFT take: always compare the market price with the theoretical value (wstETH → stETH exchange rate × stETH/ETH spot) before moving size.
- 🧭 Routes and fake contracts: ⚠️ Each network has its own wstETH contract address. Using the wrong address means losing your funds forever.
Avoid clones by checking the canonical contract in the block explorer (checksum, verified code, correct name). If something is spelled “almost the same” but the address doesn’t match, it’s not the right one.
- 🧪 Operational (first time): If this is your first route, test with a small amount: do a small unwrap, try the Withdraw → Claim flow and/or a bridge with a minimal amount. When everything lines up, then increase size.

✅ Quick verification:
- 🗺️ Correct network: Are you on the right chain (L1 vs L2)? Confirm in your wallet/block explorer (check chain ID).
- 🧾 Official contract: On Ethereum L1, wstETH is
0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0
— always verify via official sources to avoid spoofed addresses. - 🔢 Decimals: 18 (if you see anything else, red flag).
- 🧪 Small test: Start with a fraction (1–5%) to validate price, routes, and timing.
- 🔐 Approvals: After using new dApps, review/manage your approvals (limit amounts or revoke what you don’t need).

☆ WAFFT summary: method over noise. Check → execute. WAFFT guides you through money. 🧭🚀
👉 Up next: explore WPOL / WBNB / WAVAX / WFTM — Wrapped Native Coins and learn how native assets power their DeFi ecosystems through wrapped versions built for liquidity, composability, and smart contract access. ⚙️💥