はじめに

初めまして。 CryptoGamesというブロックチェーンゲーム企業でエンジニアをしている cardene(かるでね) です! スマートコントラクトを書いたり、フロントエンド・バックエンド・インフラと幅広く触れています。

代表的なゲームはクリプトスペルズというブロックチェーンゲームです。

今回は、ウォレットがウォレット外に存在する資金にアクセスして、アプリケーションにそのことを知らせる仕組みを提案しているERC7682についてまとめていきます!

以下にまとめられているものを翻訳・要約・補足しながらまとめていきます。

他にも様々なEIPについてまとめています。

概要

EIP5792に準拠した機能により、ウォレットアドレスの残高を参照できます。 この時、ウォレット内にある資金しか使用できません。 この規格では、追加資金にアクセスできることをアプリケーションに知らせる機能を提案し、クレジット機能や担保を用いた融資機能などが実現できるようになります。 これにより、オンチェーンで確認できる資金以外をアプリケーションに教えることができます。

EIP5792については以下の記事を参考にしてください。

動機

多くのアプリケーションは、ユーザーが何らかのアクションを完了する前に、ユーザーの残高をチェックします。たとえば、ユーザーが dex で一定量のトークンを交換したい場合、ユーザーのアドレスにその量のトークンがないことが dex によって確認されると、通常、そのユーザーの操作がブロックされます。ただし、より高度なウォレットには、ユーザーが他のソースから資金にアクセスできる機能があります。ウォレットには、これらのより高度なウォレットを使用するユーザーが残高チェックによってブロックされないように、追加の資金にアクセスできることをアプリに伝える方法が必要です。

多くのアプリケーションでは、ユーザーが特定のアクションを完了する前にユーザーの残高をチェックします。 例えば、ユーザーがDEX(分散型取引所)でトークンを交換したい場合、ユーザーのアドレスの残高を確認し、もしトークンがない場合処理が失敗します。

しかし、ウォレットによっては他のソースから資金にアクセスする機能を持っています。 これらのウォレットは、ユーザーが他の資金源から追加の資金にアクセスできることをアプリケーションに伝える方法が必要です。 そうしないと、他の資金源にアクセスできるウォレットが現在のウォレット残高チェックにより処理ブロックされてしまいます。

仕様

この規格では、EIP5792に新しい機能の追加を提案しています。

wallet_getCapabilitiesレスポンスの仕様

EIP5792に準拠するために、ウォレットは補助資金にアクセスできることを示す必要があります。 そのためには、ウォレットがwallet_getCapabilities呼び出しに対して、補助資金に関する情報を含むレスポンスを返す必要があります。 このレスポンスには、各チェーンで補助資金にアクセスできるかどうかを示すsupportedフィールドが含まれます。

js
type AuxiliaryFundsCapability = {
  supported: boolean;
}

trueまたはfalseのbool値で、ウォレットがそのチェーン上で追加資金にアクセスできるかどうかを示します。

wallet_getCapabilitiesの応答例

json
{
  "0x2105": {
    "auxiliaryFunds": {
      "supported": true
    },
  },
  "0x14A34": {
    "auxiliaryFunds": {
      "supported": true
    }
  }
}

この例では、ウォレットが2つのチェーン (0x2105と0x14A34) 上で補助資金にアクセスできることを示しています。 両方のチェーンに対してsupportedフィールドがtrueと設定されています。

アプリの実装

EIP5792に準拠するために、アプリケーションは接続されたウォレットがwallet_getCapabilitiesレスポンスで補助資金にアクセスできることを確認した場合、現在保有している残高のみのチェックで処理をブロックしないようにする必要があります。

セキュリティ

高度な残高取得

アプリが補助残高を取得する方法を定義しています。 bool値でアプリが単純な残高チェックに基づいてユーザーのアクションをブロックしないようにすることが十分と判断しました。 この方法によりアプリの実装にかかる負担が最小限で済み、将来的に機能拡張が可能です。

補助資金の資産ごとの管理

ウォレットが様々な補助資金をサポートしている場合、資産ごとに補助資金をサポートする方法の検討が必要になります。 ウォレットが多くの資産をサポートする場合、管理するデータが多くなり管理が大変になります。 そのため、単一のbool値で管理するようにしてデータ量を削減しています。

互換性

これまでと変わらない方法でウォレットの資金を確認できます。

引用

Lukas Rosario (@lukasrosario), Wilson Cusack (@wilsoncusack), "ERC-7682: Auxiliary Funds Capability [DRAFT]," Ethereum Improvement Proposals, no. 7682, April 2024. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-7682.

最後に

今回は「ウォレットがウォレット外に存在する資金にアクセスして、アプリケーションにそのことを知らせる仕組みを提案しているERC7682」についてまとめてきました! いかがだったでしょうか?

質問などがある方は以下のTwitterのDMなどからお気軽に質問してください!

他の媒体でも情報発信しているのでぜひ他も見ていってください!