全部文章

阅读约 7 分钟

CardanoWall 证明能离线使用吗?

只要一条 Label 309 记录、它的内容以及你的密钥已经同步到本机,CardanoWall Desktop 就能在没有网络的情况下浏览、搜索、解密并验证它们。它做不到的,是去取一份从未缓存过的数据。

能——只要数据已经在你的设备上。一旦一条 Label 309 记录、它的内容或密文,以及打开它所需的密钥都已同步,CardanoWall Desktop 就能在断网状态下浏览、搜索、解密并验证它们。它做不到的,是凭空造出从未见过的数据:一笔从未同步的交易,或一份从未下载的密文。

CardanoWall Desktop 采用离线优先的设计。对于你眼前的这块屏幕,本地数据库才是真相来源;网络只是后台的同步器,负责往这个数据库里填数据。所以「离线」是一种正常模式,而非错误状态——本机成了「证明世界」中你已拉取那部分的一份工作副本。

正是这份工作副本,让证明在现场真正有用:出差途中、审计现场、法律审查、事件响应,或任何网络不可靠的场合。一份证明不该仅仅因为某个标签页连不上服务器就变得无法读取。CardanoWall Desktop 是开源的——用 Rust 加 Tauri 构建在开源的 Rust SDK 之上,代码就在 github.com/cardanowall——所以你可以直接读它的行为,而不必凭信任接受这些说法。

离线时,已同步的证明能做哪些事?

很多事,只要数据已经在本地。如果在本地,CardanoWall Desktop 可以让你:

  • 浏览已同步的公开 Label 309 记录
  • 搜索本地记录镜像,包括按内容哈希搜索
  • 查看通过试解密已发现的收件箱记录
  • 打开已缓存的密文
  • 用本地密钥解密封存文件
  • 比对本地文件的哈希
  • 检查已缓存记录的结构
  • 回顾你的已发送记录历史
  • 准备草稿以备日后发布

这些都是真正的密码学操作,不是缓存下来的截图。哈希比对、签名验证、试解密——全都在应用的 Rust 核心里本地运行,针对的是磁盘上已经存在的字节。

离线时,有哪些事做不到?

离线模式有一条清晰的边界,而且它对这条边界在哪里毫不含糊。应用无法制造它从未拥有过的数据。

  • 如果一笔交易从未同步,没有网络或其它本地元数据副本,应用就无从知道它存在。
  • 如果一份密文从未下载,应用就无法离线解密它。
  • 如果一条记录指向某个存储 URI,而那些字节未被缓存,应用就无法在断网时去取它们。
  • 如果你想发布一条新证明,应用需要网关和网络:它必须对发布进行报价、上传、提交 Cardano 交易并完成确认。(发布始终要经过网关——参见为什么发布有费用。)

离线优先并不是在宣称应用能补全缺失的数据。它宣称的是:一旦数据在本地,应用就把它当作一等公民对待。

应用会缓存什么,各层的敏感度如何?

一共有四层,敏感度依次递增。

公开记录元数据。 桌面端会保留一份完整的 Label 309 记录本地镜像——封存的和公开的都包括——来自你配置的那个网关。每条记录都很小(单笔交易的元数据,远低于 Cardano 约 16 KB 的元数据上限),所以即使经过多年高强度使用,整个全局集合仍维持在几百兆字节的量级。这份镜像是搜索、收件箱发现、已发送记录跟踪以及离线检查的基础。它只包含链上已经公开的内容,因此按设计以未加密形式存储——给一份公开数据的副本加密毫无意义。

密文。 封存记录通过内容寻址存储(ar://ipfs://)引用加密载荷。缓存这份密文是安全的,因为它本就已加密;只有持有匹配密钥的人才能打开它。桌面端把它缓存下来,是为了让重新打开收到的文件即时完成,并且离线可用。

已解密内容。 这是敏感层,应用对它格外谨慎。默认情况下,它按需将内容解密到内存,绝不把明文写入磁盘。还有一个可选的、单独加密的「已解密文件缓存」,供希望即时预览而不必重新解封的用户使用,但它默认关闭;只有当你明确选择「保存」时,明文才会被写到一个常规位置。你应当随时清楚:解密后的文件是否被保留、保存在哪里、又如何受到保护。

身份材料。 身份种子存放在一个加密保险库里,并在本地解锁。在相关身份未解锁时,一条封存记录仍可以作为公开记录出现在镜像中——只是你打不开它的内容。种子本身永远不离开设备,也永远不会到达任何网关。(关于这条边界为何重要,参见为什么密钥永不离开设备。)

你能离线验证一份证明吗?

能——只要你手上有验证所需的输入。Label 309 的验证从设计上就只依赖公开数据,因此这些密码学检查并不依赖 CardanoWall 的服务器。每种检查各自需要什么:

  • 哈希证明需要记录和原始字节。验证方从字节重新计算哈希,再与记录中承诺的哈希作比对。完全离线。
  • 已签名证明需要记录及其内嵌签名。签名密钥被携带在记录的签名结构中,或可由其解析得到,所以记录一旦在本地,签名验证即可离线运行。
  • 封存证明需要记录、密文,以及能打开它的接收方密钥(或口令)。当三者都在本地时,应用会解密、重新计算明文哈希,并将其与记录中的承诺作比对——正是这一步把加密字节重新绑回那条带时间戳的声明。
  • Merkle 证明需要记录中的 Merkle 根,再加上包含证明(或用于重建它的叶子列表)。然后包含证明的检查就能离线运行,整个过程没有网关参与。构建 Merkle 树和验证包含关系都是纯计算——参见用一条记录证明上千个文件

通常唯一需要网络的,是获取你尚未拥有的数据,以及确认当前的链上状态。运算本身在本地完成。(完整的验证模型,参见如何验证一条 Label 309 记录。)

离线时,区块链确认怎么办?

一份证明的时间戳和确认状态来自 Cardano,这些是应用从链上读取的事实——它绝不会自己编造。

如果应用已经同步了某笔交易及其确认深度,它就能离线展示那份缓存状态。它离线做不到的,是得知新的确认数、一次链重组,或任何更新后的上下文,因为那需要去询问 Cardano 区块浏览器。

所以一个严谨的客户端会把这些状态区分清楚:

  • 已缓存、且本地验证过的记录数据
  • 每个条目上一次同步的时间
  • 截至上一次同步时的确认深度
  • 仍处于待定、或低于确认阈值的记录
  • 需要重新联网复查的记录

离线展示应当如实反映数据的新鲜度。它绝不该把上周的确认深度当成当前值来呈现。

离线的收件箱发现是怎么工作的?

你的收件箱是在本地、由两样东西计算出来的:记录镜像,以及你已解锁的身份。网关有意做成接收方盲态——它根本不知道哪些封存记录是「你的」——所以从设计上说,找到你的「邮件」就是一项本地任务。

如果应用已同步了封存记录,它会在设备上用你的身份对它们逐一试解密。对于每一个封存密钥槽,它都尝试解密一次;凡是你的密钥能打开的,就是你的消息。整个过程没有任何服务器被问及你是谁。

这也是为什么导入一枚旧的身份种子在离线时也能顺利完成。因为是否匹配只由接收方密钥决定,应用会针对该身份重新扫描已存在的本地镜像,呈现出过去那些发给它的封存记录——这是一次本地扫描,无需重新下载。(你的身份就是那枚种子;参见你的身份就是一枚种子。)

如果镜像不完整,收件箱也可能不完整。当网络恢复时,应用会同步缺失的记录并继续发现。

为什么不把一切只放在云端?

因为云不该成为信任之根。托管服务很方便——它可以发布记录、提供数据流、处理报价,并让界面变得易用。但一份证明应当比任何单一的服务账户活得更久,而 Label 309 的全部意义就在于:验证只需要公共基础设施——交易元数据、可选的内容字节,以及一个公开的 Cardano 区块浏览器。把你关心的那些记录在本地存一份工作副本,正是这种独立性的实际体现。

恰恰在单一网页会话过于脆弱的那些场景里,这份本地副本才物有所值:审计、事件响应、法律保全、证据审查、新闻调查、研究归档、受监管的工作流,以及长期保存。

团队该如何使用离线证明?

提前决定:你可能需要在无网络时证明哪些事——然后趁网络还在,先把验证材料同步并缓存好。

「该缓存什么」的形态随工作而定:

  • 法务团队可能希望把加密的证据包缓存在一台获批的机器上。
  • 合规团队可能希望审计期间随时可取用每天的证明记录和包含证明。
  • 发布或 DevSecOps 团队可能希望把构建证明和发布清单与发布归档一并缓存。
  • AI 团队可能希望把数据集清单和模型输出承诺在本地做镜像。

规则很简单:如果你可能需要离线证明某件事,就趁连接还在,把它同步、并缓存好能证明它的材料。对于封存内容,还要确认相关的身份种子已按你的策略备份,并交到了正确的人或设备手中——没有它,密文就始终无法打开。

在本地持有证明有哪些风险?

离线访问会把一部分责任转移到设备上,这一点值得讲清楚。

存在本地存储风险。如果设备被盗,它的缓存就成了问题。已缓存的密文是加密的,没有密钥打不开;但你选择保留的任何已解密文件都是敏感的,而身份保险库必须受到保护。操作系统、磁盘加密、用户账户、口令以及一般的设备安全,全都成了信任链条的一部分。CardanoWall Desktop 通过加密保险库、自动锁定,以及对内存中密钥的尽力清零来降低暴露面,但它无法守护一台已被完全攻陷、且处于解锁状态的机器——而它对此直言不讳。

还存在新鲜度风险。一份缓存的证明在它上一次同步的时刻是有效的,但在重新联网之前,应用无法得知当前的链上状态。

好的软件会让这些边界可见:它展示上一次同步的时间,把缓存验证与一次新鲜的联网检查区分开来,并避免悄悄把已解密的明文写入不安全的位置。

一份长期证明该保留什么?

对于需要保存多年的证明,要留下的不止是交易哈希。根据证明类型的不同,这意味着:

  • 交易引用
  • Label 309 记录字节(或一份经过验证的导出)
  • 原始文件或明文
  • 密文(针对封存记录)
  • 解密所需的身份种子或接收方密钥
  • Merkle 叶子列表或包含证明
  • 用于归属认定所需的任何签名或公钥
  • 一段简短的说明,记录这份证明是如何创建的、归属于哪个流程

区块链提供公开的锚点——证明这些确切的字节在某个公开的区块时间之前就已存在。你的本地归档则保存那些让锚点日后依然有用的上下文。(同时也别忘了锚点断言了什么、又没有断言什么:参见一份证明不能证明什么。)

一句话版本

离线证明不是魔法,而是准备。如果记录、内容、密文、密钥以及任何包含证明都在本地,那么所有密码学检查都能在本地运行。如果有什么从未同步或缓存过,应用就需要网络去取它——并且它会如实告诉你,而不是假装。

CardanoWall Desktop 让这份本地工作副本成为常态:它同步记录,在设备上发现封存的收件箱条目,缓存加密文件,验证证明,并让已同步的证据即使在网络消失时依然有用。

延伸阅读

cardanowall-guidesdesktoplabel-309