Smart Sessionsとは?
Smart Sessionは、dAppでシームレスかつWeb2のようなユーザー体験を実現するための鍵です。ユーザーに毎回すべての取引を承認してもらう代わりに、Smart Sessionを使うことで、dAppに一時的かつ安全で厳格に制限された権限を付与できます。 これはマスターキーを渡すのではなく、明確なルールと有効期限付きの特別なキーカードをアプリに渡すイメージです。 この仕組みは、以下のような強力な機能を実現するのに非常に役立ちます。- シームレスなUX: ステーキングやスワップ、アイテムの出品など、よくある操作で毎回ウォレットのポップアップを表示する必要がなくなります。
- 自動化: ユーザーがオフラインのときでも、自動戦略やサブスクリプションサービスなどで取引を代理実行できます。
- きめ細かなセキュリティ: dAppができること・できないことを正確に定義し、リスクを最小限に抑えてユーザーの信頼を高めます。
仕組み:主要なコンセプト
Smart Sessionを設定する際、開発者体験をシンプルにするためにSDKが扱う重要な概念がいくつかあります。ネイティブトークン(ETH、MATICなど)でガス代を支払う場合
ユーザーのネイティブトークンで取引手数料を支払えるようにするには、予算を設定する必要があります。 この予算は、セッション設定のnativeTokenSpending.valueLimit
プロパティで定義します。これを実現するため、SDKはSequence Trusted Forwarder
コントラクト(0xABAAd93EeE2a569cF0632f39B10A9f5D734777ca
)への権限を自動的に追加します。この特別なコントラクトがユーザーの代理で安全にガス代を支払い、その支出は設定したvalueLimit
で厳格に制限されます。
ERC-20トークン(USDCなど)でガス代を支払う場合
SDKを使えば、ERC-20トークンでガス代を支払う設定も非常に簡単です。特別な権限設定は不要です。 取引に手数料が必要で、ユーザーがそのトークンでの支払いを選択した場合、SDKが自動的に処理します。セキュリティのベストプラクティス:最小権限の原則
すべての関数権限に具体的な
rules
を追加することを強く推奨します。functions
配列を指定すればコントラクトへの無制限アクセスも可能ですが、これはセッションに広範な権限を与えるため注意が必要です。できる限り明示的に設定する方が安全です。
例えば、approve
関数を特定のspender
アドレスに限定する方が、どのアドレスにも許可するよりも安全です。明確なルールを定義することで、より安全なSmart Sessionを構築し、ユーザーに安心感を提供できます。