交易备注里多出的那个 enc:Cardano CIP-83 加密注释元数据 图 1
交易备注里多出的那个 enc:Cardano CIP-83 加密注释元数据 · 图 1

明文备注的账:谁都能捞一把

Cardano 的交易备注靠 CIP-20 元数据约定,2021 年中起在交易所回款、链上购物、用户间附言里大量使用:备注以 JSON 挂在 674 号元数据标签下,内容就是可读文本。CIP-83(状态 Active,2022-12-08 创建)在动机部分把代价说破了:这些数据以明文过网络、进公开账本,邮件地址、发票号、电话这类字段,中间设备方用一条正则就能成批捞走。它的定位很克制——不是区块链隐私的终极方案,只是让”顺手采集”变贵。

交易备注里多出的那个 enc:Cardano CIP-83 加密注释元数据 图 2
交易备注里多出的那个 enc:Cardano CIP-83 加密注释元数据 · 图 2

格式:674 还是那个 674,多了 enc 键

加密版沿用原结构,只在 674 下新增一个 enc 键标明方式,msg 键还是数组,装的内容从明文换成一段段 base64 密文。不认识 enc 的旧浏览器、旧钱包会直接把 base64 当消息显示,不会解析失败——这就是补丁声称完全向后兼容的原理。规范同时要求展示端做基本体检:msg 必须是数组,缺键、拿字符串顶替数组这类畸形应标记为无效;同一笔交易里 674 标签不可能出现两次;将来加新键(比如版本号)也不该妨碍对 msg 与 enc 的解析。

basic 模式:一条 openssl 命令的距离

首个正式方式是 basic:口令对称加密,完全照着 OpenSSL 的常用参数来——AES-256-CBC、带盐、PBKDF2 派生密钥、迭代默认 10000 次、32 字节密钥加 16 字节 IV、8 字节盐、输出前缀 Salted__、密文再 base64,填充走 PKCS#7。加密对象是原明文格式里整个 msg 数组序列化后的 JSON 文本,不是逐条字符串。选择面窄是有意的:规范解释过,用字节数组能省约三分之一空间,但那会破坏向后兼容;用 base64 文本,用户甚至能从浏览器里的资源管理器复制密文、拿到本地 openssl 一句话解密(规范给的加解密命令都用了 -pbkdf2 -iter 10000 参数)。enc 还有个 plain 值,只是显式声明”没加密”,可省略。

默认口令 cardano 的两副面孔

basic 模式有个默认口令:cardano。没有约定私密口令时,加密端与解密端都用它。好处是浏览器插件、区块浏览器可以自动尝试解密,把发票号还原给用户看,规范点名的实现方包括 Cexplorer、Cardanoscan、AdaStat、Eternl 等工具。代价也要说透:公开的默认口令意味着” targeted 的解密者”毫无门槛——默认加密防的是顺手采集,不防有心人。想要只有收发双方能读,得在链外约定私有口令(商店给用户、朋友之间都是 CIP 举的例子),并且明白口令本身绝不能随消息明文走。给自己转账加”备忘”的场景,用默认口令只是把明文换成机器可自动还原的密文,聊胜于无。

加密备注花多少钱、留多少痕

两个容易被忽略的成本问题。其一,base64 比原始文本膨胀约三分之一,规范为兼容性主动放弃了用字节数组省空间的方案,而 Cardano 交易费随字节数增长,加密备注比明文备注略贵是正常现象。其二,加密只藏内容不藏存在:链上所有人仍能看到这笔交易带了 674 元数据、长度多少、何时发生,“附言加密”不等于”这笔转账隐形”。评估该用哪种保护时按内容敏感度分档:发票号一类业务流水用默认口令换自动解密便利即可;联系方式、账户引用一类个人数据值得私有口令;而要求对手方无法推断交易用途级别的需求,已超出元数据加密的范围,应看链本身的屏蔽机制。

用户动作与风险提示

看到 674 加密备注别当权威信息:标签内容任何发送方都能伪造,加密不证明来源(那是签名的活,CIP-8 干的事,规范自己也对比过);解密尽量在本地前端做,不要把口令交给服务器回调处理。链上附带的收款标识与交易所充值备注混用引发的事故,可以对照充提备注核对清单(见 链上转账前必查清单:网络选择、最小单位与 Memo 注意事项);恢复钱包后元数据类内容去哪了的问题,Zcash 侧有个平行草案(见 恢复助记词后,钱包备注去哪了:Zcash 草案 ZIP-325 的元数据密钥树)。参数与实现以 CIP-83 现行文本为准。本文为机制说明,不构成投资建议。