5个稳定版本

2.0.5 2024年6月21日
2.0.4 2024年5月7日
2.0.3 2023年10月24日
2.0.2 2023年10月9日
2.0.1 2023年9月11日

#4 in #gum

Download history 153/week @ 2024-05-05 2/week @ 2024-05-12 10/week @ 2024-05-19 40/week @ 2024-05-26 10/week @ 2024-06-02 14/week @ 2024-06-09 148/week @ 2024-06-16 18/week @ 2024-06-23 8/week @ 2024-06-30

每月 349 次下载

GPL-3.0-or-later

11KB
167

GPL会话

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

安装

cargo add session-keys --features no-entrypoint

使用方法

  1. 导入依赖项
use session_keys::{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<()> {
.....
}

示例

请参阅KamikazeJoe以查看使用session-keys的游戏的示例。

依赖项

~18–27MB
~472K SLoC