WETH — The ERC-20 Suit for Ether

🧐 What it is:
WETH is ETH wrapped into an ERC–20 token. Because native ETH isn’t ERC–20 (no approve
/transferFrom
), many DeFi protocols can’t handle it directly. WETH fixes that: convert 1:1 ETH → WETH to “speak ERC–20” wherever it’s required — and unwrap 1:1 back to ETH when you’re done.
🔑 Key facts:
🔢 Decimals: 18
🧾 Canonical contract (Ethereum L1):
0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
— (always verify the full checksummed address before interacting)- 🔗 Refs: Etherscan — WETH
💰 Solvency: Fully collateralized 1:1 by ETH held in the contract. Verifiable on–chain.
🛠️ How it works: beginner-friendly
- 🔁 Wrap: Call the deposit function and send ETH to the WETH contract. The contract mints the same amount of WETH and credits it to your address at a 1:1 rate.
- Mint: Creating new tokens in the contract’s internal ledger.
- Units: ETH uses 18 decimals on–chain. Internally, amounts are in wei; 1 ETH = 1e18 wei.
- Mint: Creating new tokens in the contract’s internal ledger.

- Also valid: Many WETH contracts auto–wrap if you send ETH directly to the contract address; the contract internally executes deposit and mints WETH to your address.
- Also valid: Many WETH contracts auto–wrap if you send ETH directly to the contract address; the contract internally executes deposit and mints WETH to your address.
- 🔄 Unwrap: Call the withdraw function with the amount you want to burn. The contract burns that amount of WETH and sends the same amount of ETH 1:1 to the calling address (the caller).
- Burn: Permanently removing tokens from circulation.
💫 WAFFTip: If you want the ETH to arrive at a different wallet, first transfer the WETH to that wallet and have that wallet execute withdraw.
- Burn: Permanently removing tokens from circulation.
- ⚙️ERC–20 behavior: Once you hold WETH, it behaves like any ERC–20. You can:
- transfer to send tokens.
- approve to grant a third party a spending limit (allowance) — revoke.cash
- transferFrom to let that third party move your tokens within the approved limit — ERC-20 Approve and TransferFrom
- balanceOf to check an address’s balance — ERC-20 balanceOf
- totalSupply to see the total number of tokens in existence.
- transfer to send tokens.
- ⛽ Fees (gas): The WETH contract does not charge a protocol fee. You only pay gas, which is the network fee in ETH. Some applications may add their own fee and should display it before you confirm.
- ⚠️ Important: Keep some ETH for gas; you cannot pay gas with WETH.
- ⚠️ Important: Keep some ETH for gas; you cannot pay gas with WETH.
- 🧪 Quick example:
✺ Wrap 1 ETH → deposit transaction → you receive 1 WETH. (You send 1 ETH to the WETH contract via the deposit function; the contract mints 1 WETH to your wallet, and you pay a small network (gas) fee in ETH.)
✺ Unwrap 0.5 WETH → withdraw transaction with 0.5 ether (i.e., 500000000000000000 wei) → you receive 0.5 ETH back at the calling address.
The amount is passed in wei because the blockchain represents values as integers (no decimals).

🔄 Remember: the operation returns 0.5 ETH, but the transaction also consumes gas (paid in ETH).
💡 Why it matters:
- 🔐 Approvals: Giving permission for a contract to move your token.
Imagine handing a cashier a slip that authorizes spending up to X$ from your account.👉 approve is that: you authorize a contract (e.g., a DEX) to move your s without having to sign every transfer. This enables automated “swap”–style flows without prompting each time.

🔗 Review or revoke allowances: Etherscan Token Approval Checker · Revoke.cash
🔗 Create or update an approval on–chain: Etherscan — WETH (Write Contract)
- 🤝 transferFrom: The movement that uses that permission.
If you already granted permission, the contract calls transferFrom and moves your WETH for you. It’s the practical execution of the permission: the contract takes the token from the owner and puts it where it belongs, all in a single logical operation.🔗 Do it on–chain (transferFrom): Etherscan — WETH (Write Contract)
- 🧩 ERC–20 standardization: Everyone speaks the same language.
Native ETH does not follow ERC–20, which forces developers to write special–case code. WETH is ETH in ERC–20 form: same standard, same functions (approve, transfer, balanceOf, etc.). That simplifies code and speeds up integrations: if your contract understands ERC–20, it can already handle WETH with no extra tricks.🔗 vReference: ERC-20 Standard (EIP-20)
- 🏧 AMMs/DEXs (Automated Market Makers / Decentralized Exchanges): Token vending machines.
These automated systems need ERC–20 tokens to quote prices and execute swaps. With WETH you can put ETH into those pools like any other token: provide liquidity, make swaps, earn fees. WETH makes ETH “compatible” with the machines.
- 🎨 NFT marketplaces and auctions: Uniform payments and rules.
Many NFT markets expect ERC–20 tokens for transfers, deposits, and auctions. If you want to bid or receive payments in “ETH,” converting it to WETH makes it straightforward: same call, same logic, no workarounds.🔗 Guide: OpenSea Help — What is WETH

- 🏦 Vaults/strategies/compound actions: Multiple moves in a single play.
Complex strategies (e.g., you deposit, stake, and reinvest) need to move tokens across several contracts within one operation. WETH enables atomic operations (everything in a single tx): you deposit WETH into a vault and the contract can route it without asking you for multiple signatures.🔗 Explore vaults: Yearn Docs — Vaults
- ☢️ Atomic operations (all–or–nothing): Everything or nothing, without getting stuck halfway.
If a workflow bundles several steps (swap → add liquidity → stake), doing it in a single transaction prevents you from getting stuck mid–process. WETH lets contracts execute those steps internally using transferFrom, etc., and if anything fails, the tx reverts—you don’t get stuck.🔗 Background: ethereum.org — Transactions (atomicity)
- 🧭 UX / Auto–wrap: The app does it for you.
Many dApps detect when you need WETH and automatically call deposit behind the scenes (or show “Convert ETH → WETH” as a step). For the user it feels like magic: you sign and the app handles the rest, because internally it needs the asset to be ERC–20.🔗 Example interface: Uniswap Web App

✩ WAFFT summary: WETH matters because it turns ETH into a token that all DeFi contracts and UIs understand. That enables permissions (approve), automatic transfers (transferFrom), clean integrations with AMMs/marketplaces/vaults, and compound operations in a single tx—in short, it makes ETH as flexible and composable as any ERC–20 token. ✨
💼 Use it for:
- 🧪 Provide liquidity and trade on AMMs/DEXs: WETH pairs with almost everything (e.g., WETH/USDC). If you provide liquidity, you deposit WETH alongside another token and receive LP tokens — they represent your share of the pool and the fees it earns; swaps with WETH are straightforward and don’t require odd adapters.

✺ Short example: you want to add liquidity on Uniswap V3 — deposit WETH + USDC into the corresponding pool.
🖼️ Bid and list on marketplaces/auctions that accept ERC–20: Many markets allow payments in WETH for bids or purchases (convenient because it follows the ERC–20 standard).
✺ Short example: in NFT auctions that accept tokens, paying in WETH enables instant transfers using transferFrom.
🧰 Vaults, yield & on–chain automations: Tools that manage strategies (deposit, reinvest, rebalance) usually require ERC–20. With WETH you can deposit your “tokenized” ETH and let the contract handle the automation.
✺ Short example: a vault receives WETH, allocates positions, and rebalances without you having to sign each step.
📒 Treasury / on–chain accounting: For projects or DAOs, it’s easier to track inflows/outflows when ETH is in ERC–20 form (balanceOf, events). WETH simplifies on-chain reporting and reconciliation.
✺ Short example: a project treasury keeps its reserve in WETH to make ERC–20 payments and move funds programmatically.
🔁 Bridges and cross–contract flows (composability): When multiple actions must be chained within a single transaction (swap → add liquidity → stake), WETH lets contracts pass tokens between themselves without special conversions.
✺ Short example: a contract calls transferFrom to pull WETH, performs a swap, and deposits the result — all in a single transaction.

🛡️ Allowance hygiene & security:
🔍 Approval = permission for a contract (e.g., a DEX or a vault) to move your tokens on your behalf up to a limit you define.
🧼 Review your approvals periodically: Over time you grant permissions to many dApps and then forget them. Open the “Token Approvals” section in the explorer or use a revocation tool to see which contract can spend how much of your WETH and revoke what you no longer use.
🔗 Useful links: Etherscan — Token Approvals / Revoke.cash — Approval Revoker
- 🔒 Avoid unlimited approvals (unlimited): An “unlimited” is like giving a blank check. Convenient, yes (it won’t ask every time), but if that dApp becomes insecure, the risk is greater. It’s better to approve only what you will use; if you already granted an unlimited, revoke it when you’re done and, if needed, approve a specific amount again.
🧠 How to read an approval in the UI: It usually says “Allow this contract to spend up to X WETH.”
🔸 Spender: the contract that will be able to spend (e.g., the DEX router).
🔸 Amount: the spending cap. If you see “unlimited” or an enormous number, that’s the no–limit mode.

- 🖊️ permit (EIP–2612) vs traditional approve:
🔸 Traditional approve: you send an on–chain transaction to grant permission (you pay gas).
🔸 permit: you grant permission with an off–chain signature (no gas for that approval).
🔸WETH9: (canonical) does not have permit; some alternative wrappers (e.g., “WETH10”) do implement it, but don’t assume it: if the token doesn’t support permit, the dApp will ask for a normal approve.
🔗 References: EIP-2612 — Permit / WETH10 — GitHub
- 📨 Permit2 is not part of WETH9: Some dApps use Permit2 (a signature–based permission system) to manage approvals more conveniently. That belongs to the dApp, not a native WETH9 feature. Before signing, read carefully: which token? how much? who (spender) will be able to spend? If something doesn’t add up, cancel.
🔗 Reference: Uniswap Docs — Permit2
- 🧩 Scope of approvals (what they cover): An approval is per token and per contract. If you revoke the approval of WETH → Spender A, it does not affect WETH → Spender B or other tokens. This lets you clean permissions selectively without breaking everything.

- 🧿 Phishing and fake “WETH”: Always verify that the token is the canonical one:
🔸 Exact checksummed address (don’t trust the name alone).
🔸 Decimals = 18 for WETH.
🔸 Your explorer marks the contract as verified and correctly referenced. If the name says “WETH” but the address doesn’t match your network’s official one, it’s not the right token.
🔗 Quick check: Etherscan — WETH token page
- 🧰 Mini–procedure to revoke (step by step):
🔸 Open “Token Approvals” / a revocation tool.
🔸 Connect your wallet in read–only mode.
🔸 Filter by WETH → identify the spender you no longer use.
🔸 Click Revoke → confirm (you’ll pay a bit of gas).
🔸 Done: that contract can no longer move your WETH.
- 🧪 Why this matters with WETH: WETH is used in AMMs/DEXs, vaults, and automations thanks to approve/transferFrom. That power comes with responsibility: you control who can move your WETH and up to how much. Approval hygiene lets you enjoy DeFi composability without leaving doors open.

💡WAFFTip : monthly routine — review approvals → limit by amount → revoke the old stuff.
At WAFFT lab, this is the pro investor’s “hand–washing.” 🧼👐
⚠️ Watch out for…
- 🧭 Not a bridge or a peg:
🔸 Bridge = moving value across chains.
🔸 Peg = fixed parity backed by reserves.
WETH doesn’t do that: it only wraps your ETH on the same network in ERC–20 form and unwraps 1:1 on that same network.
✵ Example: WETH on Arbitrum → ETH on Arbitrum (not L1). For L2 ↔ L1 you need a separate bridge.
🔗 Background: ethereum.org — Bridges / ethereum.org — Layer 2
💤 Not yield-bearing: Holding WETH in your wallet doesn’t earn interest. The yield comes from where you use it (pools, lending, strategies). WETH is the key; the yield is behind the door. 🔑
📝 Final note:
WETH is ETH’s universal adapter in DeFi. Master it, and you’ll move your Ether like a pro—fast, clean, and no drama–free. It’s the bridge between raw ETH and the ERC–20 world. And if you ever need to clarify a concept, search it in WAFFT’s own «Google of money«. 🔎🚀
Mini-glossary
🔸 Smart contract: A program that runs on Ethereum exactly as written; it can hold funds and enforce rules automatically.
🔸 ERC-20: A common set of rules for tokens on Ethereum; defines standard functions such as transfer, approve, balanceOf, and others.
🔸 Gas: The network fee paid in ETH to execute a transaction or call a contract.
🔸 Wei: The smallest unit of ETH. 1 ETH = 1,000,000,000,000,000,000 wei (1e18). Contracts operate internally in wei.
🔸 deposit: WETH function for wrapping: you send ETH and receive WETH 1:1.
🔸 withdraw: WETH function for unwrapping: you burn WETH and receive ETH 1:1 at the address that executes the call.
🔸 Payable: Indicates that a function can receive ETH along with the call.
🔸 Caller: The address that initiates the transaction; when unwrapping, the ETH is sent to this address.
🔸 Mint / Burn: Create or remove tokens within the contract’s accounting.
🔸 Allowance: A spending limit you grant to another address (for example, a dApp) so it can move your tokens on your behalf.
🔸 Approve: Action to set or update that spending limit.
🔸 TransferFrom: Movement of tokens by the authorized third party, always within the allowance.
🔸 Total supply: The total number of tokens that exist for that contract.
👉 Up next: explore wstETH — Wrapped Staked Ether (Non-Rebasing) and learn how Ethereum staking meets ERC–20 perfection: fixed balances, yield through exchange rate, and seamless composability. 🧩⚡