阅读约 6 分钟
启用、停用、删除:每种身份状态分别意味着什么
停用或删除 CardanoWall 身份,只会改变你的账户如何使用它,而绝不会改变已经发布到 Cardano 上的记录的密码学有效性。

CardanoWall 为你账户里的每个身份赋予一个生命周期状态,用来控制该身份可以如何使用。**「启用」表示完全可用。「停用」表示该身份仍然列在账户里、仍能解密,但在你的账户中无法再用于新的签名、发布和发送。「删除」**根本不是一种状态——它是一个动作,会把该身份与你的账户解除关联,并把它在加密保险库中的条目移除;重新导入已保存的身份种子即可恢复访问。
这些账户层面的动作没有一个会改写区块链。你已经发布的证明会永远保持有效、可验证,无论发布它的身份处于哪种状态。
身份为什么要有生命周期?
因为密码学和账户是两个不同的层,而其中只有一个是永久的。
CardanoWall 身份建立在 Label 309 标准之上,在这个标准里,身份就是一件确切的东西:一个 32 字节的身份种子,以及由它派生出来的密钥。这个绑定是不可变的——一个种子就是一个身份,贯穿该身份的整个生命周期。不存在「在同一身份下轮换密钥」这回事。(如果这个概念对你还很陌生,可以先读 你的身份就是一个种子。)
但一个托管产品仍然要回答密码学无法回答的日常账户问题:
- 这个身份是否还能用于新的记录?
- 它是否还要为旧记录保持可见?
- 它是否要继续解密收到的封存记录?
- 它是否还要保持关联在这个账户上?
- 在依赖一个旧身份之前,是否应该提醒用户?
生命周期状态在不触碰种子的前提下回答了这些产品层面的问题。它们是叠加在一个永不移动的密码学事实之上的账户记账。
启用状态的身份能做什么?
启用就是正常使用。一个启用的身份可以:
- 签署新记录;
- 发布证明;
- 发送封存记录;
- 解密发给它的封存记录;
- 出现在身份切换器中;
- 同步收件箱状态;
- 在编辑器中被选用。
大多数身份在大部分时间里都处于启用状态。另外两种状态,是你针对某个特定身份所做的有意选择。
停用一个身份会做什么?
停用的含义是:在这个账户中,不要再用这个身份创作新内容。
被停用的身份仍然留在账户里,并保留它的读取权限。它仍然可以解密封存记录——包括在你停用它之后才送达的记录。它做不到的,是在你重新启用它之前,从该账户进行签名、发布或发送。这一点由服务端强制执行,而不只是把按钮置灰:发布路径在做任何事情之前,都会先检查该身份的状态。
在以下情形下,停用是正确的工具:
- 团队正在切换到一个替换身份;
- 某个密钥可能已经旧了,但尚未确认遭到泄露;
- 某个身份应当暂时转为只读;
- 某个工作流被暂停;
- 一个共享身份应当停止从某个特定账户发布。
停用完全可逆。重新启用会把同一个开关拨回去,恢复完全可用。
为什么被停用的身份仍然能解密?
因为停用是你的账户知道、而发送方不知道的事情。
这个状态保存在 CardanoWall 的记录里,从不上链,也从不进入 Label 309 的链上传输格式。一个已经持有你接收地址的发送方,仍然可以向它加密一条封存记录,而只要这条记录在其他方面格式良好,Cardano 就会接受它。链上没有任何信号会告诉发送方停下来。
所以,只要你的账户仍然持有种子,它就仍然能打开送达的内容。阻止解密只会惩罚接收方,并可能让真正重要的入站证据丢失,却完全无法阻止发送方。因此停用把界限划在真正有用的地方:它阻止新的创作,而保留读取权限不变。
删除一个身份会做什么?
删除会把该身份从这个账户中移除——仅此而已。
当你删除一个身份时,两件事会一起发生。账户与身份之间的关联被移除,同时该身份的种子条目从你账户的加密保险库中移除,而保险库会重新加密给其余身份。关联会先被删去,因此即便保险库的重写需要重试,该身份也会立即从列表中消失、发布门禁也会立即关闭;一个背后没有关联的保险库条目是惰性的。
在此之后,这个账户就再也无法解锁或使用该身份——除非用户重新导入已保存的身份种子。
删除有意不去触碰的内容:
- 它不会触碰任何其他账户与同一身份的关联。每个持有该身份的账户都保留自己独立的副本,所以你与同事共享的身份在他们的账户里照常可用。
- 它不会从区块链上删除任何东西。
- 它不会删除该身份已经发布的记录。
删除是这个账户对该身份保管权的终点。不存在「在所有地方销毁这个身份」的按钮,也不可能有这样的按钮——种子的每一个持有者都对它保有完全的掌控权,而 Cardano 上已签名的证明是永久的。
删除可以撤销吗?
可以——前提是你保存了种子。
因为身份种子就是身份,重新导入相同的种子会重建出完全相同的一对公私钥。账户随后就能再次关联到那个身份。在这一步中,CardanoWall 要求你证明自己确实持有种子(通过用种子派生的密钥签署一次性挑战),而不仅仅是知道公钥——公钥对任何人都是可见的。一旦这个证明通过校验,关联就会被恢复。
如果你没有保存种子,删除就可能让封存内容从那个账户永久无法读取。这正是为什么删除警告应当直白:只有在种子已备份到你掌控之处、或者你确实能接受从这个账户失去未来访问权时,才执行删除。(为什么身份种子依然重要 对此有更深入的讲解。)
生命周期状态会影响你已经发布的证明吗?
不会。这正是关键所在。
一份已发布的证明仅凭公开的链上数据就能验证。如果一条记录由某个身份签署,那么这个签名就是关于这些字节的一个数学事实——没有任何 CardanoWall 账户状态能让它消失。验证方直接从交易元数据中解析出签名者的公钥,并对照公开材料进行核验;过程中不会访问任何 CardanoWall 服务器,因此也读不到任何账户状态。
这对存在性证明(Proof of Existence)至关重要。它的承诺是:一条已发布的记录能够经受住服务状态、账户状态、乃至供应商本身的变动——你不必信任 CardanoWall 的服务器、域名或它是否持续存在,就能验证它。你的界面或许会显示某个身份在你的账户中已被停用或删除,但无论如何,验证方对待链上记录的方式都完全一致。(一份证明仍然有其局限值得理解——参见 证明不能证明什么。)
如果种子遭到泄露怎么办?
创建一个新身份。不要只依赖停用。
停用是服务层的控制手段,而不是密码学意义上的吊销。如果有人拿到了种子,他们仍然可以在你的账户之外、乃至完全在 CardanoWall 之外使用那个身份——种子在任何符合标准的工具中都能用,整个过程无需任何服务介入。在你的账户中拨动一个状态,对此毫无作用。
对于疑似种子泄露的情形:
- 创建一个新身份,并保存新种子;
- 在你的账户中停用旧身份;
- 停止在公开场合宣传旧的接收地址;
- 通过人们信任、能联系到你的渠道,重新发布新的公钥;
- 在重要的场合,用新身份签署、发布能够取代受影响记录的新记录。
旧身份无法被「恢复未泄露」。种子是唯一曾赋予对它掌控权的东西,而泄露的秘密始终是泄露的。这与 移除通行密钥并不具有追溯效力 是同一个道理:服务层的动作可以切断未来的访问,却无法回到过去、撤销已经发生的暴露。
团队应该怎样使用这些状态?
把生命周期状态当作策略,而不是种子保管的替代品。
团队应当事先决定,一个身份在什么时候是:
- 在日常工作中处于启用状态;
- 在项目结束后被停用;
- 在泄露调查期间被停用;
- 在某位成员离开后从其账户中删除;
- 在种子暴露后用一个新身份替换。
这些状态唯一做不到的,是吊销对种子的知悉。一位已离开、却仍持有那 32 字节的成员,对一个共享身份保有完全的掌控权,无论任何账户做什么都改变不了。把他们排除在外,意味着替换这个身份——一个只与留下来的人共享的全新种子——而不是停用旧的那个。共享团队身份 讲述了在多人之间运行同一个身份的取舍。
最安全的默认做法是什么?
先停用,再删除。
当你拿不准时,停用是更温和的选择。身份保持可见、继续解密,但新的使用被阻止,而你随时可以重新启用。什么也不会丢失。
只有在你确信以下至少一条成立时,才执行删除:
- 种子已经备份在 CardanoWall 之外的某处;或
- 这个身份确实不再需要了;或
- 这个账户就是不该再拥有它的访问权了。
在没有种子备份的情况下删除,是人们把自己挡在自己封存内容之外、再也无法打开它最常见的原因。
简短版本
启用表示正常使用。停用表示在这个账户中只读——它仍然解密,但无法签名、发布或发送。删除表示与这个账户解除关联、并从它的保险库中移除,只能通过重新导入种子来恢复。
这些状态帮助你在 CardanoWall 内部管理身份。它们不会改变已经写入 Cardano 的密码学事实。身份种子始终是最后的恢复路径——所以在删除任何东西之前,先把它保存好。
延伸阅读
- 你的身份就是一个种子——为什么真正的身份是一个 32 字节的种子,而不是一个账户。
- 为什么身份种子依然重要——备份、恢复,以及丢失究竟要付出什么代价。
- 移除通行密钥会发生什么——保险库因子那条对应的「服务层控制、不具追溯效力」的故事。
- 共享团队身份——在多人之间运行同一个身份,以及移除一位成员。
- 证明不能证明什么——存在性证明的局限。
- Label 309 标准 及其开源参考代码,见 github.com/cardanowall。