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
每月 349 次下载
11KB
167 行
GPL会话
在您的Solana Anchor程序中管理会话。
安装
cargo add session-keys --features no-entrypoint
使用方法
- 导入依赖项
use session_keys::{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<()> {
.....
}
示例
请参阅KamikazeJoe以查看使用session-keys的游戏的示例。
依赖项
~18–27MB
~472K SLoC