アーキテクチャ
インテント
インテントとは、アカウントやセッション、ウォレットとやり取りするための特定のアクションです。インテントはセッションキーで署名された JSON オブジェクトであり、メッセージ署名などの操作を表します。
「インテント」とは、アカウントやセッション、ウォレットとやり取りするためのアクションです。このドキュメントでは、その仕組みを内部的に解説します。複雑な部分は心配いりません—SDK がすべて処理します。
インテントは JSON オブジェクトです。実行したいアクションを表し、セッションキーで署名されます。たとえばメッセージに署名したい場合は、インテントを WaaS API に送信します。
インテントとは?
大まかに言えば、インテントはユーザーが実行したいアクションを指定し、セッションキーで署名された JSON オブジェクトです。たとえばメッセージに署名する場合、クライアントは次のようなインテントを WaaS API に送信します:
インテントの構造を分解してみましょう。
- 署名: 通常、1つの署名がセッションを表します。セッションはローカルで作成される鍵ペアで、公開鍵は
sessionId
の一部、秘密鍵はデバイス上に保持されます。ウォレットへのアクセスを提供するセッションキーは、できるだけ安全に(理想的にはデバイス内のセキュアエンクレーブに)保管してください。セッションを利用する前に、WaaS API で登録が必要です。 - 署名は、インテントの正規表現(アルファベット順のキー、空白なし、
signatures
フィールドを除く JSON)に対する EIP-191 署名です。 - 名前とデータ: 名前とデータはインテントごとに異なります。名前はインテントの種類を、データはそれに関連する情報を示します。
- タイムスタンプ: API は Unix タイムスタンプを確認し、インテントの有効期間を判断したり、過去のインテントの再利用を防ぎます。