Here’s Why OpenSea Uses WETH in Auctions And Not ETH
A simple example to feel the power of wrapped tokens.
OpenSea’s support center actually doesn’t have this answered so we are taking the liberty to discuss it.
First, Let’s Truly Understand Why We Need WETH
Let’s not repeat what others have been echoing online what WETH is but lets try to fill in the blanks on why do we really need it.
As many have “copied and pasted,” you need the ERC-20 compatibility of WETH to interact with Ethereum smart contracts since ETH is not ERC-20 compatible. But what does that mean?
Remember that a smart contract is like a wallet and it can store tokens. You can actually send tokens to a contract address and your token will stay inside it. But you can only send ERC-20 tokens over since smart contracts only accept tokens with this standard, not the native ETH. But why do we need to send tokens to a smart contract? When the contract needs to do some processing with your tokens. We’re not talking about simply transferring tokens from one wallet to another. Contracts are here to do some programming stuff. One example is processing bids for an auction on OpenSea.
How OpenSea Auctions Use WETH
OpenSea enables sellers to create two types of NFT auctions – English or Dutch. English auction is the ever-popular type where highest bidder wins, while the Dutch version lets bidders bid at a declining price. Once you bid at the reduced price you are willing to pay, the auction ends.
Programmatically, each type of auction sounds quite complicated especially in English auction when only one bidder wins and the system has to refund all the tokens for the rest of the bidders.
So, you might ask if this is possible if we bid using ETH tokens. Yes, but it’s painfully possible. Because you need to transfer your ETH from your wallet to OpenSea’s auction wallet and if you lose the auction, they have to refund your unspent tokens. Now imagine the thousands of others bidding along side you.
Here comes WETH to the rescue. By accepting WETH tokens, OpenSea can implement the programming logic inside a smart contract.
Instead of sending ETH to the auction smart contract and telling the contract program to only spend your money if your bid wins or is accepted, you have to send WETH over and let it lock in your WETH. If you win your bid, the ERC-20 WETH is spent. Otherwise, you get back your WETH.
This is also the reason why OpenSea does not enable the use of WETH in a Dutch auction. There’s no need for refunds since only one bidder wins. For this, ETH will suffice.
Hope this makes sense now.
Disclaimer: We are not affiliated with OpenSea.