工作原理
会话密钥
会话密钥是保存在浏览器中的签名密钥,可在不弹出钱包的情况下下单与挂单,且永远不能提现。
会话密钥是在浏览器本地生成、由用户钱包在链上登记的一对密钥。登记后,它代表钱包签署交易与委托。私钥不离开用户设备。
登记#
钱包签署一条登记消息,将会话密钥及其到期时间写入 SessionKeyManager 合约。此后开仓、平仓与挂单均由会话密钥签名、relayer 提交。
限制#
- 最长有效 30 天,应用默认 30 天。
- 每个钱包同时最多 5 把有效密钥。
- 允许的操作:开仓、平仓、下单、撤单。
- 不能提现。 提现、质押相关操作与密钥登记始终需要钱包签名。
意图有效期#
意图是提交给 relayer 的已签名指令。会话密钥签署的市价交易,签名后一小时内未执行即失效。限价单与止盈止损在撤单前持续有效,最长 30 天或至密钥到期,以先到者为准。
示例#
Alice 在第 0 天登记一把会话密钥,并在随后一个月内使用。
| 事件 | 规则 | 结果 |
|---|---|---|
| 第 0 天登记密钥 | 最长有效 30 天 | 第 30 天到期 |
| 12:00 签署市价单 | 市价意图一小时后失效 | 须在 13:00 前执行,否则作废 |
| 第 20 天挂限价单 | 委托有效期 = min(30 天, 密钥到期) | 有效至第 30 天,而非第 50 天 |
| 已有 5 把有效密钥时登记第 6 把 | 最多 5 把 | 拒绝 |
密钥到期 = 第 0 天 + 30 天 = 第 30 天
市价意图 = 12:00 + 1 小时 = 13:00
限价单到期 = min(第 20 天 + 30, 第 30 天) = 第 30 天
有效密钥 = 5 → 第 6 把被拒绝
← 公式过长时可横向滑动
挂单的有效期不会超过签署它的会话密钥。
撤销#
用户可随时在设置中撤销任意密钥。撤销是由钱包发起的链上调用,立即生效:该密钥签署的所有意图与挂单全部失效。
注意
在应用内撤单,是 relayer 承诺不再提交该委托;签名本身在截止时间前仍然有效。如需链上层面的保证,应撤销会话密钥。