﻿---
title: "会话密钥钱包"
description: "了解智能账户会话密钥如何委派有限权限、必须强制执行哪些约束，以及如何验证、撤销并应对密钥泄露。"
image: "https://wiki.fcontext.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://wiki.fcontext.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 会话密钥钱包

> 仅供教育参考，不构成投资建议。泄露或权限过大的会话密钥可能造成不可逆的数字资产损失。

<a id="answer"></a>

## 直接答案

钱包会话密钥通常是辅助签名密钥，或与该密钥绑定的委派凭证；智能账户只会在预设规则内接受它。规则可限制时间、目标合约、函数选择器、代币金额、交易次数或其他条件。其目的是让应用能够重复执行操作，而无需账户所有者每次都用主签名者确认。

“会话密钥”是一种设计模式，并非以太坊上的统一标准。ERC-4337 提供可编程账户验证和有时间边界的 `UserOperation` 验证；ERC-7579 等模块化账户系统则可以承载验证器、执行器和钩子。密钥能做什么，最终取决于钱包已部署的账户与模块代码。仅设置到期时间并不能保证会话安全；删除浏览器里的密钥副本，也不一定会撤销已登记上链或仍包含在未到期委派中的权限。

<a id="mechanism"></a>

## 运作方式

典型流程有 5 个阶段：

1. 所有者在设备上创建全新的密钥对，或授权用于识别会话签名者的凭证。除非设计明确把应用服务器作为受信托管方，否则绝不应把会话私钥发送给服务器。
2. 所有者使用主钱包授权一项策略。有些系统在链上安装密钥与策略；另一些系统使用签名委派，在操作到达时由账户验证。
3. 应用构建操作并用会话密钥签名。在 ERC-4337 流程中，账户的 `validateUserOp` 逻辑检查签名和策略；打包器模拟只是准入检查，并非执行成功或安全性的证明。
4. 账户必须在执行前强制实施所有限制。有效权限可概括为 `A_effective = K ∩ P ∩ S`：持有密钥（`K`）、已配置策略（`P`）以及当前账户或链状态（`S`）都必须允许该操作。
5. 会话可通过到期、nonce 或配额耗尽、显式撤销、移除模块或其他实现特定的失效路径结束。应在正确的链上确认最终账户状态。

授权会话前，应核对：

- 链 ID、智能账户地址、账户实现，以及验证器或模块地址；
- 会话公钥或凭证标识符，以及私钥材料将存储在哪里；
- 每个允许的目标、函数选择器、代币、收款人规则、原生资产数额上限，以及单次或累计支出上限；
- `validAfter`、`validUntil`、nonce 规则、使用次数，以及时间采用区块时间戳还是其他来源；
- 除非确有需要，批量交易、嵌套调用、`delegatecall`、代币授权、安装模块、升级账户和 ERC-1271 消息签名是否均被阻止；
- 谁能撤销会话、所有者是否保留独立恢复路径，以及撤销是否需要 Gas 或正常工作的打包器或 paymaster。

策略必须检查实际将被执行的操作。只检查外层批量交易的目标，可能让内层调用不受限制；只检查收款人而忽略函数和数额，也会产生同类问题。只有执行代码覆盖每一条执行路径时，限制才真正有效。

<a id="example"></a>

## 示例

某游戏钱包创建一个持续 24 小时的会话。它只允许调用经验证的游戏合约，阻止 `delegatecall` 和代币授权，把每次调用的原生资产数额上限设为 `0.02 ETH`，累计支出上限设为 `20 USDC`。游戏可以无需所有者反复确认就提交获准操作，但转移无关 NFT 的请求必须验证失败。

使用前，所有者记录账户、链、模块、会话公钥、到期时间、限额和撤销方法。所有者先测试一笔低价值操作，核对解码后的调用与账户事件，再单独测试撤销。这能确认配置的路径有效，但不能证明模块不存在漏洞，也不能证明受感染设备无法花完剩余额度。

<a id="risks"></a>

## 风险与控制

- **策略过宽：** 通配目标、不受限的选择器、无限代币授权、批量交易或 `delegatecall`，都可能让“有限”密钥获得接近所有者的权限。应使用明确白名单并禁止管理操作。
- **密钥被盗：** 浏览器存储、日志、备份、扩展程序、恶意软件和共用设备都可能暴露会话密钥。在支持时优先使用硬件保护或隔离存储，并设置较短期限和较低累计上限。
- **执行约束有缺陷：** 账户、验证器、执行器或钩子可能错误解码调用，或未覆盖另一条执行路径。应采用已验证部署、经过审查的代码、审计和绕过场景测试。
- **重放与上下文混淆：** nonce 处理薄弱，或未绑定到预期链、账户、模块或策略，都可能使授权在其他上下文中被重用。核对确切的签名域和链上重放保护。
- **对到期机制的误判：** `validUntil` 可能只约束一笔 ERC-4337 操作，并不会自动移除已登记密钥、代币额度或另一项委派。到期后应检查每项权限的实际状态。
- **撤销失败：** 删除本地数据只会移除秘密的一份副本。应通过账户文档规定的路径撤销并核对链上结果，同时保留足够 Gas 和由所有者控制的备用路径。
- **可升级或恶意模块：** 模块可能拥有强大的执行权限，升级也可能改变策略行为。应检查所有者、升级延迟、暂停权限、实现地址和模块移除流程。
- **Gas 与赞助滥用：** 会话可能消耗账户资金支付 Gas，或在 paymaster 拒绝时无法使用。尽可能限制费用行为，并保留独立提交路径。

如果会话密钥可能已经泄露，应停止使用受影响应用，保留会话标识符和相关交易哈希，并从干净、由所有者控制的设备撤销或禁用密钥。随后检查所有受支持链上的待处理与近期操作、代币授权、已安装模块、账户升级和余额。只有当账户或模块设计使撤销不可靠时才转移剩余资产；仓促进入未经验证的“恢复”网站可能扩大损失。

<a id="misconceptions"></a>

## 常见误区

- **“会话密钥不能移动资产。”** 它可以执行策略实际允许的任何操作，其中可能包括转账、兑换、授权或签名。
- **“ERC-4337 定义了会话密钥权限。”** ERC-4337 提供账户验证和执行框架；会话策略仍由钱包或模块具体决定。
- **“较短到期时间可以限制最大损失。”** 损失还取决于单次限额、累计限额、调用频率、Gas、授权、价格以及每条可达执行路径。
- **“退出登录就是撤销密钥。”** 退出登录可能删除本地副本，但不能证明链上登记或签名委派已失效。
- **“模拟成功说明操作安全。”** 模拟可以表明当前验证会接受操作；它不能证明用户意图、未来收录、执行成功、最终确定性，也不能证明模块没有漏洞。

<a id="related"></a>

## 相关主题

- [账户抽象](/zh-cn/crypto/account-abstraction/)
- [ERC-4337 Paymaster 风险](/zh-cn/crypto/erc4337-paymaster-risk/)
- [私钥管理](/zh-cn/crypto/private-key-management/)
- [交易模拟](/zh-cn/crypto/transaction-simulation/)
- [钱包签名](/zh-cn/crypto/wallet-signature/)

<a id="sources"></a>

## 来源

- [Session Keys & Delegation](https://docs.erc4337.io/smart-accounts/session-keys-and-delegation.html) - ERC-4337 Documentation（查阅日期：2026-08-21）
- [ERC-4337: Account Abstraction Using Alt Mempool](https://eips.ethereum.org/EIPS/eip-4337) - Ethereum Improvement Proposals（查阅日期：2026-08-21）
- [ERC-7579: Minimal Modular Smart Accounts](https://eips.ethereum.org/EIPS/eip-7579) - Ethereum Improvement Proposals（查阅日期：2026-08-21）
- [Safe Modules](https://docs.safe.global/advanced/smart-account-modules) - Safe Docs（查阅日期：2026-08-21）

Source: https://wiki.fcontext.com/zh-cn/crypto/session-key-wallet/index.mdx
