运作方式
会话密钥
为什么每笔交易都不会弹出钱包窗口,以及你究竟授权了什么。
为什么点一次就够了
开启交易时,你的钱包签署一条消息,其中写明在你浏览器中生成的一对密钥及其到期时间:第一次是 RegisterSessionKeyV2(它还可以写明是谁推荐了你,并永久绑定),之后每把密钥都用 RegisterSessionKey。中继提交这条消息后,SessionKeyManager 合约把这个密钥登记到你的账户。此后,会话密钥为你签署开仓和平仓,由中继提交,合约把它们视为你本人的操作。
密钥在一个独立的浏览器 worker 中生成和使用,并用浏览器保管的不可导出密钥加密存储,因此原始密钥从不出现在页面存储中。这个 worker 只签署本部署上你账户的交易消息,不签任何其他内容。
会话密钥能做什么
- 在你的账户上开仓,资金来自你的可用余额或排队余额(
OpenPosition)。 - 平掉你账户上的仓位(
Close)。 - 取消你仍在中继排队的订单(
CancelIntent)。
会话密钥不能做什么
- 提现:每笔提现都需要你钱包本身的签名。
- 质押、解除质押或领取:这些同样需要钱包签名。
- 注册或撤销密钥。
会话密钥泄露时,最坏的情况是:别人可以在你的账户上开仓和平仓,可能在交易中亏掉你的余额,但无法把资金转出交易所。在页面中运行的代码(例如恶意浏览器扩展)在运行期间可能使用已解锁的密钥,因此请撤销不再需要的密钥。
构建者费
你签署的注册消息中还带有一个构建者地址和你愿意支付的最高构建者费,应用会把它们留空和置零。通过其他前端注册的密钥可能指定该前端;只要所有者批准它为构建者,用这个密钥平掉的仓位就向它支付其费率与你签署上限中较低的一个,最高为盈亏的 0.5%:盈利时从你的收益中扣,亏损时从 LP 的所得中扣。见构建者代码。
有效期
密钥注册后的有效期为 30 天。它签署的每笔订单都带有自己的截止时间,即 1 小时 之后,且必须落在密钥的有效期之内。每个账户最多可有 8 个有效或待生效的密钥。
撤销
应用中的「会话」对话框列出你账户下的所有密钥,标出本设备上的那一个,并可撤销单个密钥或全部密钥,包括你已不再持有的设备上的密钥。撤销有两种方式:
- 用钱包向 SessionKeyManager 发起交易,需要少量 HYPE 支付 gas;
- 签署一条消息,由中继免费提交,一次最多撤销 32 个密钥,或全部撤销。这条免 gas 的路径是有意增加的,让你即使钱包里没有 HYPE,也能切断丢失设备的权限。
密钥被撤销后,它签署的所有排队订单都会被取消,之后上链的由它签名的订单也会被拒绝。交易所会请求钱包签署的每一条消息都列在官方签名页面。