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

GPL-3.0-or-later

11KB
167

GPL Session

管理您的 Solana Anchor 程序中的会话。

安装

cargo add gpl-session --features no-entrypoint

如果您使用 anchor 0.26.0

cargo add [email protected] --features no-entrypoint

用法

  1. 导入依赖
use gpl_session::{SessionError, SessionToken, session_auth_or, Session};
  1. 在您的指令结构体上派生 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>,
    .....
}
  1. 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