時間錨定
把承諾固定在時間上——RFC 3161 時間戳與 Base 鏈上錨定,各自提供什麼、錨的精確構造,以及如何把錨一路核到鏈上。
哈希鏈證明的是內部一致性。要防止運營方整體重寫歷史(重簽一整套替代帳本),承諾哈希必須被運營方控制不了的第三方固定在時間上。Open Tally 用兩個互相獨立的機制,且它們刻意固定同一個值——期間承諾的哈希:它覆蓋承諾的完整規範化形式(first_seq/last_seq/count/root/prev_commitment_hash),並透過 Merkle 根覆蓋其下整段已簽名回執。
RFC 3161 時間戳(TSA)
每個期間承諾的哈希提交給 RFC 3161 時間戳機構——linkex.ai 實例用 DigiCert;取回的令牌驗證後入庫,並隨公開帳本一起提供(/api/receipt/commitments 加 include_tokens=1)。令牌固定的是承諾哈希——也就是整個期間的內容——固定在令牌的時刻。
時間戳令牌建立在單一機構之上:持有 TSA 簽名密鑰的人原則上可以簽出任意時間的令牌。所以驗證方要釘住 TSA 信任根(-tsa-roots)而不是聽任宿主操作系統的信任庫——驗證指南會展示為什麼這是前提而非優化——也所以需要第二個互不相關的固定機制。
鏈上錨定(Base)——已生效
第二道固定在 Base 主網(eip155:8453)上運行,每小時一次,在 linkex.ai 實例已生效:自開錨以來每個窗口都有一筆已確認的公開交易(實時統計)。
構造與公布的錨定規範逐字一致(規範原文在 /api/anchor/spec 原樣提供,無需源碼即可核對其哈希):
- 窗口。 每個錨覆蓋一個小時窗口
[window_start_ms, window_end_ms)內寫入的承諾——按寫入時間而非承諾覆蓋的期間選取,故遲寫的承諾(例如某條流阻塞疏通後補寫的)仍在其寫入的窗口被錨定,而不是永遠錨不上。 - 條目投影——數據最小化。 每份承諾恰好投影兩個值:帶鹽的匿名
anchor_id,以及承諾的hash(與公開帳本發布的逐字相同)。不含流名、不含序號、不含計數,任何業務數據都絕不上鏈。 - 折疊成根。 條目按
anchor_id排序後,以域分隔符為種子折疊成一條哈希鏈,結果即該窗口的data_root。空閒的小時顯式錨定為空而不是跳過——讓「安靜」與「缺席」可區分。 - 載荷。 五個定形字段——窗口起、窗口止、
data_root、spec_hash、prev_anchor_hash——哈希成單一的 32 字節payload_hash,作為錨定錢包一筆零額自轉交易的 calldata 寫上鏈。
其中三個字段值得多看一眼:
anchor_id是流身分與承諾首序號的帶鹽哈希。鹽是私密的且永不輪換——一扇單向門:外部無法從鏈上數據枚舉運營方的渠道結構,持鹽方卻仍能證明任何錨的歸屬。驗證方永遠不需要計算它;它為折疊貢獻字節、充當穩定的匿名句柄,不是一項要核的主張。spec_hash是錨定規範文檔自身的 SHA-256。鏈上交易同時承諾了「它是按哪一版規則做出的」——取回規範、哈希、比對即可。規則變更以新版本規範、新哈希發布;歷史錨各自指向自己那一版。prev_anchor_hash把每個窗口與上一個窗口的payload_hash相連,故任何窗口都無法被靜默移除。
廣播是兩階段、抗崩潰的:已簽交易先持久化再發送,崩潰不會導致重複簽名;確認掃描器把每個錨收斂到 confirmed 或 failed。
自己走一遍:五步,零工具
錨定透明頁在瀏覽器裡按窗口鋪開這一切;機器可讀形式是 /api/anchor/transparency(加 include_entries=1 取條目列表——繁忙窗口的列表很大,默認省略)。對任意窗口:
- 包含性——你的承諾
hash(來自/api/receipt/commitments)應出現在該窗口披露的條目中; - 根——按規範以披露順序折疊條目,與記錄的
data_root比對; - 載荷——按記錄的字段重建五字段載荷,其 SHA-256 應等於
payload_hash; - 鏈上——在任意公開 Base 瀏覽器打開記錄的
tx_hash:交易的 32 字節 calldata 必須等於payload_hash,區塊時間即固定時刻; - 連續性——每條記錄的
prev_anchor_hash等於上一條的payload_hash。
這五步沒有一步涉及 linkex 的工具或對 linkex 的信任——第 4、5 步直接對照公鏈本身。
錨定有起始時刻
錨定帳本始於 /api/anchor/stats 報告的 earliest_window_start_ms。在該時刻之前簽發的承諾有 RFC 3161 時間戳、也在已簽名的承諾鏈裡,但不在任何鏈上窗口內——錨定無法回溯到開啟之前。這是邊界,不是缺陷,寫明它是為了沒有人從一個錨裡讀出它沒固定的東西。
為什麼要兩個機制?
| RFC 3161 TSA | 鏈上錨定 | |
|---|---|---|
| 信任假設 | 單一時間戳機構 | 公鏈共識 |
| 失效模式 | TSA 密鑰洩露/證書過期 | 鏈重組(有界,隨後終局) |
| 驗證 | 離線,釘根證書 | 公開:任何人都能查交易 |
兩者經由互不相關的信任路徑固定同一個哈希,一旦都就位即可互相印證。想重寫歷史的運營方必須同時擊敗兩者——而且是事後:令牌已在對手方手裡,交易已在公鏈上終局。