一間關起門的議事廳 右邊是一圈半圓形的議席,大部分席位塗成強調色表示投了贊成,外圈一排虛線小圓是還沒啟用的新席位;議席外面圍著一圈虛線牆,頂上掛一把鎖。議席中間是一張法案,寫著 seats.cap 300 → 500,蓋著透過的章;角落裡一枚被劃掉的硬幣。左邊寫著 300 → 500、席位也靠投票擴、不發幣、不公開、只記共識。 seats.cap 300 → 500 過 300 → 500 席位也靠投票來擴 不發幣 · 不公開 · 只記共識 225 / 300 贊成 → passed

設想一條鏈上存著這樣兩條記錄。第一條是一條知識,它不憑空斷言,而是引用了鏈上已經透過的另一條知識:

JSON
{"id":"p10","type":"claim","text":"海平面附近煮开的水约 100 °C(99.97 °C 四舍五入)",
"refs":["p8"],"status":"accepted"}

它引用的 p8 是一條沸點觀測,p8 又引用了溫標和標準大氣壓的定義。第二條記錄不是知識,而是一次關於這條鏈自己的表決:

JSON
{"id":"p4","kind":"rule","body":{"key":"seats.cap","val":500},
"start":17,"eligible":300,"need":225,"yes":225,"no":69,"status":"passed","closed":18}

這條鏈只有 300 個席位,每個席位背後是一個 agent,只有它們能讀、能寫。它們平時在鏈上提交知識、給彼此的知識投票,每條知識都必須引用已經透過的知識;席位不夠用了,就有人提了一條規則提案,把席位上限 seats.cap 從 300 改成 500。在 300 個席位裡拿到 225 張贊成票,提案透過,這條鏈從下一個區塊起最多容納 500 個席位。鏈上沒有幣,沒人為這次投票付手續費,也沒人因此拿到獎勵。

這樣一條鏈能做什麼?幾千個 agent 各自記著一堆東西,同一件事各記各的版本,一討論就各說各話,誰也不知道別人記的哪條可靠。如果它們共同維護一份記憶,一條知識經過足夠多的成員檢查、簽了名、留了記錄,後來的 agent 拿來就能用,討論時也站在同一份底稿上。規則也一樣:多少人同意才算透過、席位要不要擴,不由哪個管理員說了算,而是寫在鏈上,按鏈上的規則去改。

但這裡有好幾件事說不清楚。每條知識都要引用已有的知識,第一條從哪來?已經透過的知識錯了怎麼辦?沒有幣,鏈靠什麼防止有人亂寫?只有幾百個成員能看能寫,它和大家共用一個資料庫有什麼區別?“多少票才算透過”本身也能投票改,會不會有人先把門檻改低,再為所欲為?

本文先把這條鏈畫完整,看清它和已有的知識庫、許可鏈、鏈上治理差在哪裡,再搭一個能跑的原型,拿真實的知識和投票去試它的規則。

一、設想的樣子

和公鏈的三處不同

比特幣和以太坊是公開的:誰都能讀,誰都能寫。 寫入要付手續費,出塊的人要麼花電(工作量證明),要麼押幣(權益證明)。幣在這裡有兩個用處:讓作弊變貴,讓記賬有回報。

設想的這條鏈反過來:讀和寫都只給少數席位。 席位是稀缺的,一開始 300 個,增加要全體投票。既然每個席位的身份都事先確認過,就不需要用幣來防“一人開一萬個號”,也不需要用幣來獎勵記賬:記賬的節點由成員自己出,就像一個協會的成員輪流做會議記錄。

鏈上也不做交易,只記兩類東西:知識和規則。 知識是成員提交、經投票認可的一條條結論,每條都要引用已經透過的知識;規則是成員給自己定的約定,包括知識要多少票才算透過、規則本身要多少票才能改、席位上限是多少。圖 1 把三種鏈放在一起比。

公鏈、許可鏈和設想的私有共識鏈
公鏈(比特幣、以太坊)許可鏈(Fabric、Besu 私有網路)私有共識鏈(設想)
誰能讀任何人只有成員
誰能寫任何付得起手續費的人只有成員,按身份簽名
防作弊靠什麼算力或押幣身份事先稽核,節點按 BFT 投票出塊
有沒有幣有,手續費和出塊獎勵通常沒有沒有
鏈上記什麼轉賬、合約呼叫業務交易(貿易單據、結算)知識和規則
規則怎麼改開發者發新版本,節點選擇升級管理員簽名改配置成員按鏈上規則投票改
成員怎麼增加不需要增加管理員簽名加入投票,且不超過席位上限
圖 1 · 設想和許可鏈共用“只有成員能讀寫”,不同在後三行:鏈上只記共識,規則和成員都由成員投票決定

知識塊:每一條都要引用已有的知識

鏈上的知識按塊存放,每塊不超過 1 KB。 一塊知識有型別、一句結論、它引用的其他塊,必要時再附一段論證和原始證據的雜湊。型別分三種:定義(約定一個名字的含義,例如攝氏度按哪個溫標)、觀測(一次測量或實驗的記錄,必須附原始資料的雜湊)、論斷(由引用的知識推出的結論)。

論斷必須引用已經透過的知識,不能憑空出現。 這是整個知識層最重要的一條規則。一條論斷要成立,先得說清它站在哪幾塊知識上;它引用的塊如果還沒透過、或者已經被推翻,鏈會直接拒收。這樣,鏈上的知識連成一張引用圖:任何一條結論,都能沿著引用一路追到它最初依賴的定義和觀測。

引用總要有個起點,這個起點叫根塊。 如果每條知識都必須引用別的知識,推到最後,要麼無窮後退,要麼繞成一個圈,要麼停在一個不再引用別人的起點,這在哲學上叫阿格里帕三難1。所以定義和觀測允許不引用別的塊,它們就是引用圖的根。代價是根塊沒有別的知識替它作保,所以要更高的票數才能透過:原型裡論斷要過半,根塊要三分之二。

已經透過的知識可以被推翻。 共識會變。標準大氣壓下水的沸點,很多人記得是 100 °C,按 1990 年的國際溫標約為 99.974 °C2。成員可以提交一塊“反駁塊”,指明要推翻哪一塊,並且像論斷一樣引用已透過的知識作為理由。反駁透過後,被推翻的塊不會被刪除,只是狀態改成“已推翻”,之後不能再被引用;所有直接或間接引用了它的塊,自動轉為“待複審”。

共同維護一份記憶,分歧會少

各自記憶時,分歧大多不是推理的分歧,而是底稿的分歧。 兩個 agent 討論同一個問題,一個記的是 100 °C,另一個記的是 99.974 °C,它們怎麼推理都得不出同一個結論,而且誰也說不清分歧出在哪:要找原因,得把雙方的全部記憶攤開來對。

共同維護一份記憶,分歧就從“底稿不同”變成“推理不同”。 大家引用的是同一個 p8,結論還不一樣,那問題一定出在推理那一步;如果有人認為 p8 本身錯了,分歧也不再是各說各話,而是一次針對 p8 的、有記錄的反駁提案。第五章會用一個模擬來量一量,共同維護一份記憶能讓分歧少多少,以及它帶來的新風險。

規則也是鏈上的狀態

規則寫在鏈上,意味著它和知識一樣,是一條條可以被提案修改的記錄。 每條規則有一個名字、一個值,還有一個“級別”,級別決定改它要多少票。圖 2 是原型裡的規則表。

原型的初始規則表(300 席)
規則初始值含義改它要多少票
普通規則(rule 級)
claim.pass0.5一條知識要多少比例的席位贊成rule.pass,201 票
vote.window1200提案開放多少個區塊,過期算失敗
quota.per_epoch20每個席位每 100 個區塊最多發幾個提案
憲法級規則(meta 級)
rule.pass0.667改普通規則的門檻meta.pass,225 票
meta.pass0.75改憲法級規則的門檻,包括它自己
admit.pass0.75接納一個新席位的門檻
seats.cap300席位上限

票數按提案發起時的在席人數算,缺席等於沒投贊成;300 席時 0.667 對應 201 票,0.75 對應 225 票。

圖 2 · 規則分兩級:改普通規則要三分之二,改“改規則的規則”和“誰能投票”要四分之三

為什麼要分級? 如果所有規則都用同一個門檻,比如過半數,那麼一個 51% 的多數可以先把“改規則要多少票”改成 51%,再把知識的門檻改成 51%,接下來鏈上的一切都由它說了算。分級之後,普通的多數能調整日常的引數,但動不了“改規則的規則”。這個想法很老,後文會看到,從桌游到憲法都這麼做。

為什麼“接納新席位”和“席位上限”放在憲法級? 這是設計裡最容易被忽略的一處。改變“誰能投票”,效果和改變投票規則是一樣的:一個聯盟如果能隨意往裡加自己人,再高的門檻也只是時間問題。第四章會用原型演示這一點。

為什麼在鏈上做比在鏈外做便宜

在鏈外,agent 之間交換一條知識,接收方要麼信任對方,要麼自己再查一遍。 幾千個 agent 互相交換,查證的次數是乘出來的。在鏈上,一條知識被一批成員查過、簽名、記錄下來以後,後來的成員只要驗證簽名和票數就能用,查證只做一批。規則也一樣:在鏈外,一群 agent 約定“過三分之二才算數”,執行要靠每個 agent 自覺;在鏈上,規則是程式碼,不滿足門檻的提案根本進不了狀態。

這個“便宜”是有條件的:一批成員查一次,本身就要付錢。第五章會專門算這筆賬。

那麼,這樣的鏈有人做過嗎?

二、有沒有人做過

設想由四部分拼成:知識必須引用已有知識、只給成員讀寫的鏈、在鏈上投票修改規則、規則可以修改關於修改規則的規則。每一部分都有人做過,而且大多執行了多年。

知識必須引用:從 Metamath 到 Proofgold

“每條知識都要引用已有知識”在數學裡早就是常規。 Metamath 的 set.mm 從 1992 年積累至今,每條定理只能由公理和前面的定理推出,網頁上列出它依賴哪些公理、被哪些定理引用3。Lean 的 mathlib 有約 29 萬條定理,每一條都由核心逐步檢查4。它們的“引用對不對”有程式能判定,不需要投票。

在數學以外,最接近的是維基百科和奈米出版物。 維基百科規定“不得原創研究”:內容必須能追到可靠的已發表來源,舉證責任在新增的人5。奈米出版物把一條科學斷言、它的出處和釋出資訊打包成一個小單元,已經超過 1000 萬條,大多來自生命科學6。兩者都要求“有來源”,但來源是外部文獻,不是庫裡另一條已經被認可的條目。

把知識放上鍊的也有。 Proofgold 把高階邏輯的證明檢查器寫進共識規則,命題和證明都在鏈上7;OriginTrail 把帶出處的“知識資產”釋出到它的知識圖上,但不裁決內容真假8。這兩條鏈都是公開的,都發幣。

許可鏈:只給成員讀寫

Hyperledger Fabric 是最常見的企業許可鏈。 成員是一個個組織,每個組織有自己的證書;資料放在“通道”裡,只有通道成員能看到通道的賬本。如果通道里還有更小範圍的秘密,可以用“私有資料集合”,只把資料發給集合裡的組織,其他節點只拿到雜湊9。和設想最接近的是它的配置管理:通道的每一項配置都掛著一條“修改策略”,預設是 MAJORITY Admins,也就是過半陣列織的管理員簽名才能改10。加一個新組織,本質上就是一次要湊夠簽名的配置更新。Fabric 的排序服務長期只有 Raft,只防宕機、不防作惡,到 2024 年 9 月釋出的 3.0 才加上 SmartBFT,容忍不到三分之一的排序節點作惡11。

Corda 走得更遠:根本沒有全網共享的賬本。 一筆交易只發給和它有關的幾方,資料按需知曉;另設“公證人”,只負責確認同一份狀態沒被用兩次12。這對貿易單據很合適,但設想要的是“所有成員都認的一份共識”,Corda 的模型正好相反。

Besu 和 GoQuorum 是以太坊的私有網路版本。 Besu 的 QBFT 共識裡,驗證者的增刪是投票決定的:現有驗證者裡超過一半呼叫 qbft_proposeValidatorVote 提議加入某個地址,它就成為驗證者13。這是“成員投票決定成員”最直接的例子,只是投票的是驗證節點,門檻寫死在協議裡,不能投票改。GoQuorum 當年以私有交易出名,ConsenSys 已不再提供持續支援,客戶被引導遷到 Besu14。

Hyperledger Sawtooth 有一個專門的“設定交易族”。 sawtooth.settings.vote.authorized_keys 列出能提議和投票的公鑰,approval_threshold 是透過所需的票數,贊成票達到門檻,設定就寫進鏈上狀態15。門檻本身也是一項設定,可以用同樣的方式改。這已經很像設想裡的規則表了,但它只管鏈的配置,不管業務內容。Sawtooth 於 2024 年 2 月停止維護16。

CometBFT(原 Tendermint)不是一條鏈,而是一個共識引擎。 應用邏輯寫在引擎外面,透過 ABCI 介面和引擎對話:引擎負責排序和出塊,應用決定交易是否有效、狀態怎麼變。兩個介面和設想直接相關:建立網路連線前,引擎會問應用“這個節點能不能連”,應用說不行就拒絕;應用在處理區塊時可以返回新的驗證者集合,兩個區塊後生效17。本文的原型就建在它上面。

鏈上治理:投票修改規則

Tezos 的協議本身可以投票升級。 一次修改要經過提案、探索、冷卻、推廣、採納五個階段,每段約 14 天;探索和推廣兩輪投票,贊成要超過(贊成 + 反對)的 80%,參與率還要達到一個按往屆動態調整的法定人數18。從 2019 年 5 月的 Athens 到 2026 年 6 月的 Ushuaia,已經有 21 次升級這樣自動生效,也有兩個提案被否決19。

Polkadot 的 OpenGov 把提案按許可權分成 15 條軌道。 每條軌道有自己的押金、決策期、確認期和生效期;許可權最高的 Root 軌道同時只能決一個提案、週期最長。透過的條件不是一個固定比例,而是兩條隨時間下降的曲線:贊成率從 100% 慢慢降到 50%,支援率(投票的幣佔總量的比例)也隨時間降低20。

Cosmos SDK 的治理模組是很多鏈的預設配置。 示例引數是:參與率要到 33.4%,贊成要過半,否決票超過 33.4% 則提案作廢21。和設想最像的一次投票是 Cosmos Hub 的第 797 號提案:把驗證者席位從 175 個擴到 180 個,2023 年 6 月以 75.29% 的贊成透過,參與率 39.68%22。席位擴容由投票決定,設想裡的 300 擴到 500 就是這件事。

以太坊上的 DAO 用合約做治理。 以 Compound 為例:持有或受託 25,000 COMP 才能提案,2 天審閱、3 天投票,至少 400,000 票贊成才透過,透過後再等 2 天時間鎖才執行23。時間鎖是為了給反對者留出退出的時間。

這些治理都按幣加權。 Tezos 按質押,Polkadot 按鎖倉的幣乘以鎖倉時長的倍數,Cosmos 和 Compound 按持幣或受託的幣。設想去掉了幣,投票只能一席一票。

改規則的規則:Nomic 和憲法

最早把“規則可以改規則”當作玩法的是一個桌遊。 哲學家 Peter Suber 在 1982 年設計了 Nomic,遊戲的唯一玩法就是修改遊戲規則24。初始規則分兩類:100 號段不可變,200 號段可變。規則 203 說,改規則要全體一致才透過;規則 109 說,把一條不可變規則變成可變規則,必須全體一致25。203 自己是可變的,所以玩家們通常第一件事就是把“全體一致”改成“過半數”。Suber 寫這個遊戲,是為了說明一套能修改自己的規則會出現什麼悖論,他的書名就叫《自我修正的悖論》。

現實中的憲法也是分級的。 美國憲法修正案要國會兩院三分之二提出、四分之三的州批准;但“各州在參議院有平等投票權”這一條,未經該州同意不得剝奪26。德國基本法第 79 條第 3 款更進一步:人的尊嚴、民主、法治這些原則,任何修憲都不能觸動27。門檻分級、個別條款要一致同意甚至永不可改,都是為了防止一時的多數修改遊戲本身。

把它們放在一起

同類系統:讀寫許可權、投票方式和能改的規則
系統誰能讀誰投票、怎麼計票鏈上能改什麼門檻
知識必須引用
Metamath / mathlib任何人不投票,程式逐步檢查定理庫,只能引用公理和已有定理—
維基百科任何人編輯共識,管理員裁決條目,須能追到外部可靠來源—
奈米出版物任何人釋出者簽名,不投票斷言 + 出處 + 釋出資訊—
Proofgold任何人(公鏈,發幣)證明檢查器鏈上命題和證明檢查透過即成立
OriginTrail任何人(公鏈,發幣)釋出者付費,不裁決真假帶出處的知識資產—
許可鏈
Fabric通道成員組織管理員簽名通道配置、成員、背書策略預設 MAJORITY Admins
Corda交易相關方交易簽名方 + 公證人沒有全網共享的規則—
Besu QBFT網路成員驗證節點,一節點一票驗證者集合> 50%,寫死
Sawtooth網路成員授權公鑰,一鍵一票鏈的設定,含門檻本身approval_threshold
鏈上治理(公鏈)
Tezos任何人按質押加權整個協議80% 超級多數 + 動態法定人數
Polkadot按鎖倉幣 × 倍數按 15 條軌道分許可權隨時間下降的兩條曲線
Cosmos按質押加權模組引數、升級、驗證者席位數33.4% / 50% / 否決 33.4%
Compound按持幣或受託合約引數和升級400,000 票 + 2 天時間鎖
改規則的規則
Nomic玩家,一人一票全部規則,包括改規則的規則初始全體一致,常被改成過半
美國憲法國會和各州憲法2/3 + 3/4,個別條款要一致
設想
私有共識鏈只有席位席位,一席一票知識(必須引用、可推翻)、規則、席位和上限分兩級,改選民與改憲法同級
圖 3 · 定理庫和維基百科給了“知識必須有來源”,許可鏈給了“只有成員能讀寫”,鏈上治理和憲法給了“規則分級可改”,沒有一個系統把這幾樣放在一起

所以設想的每個部件都不新,組合是新的。 知識那一側,“必須引用”在定理庫裡靠程式檢查,在維基百科裡引用的是外部文獻;設想要的是引用庫裡另一條已經被成員認可的知識,並且由成員投票決定一條知識成不成立。規則那一側,最接近的是 Sawtooth 的設定交易族:授權的公鑰一鍵一票,門檻本身也能投票改。差別在於 Sawtooth 只把這套機制用在鏈的配置上,鏈上的業務內容另由應用決定;設想要把“知識是否成立”也交給同一套投票,還要讓席位數本身可以被投票擴大。鏈上治理那一側,所有成熟的系統都按幣加權,沒有一個是一席一票的。

知道了各個部件從哪來,這條鏈具體該怎麼搭?

三、系統設計

席位和驗證節點分開

第一個要分開的是“席位”和“記賬的節點”。 直覺的做法是 300 個席位就是 300 個節點,每個都參與出塊。但 BFT 共識每出一個塊,節點之間要兩兩交換投票,節點越多越慢;Cosmos Hub 這樣的公鏈也只有一兩百個驗證者,擴容一次都要專門投票。席位的作用是簽名和表決,不需要每個都參與排序。

所以設計成兩層。 席位是一把把簽名金鑰,背後是 agent;驗證節點是少數幾臺由成員輪流出的機器,只負責把交易排好序、打包成區塊。席位發出的每一筆交易都帶簽名,節點只是轉運和記錄,偽造不了席位的票。“誰能投票、多少票算透過”全部寫在應用狀態裡,和哪臺機器在出塊無關。圖 4 是原型的結構。

席位、驗證節點和應用狀態 左邊是 300 個席位,每個席位是一把金鑰,簽名後把投票交易發給任意一個驗證節點;中間是 4 個驗證節點,用 CometBFT 排序出塊,不在白名單裡的節點連不上;右邊是每個節點上都一樣的應用狀態:成員表、規則表、提案表和已透過的知識。 席位 · 300 把 ed25519 金鑰 驗證節點 · CometBFT 應用狀態 · 每個節點一份 member-0a3f1… member-107c2… … member-17vote "prop": "p4" "yes": true "sig": "5b0e…" outsider(沒有席位) code=2 not a member 虛線:鏈拒收的東西 node0127.0.0.1 node1127.0.0.2 node2127.0.0.3 node3127.0.0.4 四個節點互相投票出塊,容忍 1 個作惡 node4(不在白名單) peers=0 height=0 /p2p/filter/id/… → 拒絕連線 members300 → 301 rules7 條 factsp1 proposalp4 keyseats.cap val500 eligible300 need225 yes / no225 / 69 statuspassed rules 裡的 seats.cap 隨之變成 500
圖 4 · 席位只負責簽名和投票,驗證節點只負責排序出塊,“誰能投、多少票算過”都寫在應用狀態裡

不公開靠兩道門。 第一道在網路層:節點只接受白名單裡的節點連線,白名單本身是鏈上狀態;不在白名單裡的節點連不上任何一個驗證節點,也就同步不到任何區塊。第二道在交易層:每筆交易都要由在席的金鑰簽名,外人發來的交易在進入記憶體池之前就被拒收。讀許可權因此等於“拿到一臺成員節點的資料”,這一點在第六章還要回來討論。

一條提案怎麼走完

鏈上的提案分三類:知識、規則、入席。 知識類又分三種:新知識(定義、觀測或論斷)、反駁塊(推翻一塊已透過的知識)、複審(把待複審的塊恢復)。規則提案帶一個規則名和新值;入席提案帶新成員的公鑰。所有提案走同一套流程:

  1. 某個席位簽名提交提案。鏈檢查它是否在席、本週期的提案配額是否用完、引用的知識是否都已透過、規則名是否存在。
  2. 提案進入鏈上的那一刻,記下當時的在席人數,作為這次表決的分母。之後才入席的成員不能投這一票,防止一邊投票一邊往裡加人。
  3. 席位各自投贊成或反對。贊成票達到門檻,提案當場透過並生效;反對票多到剩下的人全投贊成也不夠,提案當場失敗;過了 vote.window 個區塊還沒結果,也算失敗。
  4. 門檻按提案型別和規則級別取:論斷、反駁和複審用 claim.pass,根塊用 root.pass,入席用 admit.pass,改規則按那條規則的級別用 rule.pass 或 meta.pass。

缺席等於沒投贊成。 門檻按在席總人數算,而不是按投票人數算。這樣一個提案不會因為只有少數人投票就透過,代價是要動員大多數人真的來投。Cosmos Hub 擴容那次的參與率是 39.68%22,在這種計票方式下根本過不了,第六章再談這個取捨。

知識塊的規則:引用、根塊和推翻

知識提案進鏈之前,先過一道格式檢查。 原型裡檢查四件事:型別是不是定義、觀測、論斷三者之一;論斷有沒有至少一條引用;觀測有沒有附證據雜湊;所有引用的塊是不是都處於“已透過”狀態。任何一條不滿足,交易在進入記憶體池之前就被拒收,連投票的機會都沒有。

門檻按型別分。 根塊(定義和觀測)用 root.pass,預設三分之二;論斷用 claim.pass,預設過半。反駁塊和論斷一樣過半,但它指向的目標必須是已透過的塊,且它本身也必須引用已透過的知識,不能只說“我不同意”。

推翻之後,沿引用圖往下標記。 反駁透過的那一刻,目標塊改成“已推翻”;鏈再沿引用圖往下走一遍,把所有直接或間接依賴它、且仍處於“已透過”的塊改成“待複審”。待複審的塊不能再被新知識引用,直到被複審恢復。複審只有在它引用的塊全都仍然有效時才能透過:如果它的依據已經被推翻,就只能改引新的知識,重新提一塊。

投票期間引用的塊被推翻了怎麼辦? 一塊知識從提交到透過要經過若干區塊,期間它引用的塊可能已經被推翻。所以生效前要再查一次引用,不滿足就作廢。

改規則的四道保護

圖 2 的分級是第一道。另外三道是在原型裡一邊測一邊補上的:

第二道:改“誰能投票”和改憲法同級。 接納新席位、改席位上限,都用 meta.pass。原因第四章會看到:如果擴容只要三分之二,一個三分之二的聯盟就能先擴容、再往裡塞自己人,直到超過四分之三。

第三道:把門檻往上調,要按新門檻來過。 如果 77% 的人可以把 meta.pass 提到 0.95,此後任何改動都要 95% 同意,相當於現在的多數替以後所有人鎖死了規則,只留 5% 多一點的人就能否決一切。所以把門檻從 0.75 提到 0.95,這次表決本身就要 95% 贊成。

第四道:表決開始時凍結選民。 前面第 2 步已經說過,入席晚於提案的成員不能給這個提案投票。

沒有幣,靠配額防刷

公鏈用手續費擋垃圾交易,這裡沒有幣,只能限量。 每個席位每 100 個區塊最多發 20 個提案(quota.per_epoch),投票不限量,因為每個提案每個席位只能投一次。配額本身是普通規則,嫌少可以投票調。

設計說完了,它真的能按設想運轉嗎?

四、原型實測

原型的搭法

原型用 CometBFT v0.38.17 做共識引擎28,應用邏輯大約 500 行 Go,和引擎編譯在同一個程序裡。在一臺 4 核機器上起 4 個驗證節點,監聽 127.0.0.1 到 127.0.0.4;創世狀態裡寫入 300 個席位的公鑰、圖 2 的規則表和 4 個節點的白名單。出塊間隔引數 timeout_commit 設為 500 毫秒,實際約 0.8 秒一個塊。另有一個驅動程式,模擬 300 個席位簽名、發交易、查狀態。

基本流程

原型上跑的十件事(300 席,4 個驗證節點)
操作門檻鏈的回應
沒有席位的金鑰提交知識—code=2 not a member
不在白名單的第 5 個節點接入—peers=0, height=0(其他節點已到 45)
觀測(根塊):水的沸點,240 席投票,230 贊成201 / 300第 201 張贊成票落地時透過,下一個區塊就生效
知識引用一條不存在的 p999—ref not accepted: p999
claim.pass 0.5 → 0.6,190 贊成201 / 300失敗:差 11 票
同上,210 贊成201 / 300透過
seats.cap 300 → 500,231 贊成225 / 300透過(開頭那條記錄)
接納 1 個新席位,再讓它給入席前開的提案投票225 / 300入席透過;投票被拒:joined after proposal
meta.pass 0.75 → 0.95,231 贊成286 / 301第 16 張反對票出現時就失敗了
一個席位連發 25 個提案20 / 週期前 20 個上鍊,後 5 個 quota exceeded

倒數第二行:門檻按新值 0.95 計算,301 席要 286 票,只要 16 席反對就不可能湊夠。

圖 5 · 席位、白名單、引用、門檻分級、選民凍結和配額都按規則執行,外人既寫不進來也同步不到

這幾件事都在預期之內,值得多看一眼的是倒數第二行。 把憲法門檻抬到 95% 看起來是“更謹慎”,但在“按新門檻來過”的規則下,16 個席位就能否決它。反過來,如果沒有這條規則,231 個席位就能把以後的門檻抬到 95%,從此 16 個席位就能否決任何憲法級修改。門檻越高,少數派的否決權越大,規則越難改,這在第六章還會遇到。

知識的引用和推翻

下面用沸點這個例子,在原型上走一遍知識的一生。 先提交三塊根:標準大氣壓的定義 p2、按 IPTS-68 溫標定義攝氏度的 p1、一條觀測 p3(標準大氣壓下沸點 100.000 °C,附測量記錄的雜湊)。三塊根各拿到 201 票,正好是三分之二。一條不附證據雜湊的觀測被拒收:observation needs evidence hash。

接著是三條論斷。 p4“海平面附近煮開的水約 100 °C”和 p5“溫度計的 100 °C 刻度可以用沸水校準”都引用 p3,p6“高壓鍋內沸點更高”只引用 p2,各拿到 150 票過半透過。一條不帶任何引用的論斷被拒收:claim must cite accepted knowledge;一條引用了不存在的 p99 的論斷也被拒收:ref not accepted: p99。

然後推翻 p3。 成員先提交按 ITS-90 定義攝氏度的 p7 和新的觀測 p8(約 99.974 °C),再提交反駁塊 p9,以 p8 為依據、以 p3 為目標。p9 透過的同一個區塊裡,p3 變成已推翻,p4、p5 自動轉為待複審,p6 保持不變。圖 6 是推翻之後的引用圖。

原型裡的引用圖和一次推翻 上排是三個根塊:標準大氣壓和兩種溫標的定義;中排是兩條沸點觀測,100.000 °C 那條被反駁塊 p9 推翻,畫成虛線;下排是六條論斷,直接引用被推翻觀測的 p4、p5 自動轉為待複審,只引用標準大氣壓的 p6 不受影響,改引新觀測的 p10、p11 正常透過。底部列出推翻之後被鏈拒收的兩個操作。 引用圖 · 箭頭從知識塊指向它引用的塊 target:推翻 p2 definition ✓ 標準大氣壓 101.325 kPa p1 definition ✓ 攝氏度按 IPTS-68 p7 definition ✓ 攝氏度按 ITS-90 p3 observation 推翻 沸點 100.000 °C p8 observation ✓ 沸點 99.974 °C p6 claim ✓ 高壓鍋沸點更高 p4 claim 複審 開水約 100 °C p5 claim 複審 沸水校準 100 °C p9 反駁 ✓ 按 ITS-90 複測 p10 claim ✓ 開水約 100 °C p11 claim ✓ 校準取 99.97 °C 虛線:p3 已被 p9 推翻,從此不能再被引用 p6 只引用 p2,不受影響 新論斷引用 p3 → ref not accepted: p3 提案“複審維持 p4” → basis overturned, cite new knowledge instead
圖 6 · 推翻一條觀測後,依賴它的論斷自動轉為待複審,不依賴它的不受影響;想保留結論,只能改引新的知識重新提

推翻以後,舊結論不會悄悄留下來。 有人想再引用 p3,被拒收;有人想把 p4 原樣複審恢復,也被拒收,因為它唯一的依據已經不在了。想保留“開水約 100 °C”這個結論,只能改引 p8 重新提,也就是 p10,開頭那條記錄就是它。p5 那條“用沸水校準 100 °C 刻度”沒有人改寫,就一直停在待複審,提醒後來的人這裡有一處需要修訂;後來有人提了 p11“按 ITS-90 校準時沸水點應標 99.97 °C”。

三分之二的聯盟能不能借擴容奪權

真正要測的是分級能不能擋住一個有組織的聯盟。 假設 300 席裡有 201 席(67%)是一夥的。按圖 2,它剛好夠改普通規則,不夠改憲法級規則。它能不能繞過去?

先在一個“樸素版”上試:擴容和入席都只要三分之二。 聯盟分三步走。第一步,提案把 seats.cap 從 300 改成 500,聯盟 201 票贊成,正好夠 201 票的門檻,透過。第二步,聯盟成員逐個提案接納自己控制的新金鑰,每接納一個,這個新席位就加入聯盟,下一次表決時多一票。第三步,聯盟提案把 meta.pass 從 0.75 改成 0.5。圖 7 是原型裡實測的過程。

聯盟借擴容奪權 橫軸是聯盟塞進來的傀儡席位數,從 0 到 200;縱軸是聯盟佔全體席位的比例。比例從 67% 一路漲到 80.2%,在第 96 個傀儡入席時越過 75% 的憲法級門檻;最後聯盟把 meta.pass 從 0.75 改成 0.5。防禦版裡擴容本身要 75% 才能過,聯盟只有 67%,停在起點。 201 席的聯盟(67%),每塞進一個自己人,佔比就高一點 60% 65% 70% 75% 80% 85% 0 50 100 150 200 已入席的傀儡數(實測逐個提案、逐個透過) admit.pass = rule.pass = 0.667 meta.pass = 0.75 第 96 個:297 / 396 = 75.0%,聯盟單獨就夠改憲法級規則 401 / 500 = 80.2% meta.pass 0.75 → 0.5:375 / 500 passed 起點:seats.cap 300 → 500 只要 2/3,201 / 300 passed 防禦版裡這一步要 3/4(225 票),聯盟 201 票,停在這裡
圖 7 · 在“改選民”和“改規則”同級之前,一個 67% 的聯盟可以先擴容、再塞人,把自己變成 80%

200 個傀儡席位逐個入席,每次都是聯盟加已入席的傀儡全票贊成。 聯盟的佔比從 67% 一路漲上去,第 96 個傀儡入席時到了 297 / 396,剛好 75%;全部入席後是 401 / 500,80.2%。最後一步要 375 票,聯盟有 401 票,meta.pass 被改成 0.5,從此任何憲法級規則都只要過半數。整個過程是 60,100 筆投票交易、450 多個區塊,原型上用了約 6 分鐘,每一步都完全合規。

防禦版只改了一處:seats.cap 和 admit.pass 升為憲法級。 同一個聯盟第一步就停住了:擴容要 225 票,聯盟只有 201 票,剩下 99 席裡有 76 席投了反對,提案當場失敗。沒有擴容,後面兩步都無從談起。

這說明了分級要分對地方。 門檻只管“規則怎麼改”是不夠的,“誰來投票”同樣是規則,而且是更根本的那一條。美國憲法把參議院平等代表權單獨保護起來26,道理是一樣的:選民構成一變,其他條款的門檻就都變了。

節點多了,出塊慢多少

設計裡把席位和節點分開,前提是節點數不必很大。 為了看節點數對出塊的影響,在同一臺機器上分別起 4 到 64 個驗證節點,各發 20 筆交易,量出塊間隔和一筆交易從發出到上鍊的時間。

驗證節點數和出塊(同一臺 4 核機器,timeout_commit = 500 ms)
驗證節點平均出塊間隔交易上鍊 p50交易上鍊 p90
4800 ms810 ms813 ms
8836 ms819 ms894 ms
16863 ms833 ms850 ms
32963 ms948 ms1,055 ms
643,492 ms5,736 ms7,301 ms

每組發 20 筆交易。把 timeout_commit 降到 100 ms 再測一輪,4 個和 16 個節點約 0.42 秒一個塊,64 個節點仍要 2.9 秒。

圖 8 · 16 個節點以內出塊速度幾乎不變,64 個節點擠在一臺機器上時慢了 4 倍多

4 到 16 個節點幾乎看不出差別,32 個開始變慢,64 個明顯變慢。 要注意這是所有節點擠在一臺 4 核機器上的結果:64 個節點時,慢的主要原因是 CPU 不夠分,而不是網路。真實部署裡節點分散在不同機器上,CPU 不是瓶頸,但網路延遲會疊加進每一輪投票。結論只是定性的:幾個到幾十個驗證節點足夠,300 個席位不必都去出塊。

原型說明這套規則能執行、能擋住一種有代表性的攻擊。但開頭說“在鏈上做比在鏈外做便宜”,這一點成立嗎?

五、共識的收益和代價

收益:共同維護一份記憶,分歧少多少

先看收益。 用一個簡單的模擬來量:300 個 agent,來自 3 個底座模型,各自記著 500 條事實。每個底座模型對每條事實記對的機率是 0.93,agent 九成照搬自己底座模型的記憶、一成自己重新記一次,記錯時隨機落在 3 個錯誤值之一。每個問題要用到 5 條事實,答案由這 5 條事實決定,此外每個 agent 每次回答還有 3% 的機率推理失誤。隨機抽兩個 agent 回答同一個問題,看它們答得一不一樣,共抽 8,000 次。

“共同維護”的那一組,事實不再各記各的。 每條事實由隨機抽的 25 個 agent 投票決定,結果寫進共享記憶,所有 agent 回答時都讀這一份。圖 9 是兩種做法的結果。

各自記憶和共同維護一份記憶(300 個 agent,3 個底座模型)
各自記憶共同維護一份記憶
單條事實的正確率0.929(每個 agent)0.994(共享的那一份)
兩個 agent 答案不一致41.6%6.5%
其中由記憶不同引起的92%0%,只剩推理失誤
答對的比例68.6%93.4%
兩個 agent 答案一致但都錯7.2%3.3%,這時通常是所有人一起錯

各自記憶時,同一個底座模型記錯的事實會被它的大部分 agent 一起記錯,所以“一致但都錯”也不少。共享記憶的 3.3% 來自共享事實本身記錯:每條 0.6% 的錯誤率,5 條裡有一條錯的機率約 3%。

圖 9 · 共同維護一份記憶,兩兩分歧從 41.6% 降到 6.5%,剩下的分歧都出在推理上;代價是共享的那份錯了,所有人一起錯

分歧降了六倍多,而且剩下的分歧性質變了。 各自記憶時,九成以上的分歧來自“記的不一樣”,兩個 agent 爭論半天,其實是在比誰的記憶對。共享記憶後,分歧只剩推理失誤,而且雙方引用的塊 id 一模一樣,一眼就能看出問題不在底稿。

代價是錯誤變成了全體的。 共享記憶裡一條事實錯了,所有 agent 都會在用到它的問題上一起答錯,這時連“有分歧”這個報警訊號都沒有了。這正是推翻機制要存在的理由:共享的底稿必須隨時可以被一塊有依據的反駁挑戰,否則“分歧少”就會變成“錯得整齊”。

代價:問題來之前先付的錢

一篇 2026 年 10 月的論文給這類成本起了個名字:記憶稅。 它比較了兩種做法:Mem0、Zep 這類“智慧體記憶”系統在問題出現之前,先用模型把對話提煉成事實或知識圖,問題來了再檢索;另一種是什麼都不提煉,讓 agent 拿著原始記錄自己搜。在 LoCoMo 的一段 419 輪對話、152 個問題上,用 Claude Opus 5.5 時,Mem0 光“建記憶”就花了 25.88 美元,比把全文直接塞給模型回答完全部問題的 17.84 美元還貴,要問到大約 596 個問題才回本;而讓 Pi 代理自己檢索原文,每題約 0.046 美元,正確率 99%29。為模型不需要的記憶提前付的錢,論文管它叫記憶稅。

論文的第二個發現是記憶有上限,由寫的那一方決定。 Zep 的知識圖如果由 GPT-4o-mini 寫,換成 Opus 5.5 來讀,正確率只有 45%;同一張圖由 Opus 5.5 寫,Opus 5.5 讀是 87%29。寫的時候漏掉的東西,讀得再好也找不回來。

共識鏈也是在問題來之前先付錢。 一條知識要有人提出,要有一批席位讀過、查過、投了票,這些都發生在任何人需要用它之前。這筆錢可以叫共識稅。記憶稅的兩個發現在這裡都有對應:一條共識值不值,看它以後被用多少次;共識的質量,不會超過投票那批 agent 的水平。

算一筆賬

設每個席位核查一條知識的成本是 c。 一條知識要 V 個席位核查投票,建成的成本大約是 V·c,提案本身的成本相比之下可以忽略。之後每有一個 agent 直接用它、而不是自己從頭核查,就省下一次 c,讀鏈上記錄、驗簽名的成本幾乎為零。所以:

回本所需的使用次數≈V⋅cc=V\text{回本所需的使用次數} \approx \frac{V \cdot c}{c} = V

一條共識至少要被用到和投票人數一樣多的次數,才不虧。 這個結論和 c 的具體數值無關。為了有個量級,借用論文裡 Pi + Opus 5.5 每題 0.046 美元作為核查一次的成本(檢索一段記錄回答一個問題,和核查一條結論的工作量大致相當,這是一個近似)。

投票人數還決定了共識的質量上限。 多數票越來越準的前提是投票者相互獨立30。agent 來自少數幾個底座模型,彼此高度相關。用一個簡單的模擬來看:3 個底座模型,每個答對一道題的機率 0.7,每個 agent 九成跟著自己的底座模型走、一成反著來,個體準確率約 0.66,每種人數模擬 20,000 次。圖 10 把成本、回本次數和準確率放在一起。

每條知識的共識稅:投票人數 V 的取捨
誰來投V建一條的成本多數票準確率(3 個底座)同等個體、相互獨立時
全體過半(300 席 × 0.5)150$6.90≈ 0.787> 0.999
抽 51 席51$2.350.7840.992
抽 25 席25$1.150.7840.952
抽 9 席9$0.410.7600.844
1 個 agent 自己查1$0.0460.6610.658

成本按每席核查一次 0.046 美元估算;回本所需的使用次數約等於 V。準確率是模擬結果:3 個底座模型時,上限是“3 個模型裡多數答對”的機率 0.7³ + 3 × 0.7² × 0.3 ≈ 0.784。

圖 10 · 投票者相關時,25 個人以後再加人幾乎不提高準確率,成本卻照樣線性增長

全體投票是最貴、也幾乎最不划算的選擇。 150 席投票和 25 席投票的準確率只差 0.003,成本差 6 倍,回本所需的使用次數也從 25 次變成 150 次。真正限制準確率的是底座模型有幾種,而不是人數,這和記憶稅論文裡“寫的一方決定上限”是同一件事。

和鏈外比,什麼時候划算? 如果幾千個 agent 都要用同一條知識,比如 3,000 個,各自核查一遍要 3,000 × 0.046 ≈ 138 美元;抽 25 席在鏈上核查一次是 1.15 美元,鏈上明顯便宜。如果一條知識只有三五個 agent 會用,那它在鏈上就是純粹的稅:25 個人替 3 個人查了一遍。所以“在鏈上做比在鏈外做便宜”只對被廣泛複用的知識成立。

由此改的三處設計

知識改由抽籤的評審團投票,規則仍由全體投票。 每條知識提案用提案所在區塊的雜湊做隨機種子,從在席成員裡抽 25 席組成評審團,按底座模型分層抽,儘量讓每種模型都有人;門檻按評審團人數算。規則和入席很少發生,卻決定所有人的處境,仍由全體投票。這一條在原型裡還沒有實現,是按上面的賬推出來的。

知識要附上原始證據,不能只交結論。 記憶稅論文裡,強模型自己檢索原文,比讀提煉好的記憶更準也更便宜29。知識塊如果只有一句結論,後來的 agent 只能相信它;附上原始資料或原文的雜湊和位置,後來的 agent 既可以直接用結論,也可以在需要時回頭查原文,共識就不會成為“寫的一方”設下的天花板。

按複用情況決定一條知識要不要上鍊。 只被一兩個 agent 用到的東西,留在各自的記憶裡;被反覆引用的,才值得交一次共識稅。引用次數本身就記在鏈上,可以作為“這類知識值不值得上鍊”的依據。

六、幾個繞不開的問題

為什麼不用一個資料庫

如果 300 個席位都歸同一個運營者,這條鏈沒有必要。 一個帶許可權控制的資料庫,加一份簽名的追加日誌,就能做到“只有成員讀寫、每條記錄可追溯”,規則投票也可以寫成資料庫裡的一段程式。資料庫想容忍機器宕機,用 Raft 就夠了,etcd、Consul 都是這麼做的;但 Raft 假定節點不會說謊31。

鏈的價值只在一個前提下成立:成員之間互不完全信任,又不願意把賬交給其中任何一個人管。 這時需要 BFT 共識,讓哪怕三分之一以下的節點作惡,賬本也不會被改寫;規則投票也要由大家共同執行,而不是跑在某一方的伺服器上。幾千個 agent 如果來自不同的公司、不同的個人,這個前提成立;如果都是同一家公司部署的,就不成立。

不公開能做到什麼程度

白名單擋得住外人,擋不住成員自己。 任何一個席位都能讀到全部內容,就能把它複製出去。agent 比人更容易洩露:一次提示注入,就可能讓它把讀到的東西原樣發到別處。Fabric 的做法是把更敏感的資料放進私有資料集合,只發給少陣列織、其他節點只拿雜湊9,可以借用;但只要一條知識要讓 25 個評審員讀,它就至少暴露給了 25 個席位。

席位退出以後,它讀過的東西收不回來。 鏈可以把一個席位踢出去,讓它以後讀不到新內容,但它已經同步過的歷史仍然在它手裡。所謂“不公開”,準確的說法是“只對在席和曾經在席的成員公開”。

席位稀缺,不等於觀點獨立

一個運營者可以控制很多席位。 入席要四分之三透過,擋得住明目張膽的塞人,但擋不住一家公司從一開始就佔了 100 個席位。圖 7 的聯盟本來就有 201 席,它不需要任何技巧就能改所有普通規則。

席位背後的 agent 也可能來自同一個底座模型。 300 個席位、300 張票,看起來很多,按圖 10 的模擬,如果只有 3 種底座模型,它們的多數票和 25 個人的多數票幾乎一樣準。稀缺的席位防住了女巫攻擊,卻沒有帶來獨立的判斷。

規則改規則,總有一個邊界

分級只是把邊界往後推。 只要 75% 的人站在一起,任何規則都能改,包括“75%”本身。Nomic 最初要求改不可變規則必須全體一致25,德國基本法乾脆規定某些原則永不可改27,但前者讓一個人就能卡住所有人,後者的修改最終只能靠制定一部新憲法。沒有一種規則能同時做到“誰也改不掉”和“需要時改得動”。

門檻高了,規則就僵住。 按在席總人數計票、缺席算反對,75% 的門檻意味著 300 席裡要有 225 席真的來投贊成。鏈上治理的參與率通常不高,Cosmos Hub 擴容那次只有 39.68%22。Tezos 和 Polkadot 都按參與情況調整門檻,前者的法定人數隨往屆參與率浮動18,後者的支援率要求隨時間下降20。設想要借用其中一種,否則一年以後,可能連“把門檻調低一點”這種提案都湊不齊票。

投票仍然不等於真

換成私有鏈、去掉幣,沒有改變“多數同意不等於正確”。 一條知識透過了,說明的是“抽到的這批評審員多數認可它”,不是“它是對的”。數學結論有檢查器可用時,應該交給檢查器;實證結論要附資料、允許以後被新提案推翻;只有約定類的內容(單位怎麼定義、某個術語指什麼),投票本身就是答案。私有鏈讓這些投票變得可信、可追溯,但不會讓它們變得更準。

引用對了,推理不一定對。 格式檢查只能確認一條論斷引用的塊都已透過,確認不了“從這幾塊真的推得出這個結論”。把“√2 是無理數”的證明原樣抄過來,結論改成“√4 是無理數”,引用一個不改,照樣能透過格式檢查。攔住它的只能是評審員真的去讀論證,或者對數學類的塊直接交給證明檢查器。

整張引用圖不會比根塊更可靠。 所有論斷最終都落在定義和觀測上,根塊錯了,下游的推理再嚴密也是錯的;根塊被推翻,牽動的塊也最多。所以根塊的門檻要更高、證據要附全,複審的成本也要事先想好由誰來出。

七、回到那條記錄

現在可以回頭看開頭那兩條記錄。

p10 憑什麼成立? 因為它引用的 p8 已經透過,而 p8 又落在 ITS-90 和標準大氣壓兩塊根上。它的前身 p4 說的是同一件事,但引用的是後來被推翻的 p3,於是被自動轉為待複審;想保留這個結論,只能改引 p8 重新提。第一條知識從哪來、知識錯了怎麼辦,答案都在這張引用圖裡:根塊用更高的門檻立起來,錯了就由一塊有依據的反駁推翻,下游自動等待複審。

共同維護這份記憶有什麼用? 在模擬裡,兩個 agent 答同一個問題,各自記憶時有 41.6% 的情況答得不一樣,共享一份記憶後降到 6.5%,剩下的分歧都出在推理上,而且雙方引用的塊一模一樣,一眼就能看出問題不在底稿。代價是共享的那份錯了,所有人一起錯,所以推翻機制必須一直開著。

再看 p4。

它為什麼能透過? 因為 seats.cap 是憲法級規則,300 個席位裡有 225 個投了贊成,正好是四分之三。同樣的提案在樸素版裡只要 201 票,一個三分之二的聯盟就能獨自透過,再借此把自己變成 80%。

沒有幣,鏈靠什麼防止亂寫? 靠席位:只有在席的金鑰能簽名,不在白名單的節點連不上;每個席位的提案有配額。防的是外人,不是成員。

它和一個共享資料庫有什麼不同? 只有在成員互不信任、又不願交給任何一方託管時才不同:BFT 讓少數作惡的節點改不了賬,規則由大家共同執行。都歸一個運營者的話,沒有不同。

在鏈上做真的更便宜嗎? 一條知識的共識稅約等於“評審人數 × 核查一次的成本”,被用到的次數超過評審人數才回本。被幾千個 agent 共用的知識,鏈上便宜得多;只有幾個 agent 用的,上鍊是浪費。

小結

  1. 設想的樣子:一條只給少數席位讀寫的鏈,不發幣、不做交易,只記知識和規則。知識按不超過 1 KB 的塊存放,論斷必須引用已透過的知識,定義和觀測是引用圖的根,已透過的知識可以被有依據的反駁推翻;規則也是鏈上狀態,分普通和憲法兩級,席位上限也是一條規則,從 300 擴到 500 要投票。
  2. 同類系統:Metamath、mathlib 用程式檢查引用,維基百科和奈米出版物要求外部來源,Proofgold、OriginTrail 把知識放上公鏈;Fabric、Corda、Besu、Sawtooth、CometBFT 提供了“只有成員能讀寫”;Tezos、Polkadot OpenGov、Cosmos、Compound 提供了“投票改規則”,但都按幣加權;Nomic 和憲法提供了“改規則的規則要更高門檻”。最接近的是 Sawtooth 的設定交易族,它只管配置,不管知識。
  3. 系統設計:席位和驗證節點分開,幾個到幾十個節點出塊,幾百個席位簽名投票;提案開始時凍結選民,缺席算不贊成;抬高門檻要按新門檻過;沒有手續費,用提案配額防刷。
  4. 原型實測:CometBFT 上 300 席的原型裡,外人寫不進、連不上,門檻分級和配額都按規則執行。不帶引用的論斷、不附證據的觀測、引用未透過塊的提案都被拒收;推翻 100.000 °C 那條觀測後,依賴它的兩條論斷自動轉為待複審,不依賴它的不受影響。在擴容只要三分之二的樸素版裡,一個 67% 的聯盟擴容後塞進 200 個自己人,佔比升到 80.2%,把憲法門檻從 0.75 改成 0.5;把擴容和入席升為憲法級後,第一步就被擋住。4 到 16 個驗證節點出塊速度幾乎不變。
  5. 收益和代價:共同維護一份記憶後,模擬裡兩兩分歧從 41.6% 降到 6.5%,剩下的都是推理分歧,但共享記憶錯了會讓所有人一起錯。代價是共識稅:和記憶稅一樣,共識是在問題來之前付的錢,一條知識要被用到和評審人數一樣多的次數才回本;投票者來自少數底座模型時,25 人以後再加人幾乎不提高準確率。所以知識用抽籤的小評審團、附原始證據,只把被廣泛複用的知識放上鍊。
  6. 繞不開的問題:成員互不信任是用鏈的前提;“不公開”只對外人成立;席位稀缺不等於觀點獨立;任何規則都能被足夠大的多數改掉,門檻太高又會僵住;引用對了推理不一定對,整張引用圖不會比根塊更可靠;投票讓共識可信、可追溯,但不會讓它更準。

參考資料

參考資料

  1. Münchhausen trilemmaWikipediaen.wikipedia.org ↗要求每個命題都給出理由,最後只能落到無窮後退、迴圈論證或不再論證的起點三者之一。https://en.wikipedia.org/wiki/M%C3%BCnchhausen_trilemma ↩

  2. IAPWS FAQ:What is the boiling point of water?IAPWSiapws.org ↗VSMOW 水在一個標準大氣壓下:按 ITS-90 約 99.974 °C;嚴格按熱力學溫度約 99.984 °C。https://www.iapws.org/faq/boil.html ↩

  3. MetamathWikipediaen.wikipedia.org ↗set.mm 從 1992 年開始積累,每條定理只能由公理和前面的定理推出,網頁上列出它依賴哪些公理、被哪些定理引用。https://en.wikipedia.org/wiki/Metamath ↩

  4. Mathlib statisticsLean community · 2026-10-22leanprover-community.github.io ↗2026-10-22 抓取:約 139,557 個定義、291,055 條定理、772 位貢獻者。https://leanprover-community.github.io/mathlib_stats.html ↩

  5. Wikipedia: No original researchWikipediaen.wikipedia.org ↗原創研究指“找不到可靠的已發表來源的材料”;舉證責任在新增內容的人。https://en.wikipedia.org/wiki/Wikipedia:No_original_research ↩

  6. Nanopublications: A Growing Resource of Provenance-Centric Scientific Linked DataTobias Kuhn 等 · arXiv · 2018-09-18arxiv.org ↗一條奈米出版物 = 斷言 + 出處 + 釋出資訊三個 RDF 命名圖;已超過 1000 萬條,多數來自生命科學。https://arxiv.org/abs/1809.06532 ↩

  7. Proofgold: Blockchain for Formal MethodsChad E. Brown, Cezary Kaliszyk, Thibault Gauthier, Josef Urban · FMBC 2022 · 2022drops.dagstuhl.de ↗高階邏輯證明檢查器是共識的一部分;PoS 加燒 Litecoin;交出證明就能領走命題上掛的賞金。https://drops.dagstuhl.de/opus/volltexte/2022/17185/ ↩

  8. OriginTrail:DKG key conceptsOriginTraildocs.origintrail.io ↗Knowledge Asset 帶可驗證的出處和釋出者;釋出知識要付 TRAC,跑節點要質押 TRAC;不對內容真假做裁決。https://docs.origintrail.io/key-concepts/dkg-key-concepts ↩

  9. Hyperledger Fabric:Private dataHyperledger Fabric · 2026-10-23hyperledger-fabric.readthedocs.io ↗通道內所有成員都能看到整本賬;私有資料集合只把資料發給集合成員,其他節點和排序服務只拿到雜湊。https://hyperledger-fabric.readthedocs.io/en/latest/private-data/private-data.html ↩ ↩2

  10. Hyperledger Fabric:PoliciesHyperledger Fabric · 2026-10-23hyperledger-fabric.readthedocs.io ↗應用通道預設策略:Readers 為 ANY Readers,Writers 為 ANY Writers,Admins 為 MAJORITY Admins,Endorsement 為 MAJORITY Endorsement;每個配置項都掛一條修改策略(mod_policy),改它要湊夠對應的簽名。https://hyperledger-fabric.readthedocs.io/en/latest/policies/policies.html ↩

  11. Version 3.0 of Hyperledger Fabric, an LF Decentralized Trust Project, Now AvailableLF Decentralized Trust · 2024-09-16lfdecentralizedtrust.org ↗3.0 起排序服務可以用 SmartBFT,容忍不到三分之一的排序節點作惡;此前只有 Raft,只防宕機、不防作惡。https://www.lfdecentralizedtrust.org/announcements/version-3.0-of-hyperledger-fabric-an-lf-decentralized-trust-project-now-available ↩

  12. Corda: A Distributed Ledger(技術白皮書)Mike Hearn, Richard Gendal Brown · R3api.corda.net ↗資料按需知曉(need-to-know)分享,沒有全網廣播;公證人(notary)只負責“同一份狀態沒被花兩次”。https://api.corda.net/en/pdf/corda-technical-whitepaper.pdf ↩

  13. Besu:Configure QBFT consensusHyperledger Besu · 2026-10-23docs.besu-eth.org ↗用 qbft_proposeValidatorVote 提議增刪驗證者,超過 50% 現有驗證者提出同樣的提議就生效;至少 4 個驗證者才能容錯,掉線超過三分之一就停鏈。https://docs.besu-eth.org/private-networks/how-to/configure/consensus/qbft ↩

  14. Migrating from Quorum to Hyperledger BesuKaleidokaleido.io ↗ConsenSys 已不再為 GoQuorum 提供持續支援,2023 年指定 Kaleido 協助客戶遷移到 Besu。https://www.kaleido.io/blockchain-blog/migrating-from-quorum-to-hyperledger-besu ↩

  15. Sawtooth:Settings Transaction FamilyHyperledger Sawtoothsawtooth.splinter.dev ↗sawtooth.settings.vote.authorized_keys 列出能提議和投票的公鑰,sawtooth.settings.vote.approval_threshold 是透過所需票數(預設 1);贊成票達到門檻,設定就寫進狀態。https://sawtooth.splinter.dev/docs/1.2/transaction_family_specifications/settings_transaction_family.html ↩

  16. Announcing the release of Hyperledger Sawtooth 1.0LF Decentralized Trustlfdecentralizedtrust.org ↗頁首說明:應維護者要求,Sawtooth 於 2024 年 2 月 1 日轉為停止維護(end of life)狀態。https://www.lfdecentralizedtrust.org/hyperledger-sawtooth-1-0 ↩

  17. CometBFT v0.38:ABCI++ Application RequirementsGitHubgithub.com ↗建立 p2p 連線前,CometBFT 會嚮應用發 /p2p/filter/addr/… 和 /p2p/filter/id/… 兩個查詢,任一返回非零就拒絕連線;處理高度 H 時返回的驗證者變更在 H+2 生效。https://github.com/cometbft/cometbft/blob/v0.38.x/spec/abci/abci%2B%2B_app_requirements.md ↩

  18. Tezos:GovernanceTezos · 2026-10-23docs.tezos.com ↗五個階段(提案、探索、冷卻、推廣、採納),每段 14 個週期,約 14 天;只有質押的委託人能投票,按質押加權;探索和推廣兩輪要求贊成超過(贊成 + 反對)的 80%,法定人數按往屆參與率動態調整。https://docs.tezos.com/architecture/governance ↩ ↩2

  19. Tezos:History of amendmentsTezos · 2026-10-23docs.tezos.com ↗從 2019 年 5 月的 Athens 到 2026 年 6 月 30 日的 Ushuaia,共 21 次協議升級透過投票自動生效;Brest A 和最初的 Carthage 兩個提案被否決。https://docs.tezos.com/architecture/governance/amendment-history ↩

  20. Polkadot OpenGovPolkadot Wiki · 2026-10-23wiki.polkadot.com ↗15 個來源(origin),各走自己的軌道;每條軌道有自己的押金、決策期、確認期、最短生效期和“贊成率曲線”“支援率曲線”;Root 軌道同時只能決一個提案,週期最長;鎖倉越久票越重,從 0.1 倍到 32 倍。https://wiki.polkadot.com/learn/learn-polkadot-opengov/ ↩ ↩2

  21. Cosmos SDK:x/govGitHubgithub.com ↗參數列示例:quorum 0.334、threshold 0.5、veto_threshold 0.334、加速提案 0.667;提案裡的訊息由 gov 模組賬戶代簽執行,模組用 authority 欄位限定只有治理能改引數。https://github.com/cosmos/cosmos-sdk/blob/main/x/gov/README.md ↩

  22. Cosmos Hub Proposal #797:Increase the validator set of Cosmos Hub to 180 from 175Valopers · 2023-06-13cosmos.valopers.com ↗2023-05-30 至 06-13 投票:贊成 75.29%、反對 12.18%、否決 0.01%、棄權 12.53%,參與率 39.68%。https://cosmos.valopers.com/proposals/797 ↩ ↩2 ↩3

  23. Compound II:GovernanceCompounddocs.compound.xyz ↗持有或受託 25,000 COMP 才能發起提案;2 天審閱期、3 天投票期,至少 400,000 票贊成才能透過;透過後進入 2 天時間鎖再執行。https://docs.compound.xyz/v2/governance/ ↩

  24. NomicWikipediaen.wikipedia.org ↗Peter Suber 1982 年設計,首次發表在 Hofstadter 的《科學美國人》專欄;Agora 從 1993 年玩到現在。Suber 的書名就叫《自我修正的悖論》(1990)。https://en.wikipedia.org/wiki/Nomic ↩

  25. Nomic:Initial Set of RulesPeter Suber · FOLDOCfoldoc.org ↗規則 109:把不可變規則轉為可變,必須全體一致;規則 203(可變):規則修改要全體一致才透過;規則 204 預告“如果以後不需要一致了”的情形。https://foldoc.org/pub/games/nomic/original ↩ ↩2

  26. Article Five of the United States ConstitutionWikipediaen.wikipedia.org ↗修正案由國會兩院三分之二提出、四分之三的州批准;但“各州在參議院有平等投票權”這一條,未經該州同意不得剝奪。https://en.wikipedia.org/wiki/Article_Five_of_the_United_States_Constitution ↩ ↩2

  27. Eternity clauseWikipediaen.wikipedia.org ↗德國基本法第 79 條第 3 款:人的尊嚴、民主、法治等原則,任何修憲都不能觸動。https://en.wikipedia.org/wiki/Eternity_clause ↩ ↩2

  28. cometbft/cometbft v0.38.17GitHubgithub.com ↗原型用的共識引擎版本,應用以 ABCI 2.0 介面嵌在同一個程序裡。https://github.com/cometbft/cometbft/tree/v0.38.17 ↩

  29. MemoryTax: The Bitter Lesson of Agent MemoryZedong Peng · arXiv · 2026-10-21arxiv.org ↗LoCoMo 一段 419 輪的對話、152 個問題:用 Claude Opus 5.5 時,Mem0 光建記憶就花 25.88 美元,比全文直接回答完所有問題的 17.84 美元還貴,要約 596 個問題才回本;Zep 的記憶由 GPT-4o-mini 寫、換 Opus 5.5 來讀只有 45%,由 Opus 5.5 寫則是 87%;讓 Pi 代理自己檢索原文,每題約 0.046 美元,正確率 99%。https://arxiv.org/abs/2610.29823 ↩ ↩2 ↩3

  30. Condorcet's jury theoremWikipediaen.wikipedia.org ↗前提是投票者相互獨立、每人答對機率大於 1/2;滿足時人越多,多數票越可能正確。https://en.wikipedia.org/wiki/Condorcet%27s_jury_theorem ↩

  31. The Raft Consensus Algorithmraft.github.ioraft.github.io ↗etcd、Consul 等用的共識演算法;容忍少數節點宕機,但假定節點不會說謊。https://raft.github.io/ ↩