﻿---
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-tw/crypto/account-abstraction/)
- [ERC-4337 Paymaster 風險](/zh-tw/crypto/erc4337-paymaster-risk/)
- [私鑰管理](/zh-tw/crypto/private-key-management/)
- [交易模擬](/zh-tw/crypto/transaction-simulation/)
- [錢包簽名](/zh-tw/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-tw/crypto/session-key-wallet/index.mdx
