メインコンテンツへスキップ
このガイドでは、シンプルな counter プログラムを例に、Session Keys を Solana Anchor プログラムへ統合する方法を説明します。

インストール

まず、Cargo.tomlsession-keys crate を追加します。
または cargo コマンドを使います。

使い方

  1. session-keys をインポートする:
この行では session-keys crate から必要なコンポーネントをインポートしています。
  1. Session trait を derive する:
Increment 構造体に Session trait を derive することで、session 機能が有効になります。
  1. session token アカウントを定義する:
ここでは任意の SessionToken アカウントを定義し、session の signer と authority を指定しています。
  • session_token.authority: session token を作成したアカウント
  • counter.authority.key(): counter を作成したアカウント authority 条件は、session token が counter と同じユーザーによって作成されたかどうかを確認します。
  1. session_auth_or マクロを使う:
このマクロは increment 関数に適用されています。 有効な session token があるかを確認し、存在しない場合は signer が counter の authority であることを検証します。

完全な例

以下は session keys を使った counter プログラムの完全な例です。 各ユーザーが自分専用の counter アカウントを持つため、session keys による認証の流れを確認できます。

テスト

以下は session keys を使って counter プログラムをテストする例です。
このテストスイートでは、counter の初期化、session なしでの increment、session token の作成、そして session token を使った increment を示しています。 最後のテストは特に重要で、counter の所有者だけが increment できることを保証します。

ローカルでテストする

solana-test-validator を使ってローカルでテストするには、session keys program とアカウントを含めて起動する必要があります。
  1. Solana CLI が DEVNET を指していることを確認します:
  1. Session Keys program をローカルファイルに dump します:
  1. session keys program とアカウントを指定して solana-test-validator を起動します:
-r - ledger を genesis にリセット -ud - Solana JSON RPC の URL または moniker(-ud = DEVNET--clone - cluster からアカウントをコピー --bpf-program - genesis 設定に SBF program を追加