# New WETH Spec
Repo: https://github.com/ERC4626-Alliance/WETHPlus
## WETH+
Is [ERC-20](https://ercs.ethereum.org/ERCS/erc-20), [ERC-2612](https://eips.ethereum.org/EIPS/eip-2612), [ERC-4626](https://eips.ethereum.org/EIPS/eip-4626), [ERC-7535: Native ETH ERC-4626](https://ethereum-magicians.org/t/eip-7535-eth-native-asset-tokenized-vault/16068), [ERC-7550: Transient ERC-20 Approvals](https://github.com/ethereum/ERCs/pull/81), and backward compatible with weth9
It will also have a convenience method `withdrawAll(address receiver, address owner)` and a payable receive function which wraps `deposit()`.
## WETH Upgrade Router
The WETH upgrade router allows for conversion from native ETH or WETH9 to WETH+ along with the following patterns:
* max approve of permit2 atomically upon upgrade
* support of existing permit2 WETH9 approvals
* question, should the router allowance transfer and/or signedTransfer
## Out of Scope and Rationale
- implementation in huff or assembly: gas savings on this level are not worth the tradeoffs of code legibility and security
- flash loanable: maybe, but probably unnecessary as higher layer protocols can add flash loans
- EIP-3009: Stagnant and functionally replaced by Permit2
- Built in max approval of permit2: Antipattern to auto max approve a specific contract, transient approve makes this relatively unnecessary. The WETH Upgrade Router will also allow for an atomic depositAndApprove of Permit2
- built-in migration from weth9: antipattern due to differences across multiple chains. Will be added at router layer as well
- There is no fallback function and calls to the fallback function will revert to protect against [phantom method vulnerabilities](https://medium.com/zengo/without-permit-multichains-exploit-explained-8417e8c1639b).
## Future Work
- Permit2 Enhancement with message signing for transient erc-20 approval and 4626 flows (deposit, withdraw, mint, redeem, requestDeposit, requestRedeem)
- Message signing for ERC-4626