我以前看合约隐私,眼睛总盯着存储区。加密字段摆在那里,很容易让人安心。今天抠 RUES 的订阅条件时,两个限定词把我按住了。@Dusk 的合约可以把状态藏起来,但订阅不是摸黑进行,它先认 contract_id,再认 event_name。可见性从这里就已经分了叉。

我把 D-03 和 D-37 摊成两栏。左边写存储加密,右边写事件层。订阅样例里的 JSON header 和 raw event bytes 被我圈出,$DUSK 合约事件会按条件送给订阅者。看到 raw event bytes 原样可读时,我像收到一条报错提示,提示我别把存储层的结论盖到日志层。订阅字段不是摆设,它决定谁能收集哪些行为碎片。

说白了,锁住文件柜,不等于门口的收件登记也上了锁。状态像柜里的材料,事件更像贴在门口的取件单。索引器未必能碰到加密字段,却可能把时间、调用和名称整理得很勤快。把两栏放在一起,我才慢慢回过味,隐私不是一个按钮,而是每层可见性分别算出来的结果。

这里有个很实际的边界。事件不必直接暴露资产数量,才会形成风险。时间点、反复出现的调用关系和关联名称放到一起,旁观者已经能做出接近的推断。只查合约状态,会漏掉一条查询路径。把事件层单独划进检查表,不是吹毛求疵,而是避免后来才发现,行为轮廓早被日志拼出来了。

所以我现在不再只问存储有没有加密,还会追问事件怎么发、谁能订阅、字段是否脱敏。我宁可多花一分钟读字段,也不愿把默认可见当成默认私密。存储加密当然有用,但不等于日志就自动保密。隐私合约的检查清单里,事件层该独立占一行。索引器越勤快,这一行越不能省。#dusk