- Config, docs, scripts, and backup manifests - Submodule refs unchanged (m = modified content in submodules) Made-with: Cursor
2.3 KiB
How to Zero WETH9 Total Supply on Chain 138
WETH9 has no admin or mint/burn — total supply is the sum of all balances. The only way to reduce it is for each holder to call withdraw(amount), which burns that WETH9 and returns ETH to them.
1. You control all holders (e.g. only deployer)
- Burn from the deployer wallet:
./scripts/burn-weth9-deployer.sh - If you have other wallets that hold WETH9 and you have their private keys, burn from each. Use the same pattern: call
WETH9.withdraw(balance)from that address. The scriptscripts/burn-weth9-from-keys.shcan burn from multiple keys (see below).
2. Multiple accounts you control (multiple keys)
Use:
./scripts/burn-weth9-from-keys.sh
Requires a file (e.g. smom-dbis-138/.env.burn-keys) with one PRIVATE_KEY=0x... per line (or BURN_KEY_1, BURN_KEY_2, …). The script will:
- Derive address from each key
- Get WETH9 balance for that address
- If balance > 0, send
withdraw(balance)from that address
After running it for every key you control, total supply will be zero only if those addresses were the only holders.
3. Finding who holds WETH9
To see all current holders and balances:
./scripts/weth9-list-holders.sh
This uses the Blockscout API (/api/v2/tokens/{WETH9}/holders) and prints address + balance for each holder. Use this to:
- Confirm only deployer (or your keys) hold WETH9, then run the burn scripts above, or
- See third-party holders; you cannot burn from their addresses without their keys.
4. Third-party holders (you don’t have their keys)
You cannot zero supply unilaterally. Each holder must unwrap their own WETH9:
- They call
WETH9.withdraw(balance)from their wallet (e.g. MetaMask, or your frontend “Unwrap WETH9 → ETH”). - Or you send them the exact
cast sendcommand for their balance (fromweth9-list-holders.shoutput).
There is no contract or admin function that can burn or zero WETH9 from other addresses.
Summary
| Situation | Action |
|---|---|
| Only deployer holds WETH9 | ./scripts/burn-weth9-deployer.sh |
| You have private keys for all holders | ./scripts/burn-weth9-from-keys.sh (after configuring keys) |
| Unknown / third-party holders | Use ./scripts/weth9-list-holders.sh to list them; each must call withdraw(balance) themselves |