Web3 の特徴の 1 つは、ユーザーがプライバシーとそのプラットフォームとの対話方法を完全に制御できることです。 MetaMask で承認と権限を管理する方法を学びます。

イーサリアムなどのブロックチェーンとのやり取りの経験がウォレット間での単純なトランザクションの送信に限定されている場合でも、トランザクションは承認、承認、または署名されているはずです。これは単に、ブロックチェーンへの送信を確認していることを意味します。

これと同じプロセスが Web3 での dapps との対話にも同様に当てはまります。同意、承認、許可する必要があることがたくさんあります。しかし、メタマスクの承認には実際には何が含まれているのでしょうか?

この質問を分解するには、まず暗号化の核となる側面をいくつか取り上げる必要があります。

キーと暗号化: 承認とは何ですか?

すべての暗号化アクティビティは公開キー暗号化に基づいています。基本的に、各ウォレットには、ウォレットの作成時に生成された対応する公開「キー」と秘密「キー」が存在します。入るためにボルトのロックを解除し、ラッチを回す必要があり、それぞれに異なる鍵が必要なドアを想像してください。 1 つのキーを持っているだけではどこにも行けません。ペアが必要です。

単純化しすぎですが、この仮想の扉に挑戦し、同様のロジックを暗号通貨ウォレットに適用できます。取引には秘密鍵と公開鍵の両方が必要です。秘密鍵は取引を開始したことを証明するためのものであり、公開鍵は受信者が送信元を確認するためのものです。仕組みは次のとおりです。

  1. 連絡先にトークンを送信することにしました。

  2. 受信者のウォレット アドレスがわかっているので、その公開鍵を保持していることになります。前者は単に後者のハッシュ (暗号化) バージョンです。公開キーはトランザクションの暗号化に使用されます。

  3. 秘密鍵の所有者である受信者がトランザクションを受け取ります。受信者の鍵は共通なので、受信者だけが持つ対応する秘密鍵だけが、公開鍵によって送信されたトランザクションを復号化できます。

ここまでは順調です。ブロックチェーン トランザクションを支えるために秘密鍵と公開鍵のペアがどのように相互作用するかを確立しました。ただし、この知識を承認/署名に適用するには、キーの役割を反転します。代わりに、送信者が秘密キーを使用してメッセージを暗号化します。他の人は送信者の公開キー (ウォレット アドレス) を簡単に見つけることができるため、キーを組み合わせてメッセージを復号化し、送信者の身元を確認できます。一致するキーのペアのみがメッセージの内容を明らかにするため、誰も発信元に異議を唱えることができません。

すべてのトランザクションに一種の署名を刻印することで不変性が保証され、秘密鍵の所有者であるあなた以外の誰もあなたを不正に模倣することができなくなります。

Dappの権限

遭遇する 2 つの主要な承認タイプのうちの 1 つ目は、ウォレットを初めて dapp (DeFi、Etherscan などのサービス、または NFT マーケットプレイス) に接続することです。

これには、ウォレット アドレスを取得する権限を dapp に付与することが含まれます。これは、プラットフォームと対話するための前提条件です。これは、それが「許可」または「許可」と呼ばれる理由も説明します。あなたがやっていることを正確に説明する名詞。場合によっては、dapps によって自動的に許可を与えるよう求められることがあります。 「接続」などのラベルの付いたボタンをクリックする必要があるものもあります。

許可を与えると、この例では次のようになります。

トークンの承認

あなたが経験豊富な暗号通貨ネイティブであろうと、まったくの初心者であろうと、スマートコントラクト(Dapps(DeFi、ブロックチェーンゲーム、NFT購入を含む)を実行する種類)を操作するには、トークンへのアクセスを承認する必要があります。

このプロセスは、当然のことながら、トークン承認としてさまざまに呼ばれます。ここでやっていることは次のとおりです。

  1. スマート コントラクトがトークン残高にアクセスできるようにします。これを「スマート コントラクトの段階」と考えてください。 MetaMask は、この時点でどれだけのアクセスを譲渡するかを明確に示します。一部の dapp は有限量のトークンを指定する場合がありますが、他の dapp は無制限のアクセスを要求します。

  2. 問題のトランザクションを完了することを確認します。つまり、スマート コントラクトがユーザーに代わってネットワークにトランザクションを送信できるようにする「ブロックチェーン ステージ」です。

取引量で最大の分散型取引所 (DEX) である Uniswap でトークン スワップを実行するとします。初めてトークン ペアでスワップを開始するときは、取引している ERC-20 トークン ペアのスマート コントラクトを承認するように求められます (ただし、ETH 自体については承認が必要ありません)。これはそのペアを初めて取引するときにのみ発生しますが、次のステップ、つまり上記のステップ 2 は毎回必要となり、Uniswap のプロトコルがリクエストに応じて取引を実行することを意味します。

このプロセスは以下のようになります。

  • まず、プラットフォームからトークンを承認するよう求められます。プロンプトをクリックすると、MetaMask が動作します。

  • MetaMask はトークンのコントラクト アドレスを表示し、資金にアクセスして移動する機能を要求していることを確認します。正しいコントラクトを許可していることを確認するために、トークン アドレスを dapp の Web サイトにリストされているものと相互参照する価値があります。トークン アドレスは通常、ヘルプ センター、ナレッジ ベース、またはドキュメントにあります。この権限をどこまで適用するかを指定するオプションもあります。これを行うには、「権限の編集」をクリックします。

  • このオプションを使用すると、許可されているアクセス量を正確に確認できます。この場合、Uniswap は事実上無制限の量の stETH (1.1659) へのアクセスを望んでいますが、必要に応じて「カスタム支出制限」フィールドを使用してこの権限に制限を設けることができます。

この機能により、MetaMask はトークンの承認を管理します。Dapp が必要以上にアクセスすることをやみくもに許可したり、新しいプラットフォームを試すために不要なリスクを負ったりする必要はありません。

取引リクエスト自体は、キー ペアが登場する場所です。秘密キーを使用してトランザクションに署名します。点線にペンで署名することを考えてください。ただし、公開キー暗号化を使用すると、個人情報詐欺のリスクは無視できます。この例では、同意とは、Uniswap スマート コントラクトがユーザーに代わってトークンをウォレットとの間で移動することを承認したことを意味します。スワップを開始しようとするたびに、スマート コントラクトはあなたの「メッセージ」、つまりスワップを実行するための指示をチェックし、秘密キーにアクセスできる唯一の人物としてあなたが発信者であることを確認します。

承認と権限を管理するにはどうすればよいですか?

Web3 の特徴の 1 つは、ユーザーがプライバシーとそのプラットフォームとの対話方法を完全に制御できることです。 MetaMask のノンカストディアル設計はこれを反映しています。ただし、その原則は他の機能にも拡張されます。その中には、dapp およびスマート コントラクトの承認を表示および管理する機能があります。

MetaMask で接続されているサイトを表示する

MetaMask には、ウォレットが接続されているサイトを確認するためのネイティブ機能が含まれています。これは「接続されたサイト」と呼ばれます (おそらくお分かりかと思いますが、私たちは過度に複雑にすることは好みません)。それらを削除する方法も同様に簡単です。

トークンの承認の表示

Etherscan は最近、トークンの承認を表示したり取り消したりできるトークン承認チェッカーを実装しました。

MetaMask に接続し、Etherscan にウォレットを表示する許可を与えると、トークン承認のリストが表示されます。その後、その継続的な関連性を自由に確認し、それに応じて取り消すことができます。便利なことに、関係する特定のアセット、誰を承認したか(名前で参照されるどの dapp など)、アクセスを承認したトークンの量も表示できます。

また、approved.zone、Revoke、TokenAllowance Checker (TAC) など、いくつかの代替手段もあります。

まっすぐにならないで

MetaMask のような非保管ウォレットの管理に伴う個人代理店は、諸刃の剣です。秘密の回復フレーズを安全に保つのはあなたの個人的な責任であり、詐欺師に対する警戒が必要であるのと同様に、dapp のアクセス許可とスマート コントラクトの承認を管理できるのはあなただけです。これを、新しい ERC-20 トークンの作成がいかに簡単であるか (この記事の執筆時点で約 485,000 のトークンが存在します) と組み合わせると、リスクが非常に明白になります。ほとんどは善意で作成されていますが、悪意のある者によって作成される可能性もあります。

トークンの承認は、詐欺にとって比較的一般的な攻撃ベクトルです。その規模については rekt.news を、手法についてはこの Finematics の記事をチェックしてください。前述したように、dapps はアクセスするトークンの数を指定する必要があります。たとえば、MetaMask は、確認する前にこの情報が承認画面に表示されるようにして、サインアップしている内容をより明確に把握できるようにします。

dapps からのアクセスリクエストは、特定の限られた量から、スマートコントラクトがウォレットから必要なだけ引き出すことができる完全に制限されていないものまで、さまざまです。基本的に、無制限のアクセス自体は問題や危険信号ではありません。大手 DEX などの多くの信頼できるプラットフォームは、dapp を定期的に使用する場合に頻繁に再承認する手間を省くためにこれを行っています。この問題は、明示的に盗む意図を持ってトークンへの無制限のアクセスを要求する dapp に伴い発生します。

スマート コントラクトによる任意の量のトークンへのアクセスを承認する前に、リスクを評価するためにメンタル チェックリストに従う必要があります。オンラインで「DYOR」という頭字語が言及されているのをよく目にします。アクセスを許可する前に自分で調査することは、間違いなく良い習慣です。例えば:

  • このプロジェクトはどのくらい有名ですか?

  • どれくらい前からあるのですか?

  • Discord、Telegram、Twitter などのアクティブなコミュニティ チャンネルはありますか?

  • dapp の開発者/所有者は透明性があり、公的に連絡可能ですか。 TwitterかDiscordで?

  • 最近セキュリティ侵害がありましたか?ここで探す価値があります。

  • サードパーティのスマートコントラクト監査を受けていますか?

  • ブロックエクスプローラーでコントラクトアドレスを確認してください。 Etherscan などの一部のエクスプローラーは、不正なアドレス (コントラクトまたはウォレット) にフラグを立てるユーザー主導のレポート メカニズムを備えています。フラグが立てられていない場合でも、短期間での多額の現金の流入または流出など、不審なアクティビティがないか確認してください。

要約する:

トークンの承認は、同意を示す単なるトークン ジェスチャではなく、Web3 との対話において日常的で不可欠な側面です。いくつかの重要なポイント:

  • 公開キー暗号化は、dapps と対話するときに権限を認証するために使用されます。

  • Dapp 権限には、Dapp にウォレット残高の表示を許可することが含まれます。

  • トークンの承認には、dapp のスマート コントラクトがウォレット内の特定のトークンにアクセスして移動することを許可することが含まれます。

  • スマート コントラクトを承認する前に、常に dapp の認証情報を調査し、それが信頼できるものであることを確認してください。

フルーツ