linkex.cclinkex.cc
Open Tally 協議

時間錨定

把承諾固定在時間上——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/commitmentsinclude_tokens=1)。令牌固定的是承諾哈希——也就是整個期間的內容——固定在令牌的時刻。

時間戳令牌建立在單一機構之上:持有 TSA 簽名密鑰的人原則上可以簽出任意時間的令牌。所以驗證方要釘住 TSA 信任根(-tsa-roots)而不是聽任宿主操作系統的信任庫——驗證指南會展示為什麼這是前提而非優化——也所以需要第二個互不相關的固定機制。

鏈上錨定(Base)——已生效

第二道固定在 Base 主網eip155:8453)上運行,每小時一次,在 linkex.ai 實例已生效:自開錨以來每個窗口都有一筆已確認的公開交易(實時統計)。

構造與公布的錨定規範逐字一致(規範原文在 /api/anchor/spec 原樣提供,無需源碼即可核對其哈希):

  1. 窗口。 每個錨覆蓋一個小時窗口 [window_start_ms, window_end_ms)寫入的承諾——按寫入時間而非承諾覆蓋的期間選取,故遲寫的承諾(例如某條流阻塞疏通後補寫的)仍在其寫入的窗口被錨定,而不是永遠錨不上。
  2. 條目投影——數據最小化。 每份承諾恰好投影兩個值:帶鹽的匿名 anchor_id,以及承諾的 hash(與公開帳本發布的逐字相同)。不含流名、不含序號、不含計數,任何業務數據都絕不上鏈
  3. 折疊成根。 條目按 anchor_id 排序後,以域分隔符為種子折疊成一條哈希鏈,結果即該窗口的 data_root。空閒的小時顯式錨定為空而不是跳過——讓「安靜」與「缺席」可區分。
  4. 載荷。 五個定形字段——窗口起、窗口止、data_rootspec_hashprev_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 取條目列表——繁忙窗口的列表很大,默認省略)。對任意窗口:

  1. 包含性——你的承諾 hash(來自 /api/receipt/commitments)應出現在該窗口披露的條目中;
  2. ——按規範以披露順序折疊條目,與記錄的 data_root 比對;
  3. 載荷——按記錄的字段重建五字段載荷,其 SHA-256 應等於 payload_hash
  4. 鏈上——在任意公開 Base 瀏覽器打開記錄的 tx_hash:交易的 32 字節 calldata 必須等於 payload_hash,區塊時間即固定時刻;
  5. 連續性——每條記錄的 prev_anchor_hash 等於上一條的 payload_hash

這五步沒有一步涉及 linkex 的工具或對 linkex 的信任——第 4、5 步直接對照公鏈本身。

錨定有起始時刻

錨定帳本始於 /api/anchor/stats 報告的 earliest_window_start_ms。在該時刻之前簽發的承諾有 RFC 3161 時間戳、也在已簽名的承諾鏈裡,但不在任何鏈上窗口內——錨定無法回溯到開啟之前。這是邊界,不是缺陷,寫明它是為了沒有人從一個錨裡讀出它沒固定的東西。

為什麼要兩個機制?

RFC 3161 TSA鏈上錨定
信任假設單一時間戳機構公鏈共識
失效模式TSA 密鑰洩露/證書過期鏈重組(有界,隨後終局)
驗證離線,釘根證書公開:任何人都能查交易

兩者經由互不相關的信任路徑固定同一個哈希,一旦都就位即可互相印證。想重寫歷史的運營方必須同時擊敗兩者——而且是事後:令牌已在對手方手裡,交易已在公鏈上終局。

本頁內容