安装
首先,在Cargo.toml 中添加 session-keys crate:
用法
- 导入
session-keys:
session-keys crate 中导入所需组件。
- 派生
Sessiontrait:
Increment 结构体上派生 Session trait 后,就启用了 session 功能。
- 定义 session token 账户:
SessionToken 账户,并指定了 session 的 signer 和 authority。
session_token.authority: 创建 session token 的账户counter.authority.key(): 创建 counter 的账户 authority 条件用于检查 session token 是否由与 counter 相同的用户创建。
- 使用
session_auth_or宏:
increment 函数上。
它会检查是否存在有效的 session token;如果没有,则验证 signer 是否为 counter 的 authority。
完整示例
下面是一个使用 session keys 的完整 counter 程序示例。 每个用户都有自己的 counter 账户,因此我们可以展示如何通过 session keys 完成身份验证。测试
下面是一个使用 session keys 测试 counter 程序的示例:本地测试
如果你要使用solana-test-validator 在本地测试,需要在启动时同时带上 session keys program 和对应账户。
- 确保你的 Solana CLI 指向 DEVNET:
- 将 Session Keys program 导出到本地文件:
- 使用 session keys program 和账户启动
solana-test-validator:
-r- 将账本重置到 genesis-ud- Solana JSON RPC 的 URL 或 moniker(-ud = DEVNET)--clone- 从集群复制一个账户--bpf-program- 将一个 SBF program 添加到 genesis 配置中

