跳到主要内容

fingerprintOf()

function fingerprintOf(operation, patch): string;

Defined in: packages/rxdb-plugin-working-tree/src/working-tree/capture-runtime.ts:113

单元当前状态的指纹(FNV-1a/32,十六进制定长 8 位)。

Parameters​

ParameterTypeDescription
operationWorkingTreeEntryOperation折叠后的操作
patchRecord<string, unknown> | null折叠后的正向补丁

Returns​

string

指纹字符串

Remarks​

用非加密哈希是因为它挡的不是伪造,而是误判相等,两端都由同一份实现算出。

今天没有任何生产代码比较这一列:冷重放、提交、diff 都不读它(见 cold-replay.ts 与 commit-command.ts 的 toChangeUnit),提交的内容指纹另走 computeChangeUnitFingerprint 的 SHA-256;US-308 交付的冲突检测也不读它,走的是 revision CAS 与 active branch token。 将来若有消费者按身份逐对比较同一实体两侧的这一列,误判相等的概率每对约 2⁻³²,十万对 合计约 2×10⁻⁵;「约 7.7 万条碰撞概率过半」的生日界只在拿指纹当跨实体的键时才成立。真要换成 SHA-256,不需要异步也不需要新依赖 (@aiao/rxdb 的 sha256Hex 是同步的,本插件已在用),代价是捕获热路径上每次写多算一遍 纯 JS 摘要、列宽从 8 位变成 64 位。换不换由首个比较这一列的消费者定,登记在 requirements/roadmap.md「epic-006 评审顺延的架构项」。

operation 参与哈希:同一份 patch 在 insert 与 update 下是两个不同的意图, 只哈希 patch 会让两者指纹相同。