链上合规日志要能改错:ERC-8328 主体关联事件账的更正链 图 1
链上合规日志要能改错:ERC-8328 主体关联事件账的更正链 · 图 1

链上合规日志要能改错:ERC-8328 主体关联事件账的更正链

把“某个主体在某时刻发生了某类合规事件”写进链上记录,听上去只是发一笔交易,真正难的是语义:链不许改,可合规记录必须允许修正;日志要能被机器按主体和类型检索;每一条都要说清是谁在什么证据上做的断言。ERC-8328 围绕这三件事定义了一张仅追加的事件账,文件头记录创建于 2026 年 7 月 5 日,仓库状态 Review,声明依赖 ERC-165。

写入只进不退

主入口 recordEvent 把一条事件追加进全局索引,ComplianceEventRecorded 事件同步广播。规范为每条记录绑定归因——记录者身份、证据引用与更正溯源,含义是记录不是无主的话,而是“某主体就某证据作出的、可被后续记录修正的断言”。任何时刻历史条目都不删不改,这是仅追加账本的底线。

链上合规日志要能改错:ERC-8328 主体关联事件账的更正链 图 2
链上合规日志要能改错:ERC-8328 主体关联事件账的更正链 · 图 2

“当前有效”是个指针问题

日志不许改,阅读顺序就得有规矩。currentEventIndex 给出全局计数,eventCountgetEvent 按全局序号访问条目,isEventCurrent 回答“这条记录现在还算数吗”——同一事项被更正后,旧条目仍然在账上、仍然可查,只是不再被判定为当前有效。类型维度另有一套索引:eventCountByTypeeventByTypeAt 按事件类型分桶计数与取数,lastRecordedEventByType 定位某类型的最新写入。读侧因此有两种口径可查:按时间流追完整历史,或按类型直读当前态,两种答案各自成立,对不上时以带更正溯源的最新条目为准。

为什么值得单独立标准

资产代币的合规接口早已存在——ERC-3643 那类标准管的是“这个地址能不能收币”。这张事件账管的是另一件事:合规事实本身的历史。一份制裁筛查命中记录、一次风险评级调整、一纸主体身份核验的签发与撤销,过去散落在各机构的私有数据库里,链上只留结果不留过程。把过程做成公共的仅追加账,第三方的核验从“信不信这家机构”细化成“查得到这条记录的归因链与更正链”——出错不可怕,可怕的是错了没有痕迹。

索引族的两本账

接口给出的查询可以按主语分成两本账。以事件为主语:getEvent 按全局序号点单,eventCount 报总数,currentEventIndex 给出写入游标,三件套支撑逐条重放式审计——索引器只要顺序扫描,就能和链上一字节不差。以事项为主语:eventCountByTypeeventByTypeAtlastRecordedEventByType 把同类型条目串成独立序列,isEventCurrent 判断某条记录当前是否仍为有效断言。两本账偶尔会给出不一致的直觉:全局序号第十万条可能是三年前签发、上月才被更正的旧事,而某类型的“最新”早已指向别处的更正条目。正确的读法是让两本账互相校验:事项维度的当前答案必须能在全局流里找回它的签发记录与更正链,找不回即实现有缺陷。对依赖这张表的下游系统,缓存策略也随之明确——按全局序号增量订阅永不过期,按事项维度读取则必须带上有效性判定。仅追加账本把这些读法变成标准动作,这正是它相对私有日志数据库的卖点:任何人可以拿同一套函数,复算出同样的当前世界。

仓库状态停在 Review,接口定稿前仍可能调整,描述生产系统时先对齐草稿版本。读它时值得带上两个清醒的问题:其一,记录者有权写入不等于记录者可信,标准管的是记录的可追溯性,不是事实的真伪,归因字段让追责成为可能、不负责裁定是非;其二,按主体检索的前提是主体标识体系的统一,同一机构在不同链、不同登记处的标识如何对齐,留给了实现层的注册表与名字系统。账本给了历史,判读历史仍然要回到证据本身。本文为机制说明,不构成任何投资建议。