3 个版本 (稳定版)
2.0.0 | 2023年8月3日 |
---|---|
1.0.0 | 2023年7月18日 |
0.2.0 | 2023年4月3日 |
#6 in #gum
在 2 个crate中使用(通过 gpl-core)
11KB
167 行
GPL Session
管理您的 Solana Anchor 程序中的会话。
安装
cargo add gpl-session --features no-entrypoint
如果您使用 anchor 0.26.0
cargo add [email protected] --features no-entrypoint
用法
- 导入依赖
use gpl_session::{SessionError, SessionToken, session_auth_or, Session};
- 在您的指令结构体上派生
Session
特性
#[derive(Accounts, Session)]
pub struct Instruction<'info> {
.....
pub user: Account<'info, User>,
#[session(
// The ephemeral keypair signing the transaction
signer = signer,
// The authority of the user account which must have created the session
authority = user.authority.key()
)]
// Session Tokens are passed as optional accounts
pub session_token: Option<Account<'info, SessionToken>>,
#[account(mut)]
pub signer: Signer<'info>,
.....
}
- 将
session_auth_or
宏添加到您的指令处理器,其中包含当会话不存在时谁应该验证签名的回退逻辑以及适当的 ErrorCode。如果您在 anchor_lang 中使用了*!
宏,您已经知道这是如何工作的。
#[session_auth_or(
ctx.accounts.user.authority.key() == ctx.accounts.authority.key(),
ErrorCode
)]
pub fn ix_handler(ctx: Context<Instruction>,) -> Result<()> {
.....
}
依赖项
~17–27MB
~436K SLoC