メインコンテンツへスキップ

Smart Sessionsとは?

Smart Sessionは、dAppでシームレスかつWeb2のようなユーザー体験を実現するための鍵です。ユーザーに毎回すべての取引を承認してもらう代わりに、Smart Sessionを使うことで、dAppに一時的かつ安全で厳格に制限された権限を付与できます。 これはマスターキーを渡すのではなく、明確なルールと有効期限付きの特別なキーカードをアプリに渡すイメージです。 この仕組みは、以下のような強力な機能を実現するのに非常に役立ちます。
  • シームレスなUX: ステーキングやスワップ、アイテムの出品など、よくある操作で毎回ウォレットのポップアップを表示する必要がなくなります。
  • 自動化: ユーザーがオフラインのときでも、自動戦略やサブスクリプションサービスなどで取引を代理実行できます。
  • きめ細かなセキュリティ: dAppができること・できないことを正確に定義し、リスクを最小限に抑えてユーザーの信頼を高めます。

仕組み:主要なコンセプト

Smart Sessionを設定する際、開発者体験をシンプルにするためにSDKが扱う重要な概念がいくつかあります。

ネイティブトークン(ETH、MATICなど)でガス代を支払う場合

セッション署名トランザクションでネイティブトークンの値を含めるには、nativeTokenSpending.valueLimitで予算を設定してください。 ウォレットで手数料トークンの選択肢(ネイティブトークン手数料を含む)を表示したい場合は、手数料オプションの権限を有効にしてください(例:明示的セッション作成時にincludeFeeOptionPermissionsを使用)。これにより、手数料支払いに必要な追加権限がリクエストされます。

ERC-20トークン(USDCなど)でガス代を支払う場合

手数料トークンの選択肢はfee-optionsフローを通じて提供されます。有効化すると、SDKはERC-20手数料支払いに必要な権限をリクエストし、選択された手数料トークンを自動的に処理できます。

セキュリティのベストプラクティス:最小権限の原則

すべての関数権限に具体的なrulesを追加することを強く推奨します。
これにより、最小権限の原則が徹底されます。つまり、セッションには必要な権限だけを正確に与え、それ以上は許可しません。 空のfunctions配列を指定すればコントラクトへの無制限アクセスも可能ですが、これはセッションに広範な権限を与えるため注意が必要です。できる限り明示的に設定する方が安全です。 例えば、approve関数を特定のspenderアドレスに限定する方が、どのアドレスにも許可するよりも安全です。明確なルールを定義することで、より安全なSmart Sessionを構築し、ユーザーに安心感を提供できます。

詳細情報

スマートセッションの仕組みについて詳しくは、こちらをご覧ください。