签名钥匙与安全密钥

一个 Vela 钱包就是一个 Safe,而 Safe 有所有者。你的可以有最多七位,阈值是 :任意一把签名钥匙都能独自授权一笔交易。写作 1-of-n

什么可以当签名钥匙

三类,而且可以随意混搭:

方式它是什么典型例子
本机你正在用的这台设备内建的认证器这台手机或笔记本上的 Face ID / Touch ID,由 iCloud 钥匙串或 Google 密码管理器同步
身边的设备另一台你扫码连上的设备用手机替桌面签名,走 WebAuthn 的 hybrid 通道
安全密钥一个可插拔的 USB 或 NFC 认证器YubiKey 以及其它 FIDO2 密钥

三者都是 P-256 曲线上的 WebAuthn 凭证。在 Safe 眼里它们没有区别:每一个都是一位 所有者,链上的 WebAuthn 验证器用同样的方式检查它们的签名。

安全密钥可以是你的第一把钥匙,而不只是备份。如果你压根不想让钱包依赖 Apple 或者 Google 账户,那就是实现它的那个选项——在创建时注册一把 YubiKey,然后用它签名。

为什么要在创建时就选定

这一点常常让人意外,所以这里讲机制,而不是道歉。

你的钱包地址是由它的所有者集合推导出来的。Vela 用 CREATE2 从 Safe 的初始化 数据算出它——那份数据里包含每一把签名钥匙的公钥——而且是在链上部署任何东西之前 就算好的。正因如此,你才可以往一个还不存在的地址收款。

后果是算术,不是政策:不同的钥匙集合就是不同的地址。事后再加第八把钥匙,不会 扩展你现有的钱包;它会算出一个新的钱包,在一个新的地址上,而你的钱一分都不在那里。

所以「我以后能加钥匙吗?」这个问题有两个诚实的答案:

  • 在你往里放钱之前:可以——那个地址还没有跟任何东西绑定,用你想要的钥匙重新 创建一次钱包就行。
  • 在你往里放钱之后:那个地址就是你钱所在的地方。在一个已部署的 Safe 上更换 所有者是 Safe 的一项操作,Vela 目前没有把它开放出来。请在创建时就把钥匙规划好。

它究竟保护了你什么

设备丢失。 有不止一把签名钥匙时,丢一部手机只是麻烦:另一把钥匙照样能签。 只有一把钥匙、而且系统同步还关着的话,丢手机就等于丢钱包——这也是为什么 「你的通行密钥会自动同步」描述的是一个由你控制的设置,而不是我们能替你做出的保证。

一个你不再信任的平台账户。 如果你的通行密钥住在 iCloud 钥匙串或者 Google 密码 管理器里,控制那个账户的人就有可能用到它。而安全密钥握在你自己手里,不往任何地方 同步。

以及它没有保护你的部分,因为 1-of-n 是双刃的:多加一把钥匙,加的是多一条 进来的路,而不是第二道锁。任何拿到你其中任意一把钥匙的人,都能独自签名。钥匙越多, 抗丢失越强,被偷的面也越大;这就是那个取舍,而做决定的人是你。

恢复,和添加

这是两件不同的事,文档里也把它们分开:

  • 恢复与登录 —— 用你已经有的钥匙,在新设备上回到一个已存在的 钱包。
  • 本页 —— 事先决定,究竟有哪些钥匙存在。