本文へスキップ
Boring Security
プロフィール
署名と承認

なぜWETHが必要なのか?

おそらく我々の生徒にとってより混乱しやすいトピックの1つは「なぜWrapped ETH(wETH)が必要なのか?」「ETHとどう違うのか?」ということでしょう。我々が生徒に対してまず説明したいことは、「トークンが実際にどのように機能するか」ということです。トークンの規格、マーケットプレイス、ウォレットソフトウェアは、トークンをやりとりするときに水面下で実際に起こっていることの理解を難しくしている。Revoke.Cashのようなアプリケーションでさえ人々を混乱させ、彼らは常に「なぜ一度にすべての承認を取り消すことができないのか」といった質問をしている。この記事では、こうした疑問のいくつかに答えていきます!

WETH_04.gif

画像はweth.ioから引用したもので、ラッピング・アンラッピングのプロセスを示している。

ラップ・イーサ(wETH)とは何か?

Wrapped EthereumはETHのERC-20互換バージョンで、5つの基本機能を持つアップグレード不可のコントラクトを使用します: Approve, Transfer, TransferFrom, Deposit & Withdraw. イーサリアムネットワーク上のすべてのトークンは、一連の標準に準拠するかしないかのスマートコントラクトに過ぎません。注意すべき点は、ウォレット内のトークンを操作する場合、そのトークンのコントラクトで許可されていることしかできないということです。そのため、トークンを使ったり、移動させたり、トークンに許可を与えたりするときは、必ず契約に基づいて行わなければなりません。このような理由から、私たちはウォレット内のトークンのコントラクトにブックマークを使用することを強く推奨しています。これは、誰かがあなたのウォレット内の特定のトークンコントラクトとやり取りしようとしている場合に警告を発するためです!詳細は我々の記事を参照してください: 承認のすべて(All About Approvals)

Function NameDescription
承認(Approve)契約アドレスや他のEOAアドレスが、あたかも承認されたアドレスが所有しているかのように、ウォレット内のwethを利用できるようにします。これは一般的にマーケットプレイスで使用され、ユーザーが入札などを行えるようにします。
送金(Transfer)自分のウォレットから他のウォレットにトークンを移動する場合、転送を実行することが推奨されます。
送金元(TransferFrom)TransferFrom は上記の Approval メソッドを利用できます。ウォレットでトークンを使用するためのApprovalをウォレットが持っている場合、TransferFromメソッドが呼び出され、Transferアクションが促進されます。トークンを転送するときにもこのメソッドを呼び出すことができ、一括転送を行わない場合でも、マーケットプレイスがこのメソッドを要求してくることがよくあります。
入金(Deposit)Deposit 関数は Wrapped Ethereum 契約に ETH を入金し、入金者に同量の wETH をmintする。
出金(Withdraw)Withdraw 関数は、Wrapped Ethereum コントラクトから wETH を引き出し、コントラクトにあった ETH を返します。

ETHをwETHにラップすることで、ETHにERC-20互換性が付与されます。
これによりETHはイーサリアムネットワーク上の他のERC-20トークンと相互運用可能になり、シームレスに交換できるようになります。例えばUniswap、GMX、Aaveのような一般的なDeFiプロトコルで同じ方法で扱えるようになります。
「ラッピング」という言葉は少し語弊があります。実際には、この契約を通じてETHをwETH(またはその逆)に交換し、

  • DeFiプラットフォーム間でよりシームレスに使用できるトークンを持つこと
  • OpenseaのようなNFTマーケットプレイスで入札/オファーを行うこと

を指します。
 

WETH_03.gif

スマートコントラクトにおけるトークンとWETHのシームレスな交換を示す図。現在はクローズされたweth.ioから引用した画像。

残念ながら、ETHはERC-20標準が作成される前に存在していたため、ETH自体でこれを行うことはできません。
その点で、私たちはETHを「イーサリアムネットワークのプロトトークン」と呼んでいます。ETHをERC-20と互換性を持たせる(そうすればwETHは不要になる)という提案もありましたが、現在あるウォレットのUI/UXの課題や、ウォレットを奪う詐欺の拡大が懸念されるため、まだ実現していなくてよかった!
これについてはまた後日...

ERC-20とEtherscanについて

上でリンクしたように、トークンと対話するときはいつでも、それを制御するスマート・コントラクトと対話するだけです。etherscanを開いて、お気に入りのERC-20トークンで利用可能なメソッドをいくつか見てください。何か面白いことに気づきませんでしたか?

1) Apecoin: これにはwETH契約にはないメソッドがいくつかある。
多くのERC-20トークンは "Increase Allowance "と呼ばれるメソッドを持っています。
これは機能的にはERC-20コントラクトのApproveと同じで、2021年に私たちのファウンダーを欺いた悪名高いBadgerDAOハッキングを含め、DeFiの多くのハッキングや詐欺の先頭に立ってきました。これについては「承認のすべて」の記事で詳しく説明しています。

increaseallowance2.png

2)USDC:この契約はいわゆる「プロキシ」契約であることにお気づきでしょう。
プロキシ・コントラクトについては、102クラスと「プロキシ・コントラクトのすべて」の記事で詳しく解説しているので、そちらを参照してください。
プロキシ・コントラクトは "アップグレード "可能なコントラクトであり、プライマリコントラクトの外部でそのコントラクトのロジックを実行することができます。

3) Coingeckoをチェックし、あなたが知っている、または知らないコイン名をクリックしてみてください。
ERC-20トークンであれば、Etherscanのリンクがある契約書が上部のInfoの見出しの下に表示されます!
ぜひ色々探検してみてください!

なぜETHではだめなのか?

私が生徒に投げかけたい課題の1つは、"EtherscanでETHを操作するために「ETHコントラクト」に直接行きたいとしたら、どこに行きますか?"というものです。
このコントラクトはもちろん存在せず、ETHができることはすべてイーサリアム自体のコアコードに組み込まれています。ETHはできることが限られています。
ETHを送金したり、ガソリンの支払いに使ったり、ある方法(例えばMintを考えてみよう)のコストとして追加したりすることができます。それ以上複雑なことはできません。
 

WETH_02.gif

この図はETHのERC-20非互換性を示す。今はクローズしているweth.ioにより。

もしWrapped Ethereum(wETH)がなかったら、NFTのマーケットプレイスはどのように機能するのでしょうか。
ひとつは、同じETHの量で複数のプラットフォームで入札を行うことができないことです。
Blurでオファーをしたことがある人なら、私が言っていることをよくご存知でしょう!
そのプラットフォームではETHを入金する必要があり、事実上そのエコシステムに「ロック」されます。
wETHの利点は、一度に複数のNFTマーケットプレイスでオファーを出すことができ、当該マーケットプレイスでオファーが受理された場合にのみウォレットからお金が引き落とされることです。

大きな鍵は、ETHでApprovalを行うことができないため、これらのオファーはどれも同じ方法で行うことができないということです。
これはSuperrareとFoundationが入札/オークションのメカニズムに使用しているシステムです。
プラットフォームにとってこの方法の利点は、あなたのwETHのプラットフォームへのアクセス権を剥奪することで、オファーを直前に無効にすることができず、偽の入札の可能性を排除できることです。
しかし、一般的なユーザーにとっては、オフチェーンで署名を行うだけで入札を行うことができるため、毎回ETHを送るよりもコスト削減の観点からはるかに望ましいです。
ロックアップされた資金もなく、承認が行われればガス代も不要になります!
 

ETHとwETHのそれぞれの安全保障上の利点は?

wETHを持つことは、web3とイーサリアム・ブロックチェーン一般にとって、大きなユーザビリティとセキュリティのハードルを意味します。
Boring Securityの102コースの冒頭で、私たちはいつも次のような質問をします: 
「wethとは何か、なぜそれが必要なのか、誰か教えてください。」
すると、「マーケットプレイスが使っているから」「使った方が安いから」「わからないから教えて」など、さまざまな答えが返ってくる。
私たちが説明する前に生徒が正しい答えを導き出すことはほとんどありません。
このような生徒たちは、比較的経験豊富なNFTユーザーやバイヤーであることに留意すべき点です。これはエコシステムへの大きな挑戦です。

とはいえ、承認や署名、複数のウォレットを効果的に利用する方法を知っていれば、wETHやNFT、apecoinなどの他のトークンを保護するのに役立ちます。
また、以下の場合を除き、ETHがウォレットから取り出されることはありません:
a) 高度なウォレット設定を弄り、非推奨の署名タイプに署名した場合
b) シードフレーズを紛失した場合
c) ガス代の一部としてETHを支払った場合(「Mint/RedeemやSecurity Updateのようなよくある詐欺の場合)

では、WETHを正しく使うにはどうすればいいのでしょうか?そうですね:

1) 使用するマーケットプレイスへのwETHの承認は少額にとどめる**。**使用できるwETHの量はリンク先の記事で編集できます。無限に使用するのは悪い習慣です!

2) **資金の大半をETHで管理する。**Approvalsでウォレットから引き出されることはなく、シードフレーズが安全である限りETHは安全だからだ!

3) Revoke.CashとApprovals.xyzはwETHだけでなく、**すべてのトークンのために定期的にチェックするのに適しています。**どちらのサービスも承認された金額を更新してくれますが、etherscan のトークン承認チェッカーは更新しません。(例えば、あるプラットフォームに対して5wEthを承認し、3wEthを使用した場合、2wEthが承認されたと表示されます。

**4) 署名の仕組みを理解する。**メッセージに署名する内容や場所に気をつけないと、知らないうちにwethに署名してしまう可能性があります。これについては安全な署名101の記事を参照してください。

image.png

wETHについてもっと知りたい場合

Cointelegraphのこちらの記事は、入手方法だけでなく、wETHそのものについても説明しています。

OpenSeaの記事では、wETHの使い方やマーケットプレイスでの入手方法について、詳細なスクリーンショットを交えて説明しています。

Web3の最新のセキュリティ情報・詐欺手口についてもっと知りたい、もしくは質問がある方は、私たちのディスコード https://discord.gg/boringsecurity に参加してください。

ニュース