「インテント」とは、アカウントやセッション、ウォレットとやり取りするためのアクションです。このドキュメントでは、その仕組みを内部的に解説します。複雑な部分は心配いりません—SDK がすべて処理します。

インテントは JSON オブジェクトです。実行したいアクションを表し、セッションキーで署名されます。たとえばメッセージに署名したい場合は、インテントを WaaS API に送信します。

インテントとは?

大まかに言えば、インテントはユーザーが実行したいアクションを指定し、セッションキーで署名された JSON オブジェクトです。たとえばメッセージに署名する場合、クライアントは次のようなインテントを WaaS API に送信します:

{

    "version": "0.0.0",

    "issuedAt": 1712775116,

    "expiresAt": 1712775416,

    "name": "signMessage",

    "data": {

      "wallet": "0x7B7D7BA79542584f9AeF539F6696c070a4e1Ced6",

      "network": "1",

      "message": "0x48656c6c6f2c20686176652061206e69636520646179"

    },

    "signatures": [

      {

        "sessionId": "0x01047de46debeeb83e1270b80ae65996ea64ad2c033e330cfffe9b725bf078423140124dce0cfe0cab9a61b385ca74fe77cd5e8a7147bfd87052f334cfbadc45c79a",

        "signature": "0x28ec6ddcdbc0987a99dde19792ff0c9be69ad2be873fb9351353171b74d2df3380f0ffcae2b8cb37a0659e374859420500b4399a2aab0209ee7919aaea575ac7"

      }

    ]

}

インテントの構造を分解してみましょう。

  • 署名: 通常、1つの署名がセッションを表します。セッションはローカルで作成される鍵ペアで、公開鍵は sessionId の一部、秘密鍵はデバイス上に保持されます。ウォレットへのアクセスを提供するセッションキーは、できるだけ安全に(理想的にはデバイス内のセキュアエンクレーブに)保管してください。セッションを利用する前に、WaaS API で登録が必要です。
  • 署名は、インテントの正規表現(アルファベット順のキー、空白なし、signatures フィールドを除く JSON)に対する EIP-191 署名です。
  • 名前とデータ: 名前とデータはインテントごとに異なります。名前はインテントの種類を、データはそれに関連する情報を示します。
  • タイムスタンプ: API は Unix タイムスタンプを確認し、インテントの有効期間を判断したり、過去のインテントの再利用を防ぎます。