🏙️
unWallet Enterprise v2
  • はじめに
  • 技術仕様
    • HTTP エンドポイント
      • 基本情報
      • インターフェース
        • ブロックチェーン関連
        • 認証クライアント関連
    • クライアントサイド SDK
      • 基本情報
      • インターフェース
  • ユースケース
    • unWallet 認証を組み込む
    • NFT を発行する
    • unWallet ユーザーに対して電子署名をリクエストする
    • unWallet ユーザーに対してトランザクション送信をリクエストする
Powered by GitBook
On this page
  • 手順
  • 1. unWallet 認証を終わらせる
  • 2. 電子署名チケットトークンを発行する
  • 3. 電子署名をリクエストする
  • 4. 電子署名の正当性を検証する
  1. ユースケース

unWallet ユーザーに対して電子署名をリクエストする

PreviousNFT を発行するNextunWallet ユーザーに対してトランザクション送信をリクエストする

Last updated 1 month ago

手順

1. unWallet 認証を終わらせる

unWallet ユーザーに対して電子署名をリクエストするためには、該当ユーザーがリクエスト元となるアプリケーションとの接続を認可している必要があります。この認可は の中で行われますので、まずはこちらを終わらせてください。

2. 電子署名チケットトークンを発行する

を利用して、電子署名チケットトークンを発行してください。なお、この処理はアプリケーションのバックエンドで行なってください。

3. 電子署名をリクエストする

クライアントサイド SDK の sign を実行し、unWallet ユーザーに対して電子署名をリクエストしてください。なお、sign の引数である ticketToken には、前段で発行した電子署名チケットトークンを指定してください。それ以外の引数には、前段で電子署名チケットトークンを発行した際に指定した値と同じ値を指定してください。

sign の詳細な仕様については を参照してください。

リクエストが不正とみなされてしまう場合は、前段で登録したアプリケーションの allowedCallerOrigins が正しく設定されているかを確認してください。

4. 電子署名の正当性を検証する

unWallet はコントラクトウォレットであるため、 に準拠した方法で電子署名の正当性を検証してください。

import { ethers } from "ethers";

(async () => {
  const contract = new ethers.Contract(
    "<USER_ADDRESS>",
    [
      {
        inputs: [
          {
            internalType: "bytes32",
            name: "hash",
            type: "bytes32",
          },
          {
            internalType: "bytes",
            name: "signature",
            type: "bytes",
          },
        ],
        name: "isValidSignature",
        outputs: [
          {
            internalType: "bytes4",
            name: "",
            type: "bytes4",
          },
        ],
        stateMutability: "view",
        type: "function",
      },
    ],
    new ethers.JsonRpcProvider("<YOUR_RPC_URL>")
  );

  try {
    await contract.isValidSignature("<DIGEST>", "<SIGNATURE>");
  } catch (e) {
    console.log("invalid");
    return;
  }

  console.log("valid");
})();
unWallet 認証
ERC-1271
こちら
POST /issueSignatureTicket