本文へ移動

ウォレットセッションと署名レーン

アンロックで、利用回数の上限と有効期限を持つ署名セッションを作成します。レーンは、操作の種類ごとの鍵管理とポリシーの経路を識別します。

ウォレットセッションと署名レーン ​

再利用可能なウォレットセッションがなくても署名できます。 その場合、ユーザーは選択したレーンの認証方法で、対象の操作を個別に承認します。 unlockは、利用回数の上限と有効期限を持つウォレットセッションを作成します。 後続の要求は、その範囲内で承認を再利用できます。 各操作には引き続き、サーバー側の受け入れ判定と、検証済みの署名素材が必要です。

ロックすると、ウォレットの識別情報を維持したまま、再利用可能なセッションへのアクセスを解除します。

アンロックで署名セッションを作成 ​

登録時に返されたwalletIdを渡して、unlockを呼び出します。 成功結果には、NEARとEVM系の別々の分岐があります。nearAccountIdは、NEARの分岐からだけ読み取ってください。

ts
import type { UnlockFlowEvent } from '@seams/wallet';
import type { SeamsContextType } from '@seams/wallet/react';

export async function unlockWallet(unlock: SeamsContextType['unlock'], walletId: string) {
  const result = await unlock(walletId, {
    onEvent: (event: UnlockFlowEvent) => console.log(event.phase, event.status, event.message),
  });
  if (!result.success) {
    throw new Error(result.error);
  }

  // Read `nearAccountId` only from the NEAR branch.
  if (result.kind === 'near_wallet_unlocked') {
    console.log('NEAR account ready', result.nearAccountId);
  } else {
    console.log('EVM-family wallet ready', result.walletId);
  }
  return result;
}

返されたウォレットセッションは、有効期限または利用回数の上限に達するまで、後続の署名呼び出しを支えます。 次の署名操作では、その操作だけを対象に、同じ方法で新たな認証を求めることができます。 再利用可能な許可を新たに作成する場合は、もう一度アンロックしてください。 セッションの期間と利用上限は、想定する一連の操作に合わせます。

署名メソッドを呼ぶ前に ​

署名レーンは、ある種類の操作に使う鍵管理とポリシーの経路を識別します。 セッションの準備が完了したら、次を確認してください。

  1. 準備完了のWalletSessionを必要条件にします。
  2. 検証済みのウォレット識別情報から、そのセッションの参照を作成します。
  3. 検証済みの設定から、NEARアカウントまたはEVM系の対象チェーンを解決します。
  4. 要求するレーンの準備が完了していることを確認します。
  5. 操作の全体で、同じセッション参照を渡します。

処理全体の実装は、署名を参照してください。

対処可能な状態を扱う ​

  • 許可の期限切れや利用回数の上限に達した場合は、対象の署名操作に限って、同じ方法で追加認証できます。 この追加認証で、別のレーンやエクスポートの権限は付与されません。
  • 機能の準備が処理中の場合は、準備完了の状態になるまで待つ必要があります。
  • ポリシーやノンスレーンが競合した場合は、再実行の前に状態を照合してください。
  • ユーザーの操作確認をキャンセルすると、ウォレットの識別情報を変えずに、今回の操作を終了します。

進行状況イベントは、処理の状態を説明します。処理の分岐判断には、結果を表す判別可能なユニオン型を使ってください。

ウォレットセッションと署名レーンも参照してください。