﻿---
title: "知识共识链：用 PoS 和智能体投票给事实与逻辑记账"
description: "设想一条链：每条知识不超过 1 KB，必须引用链上已有的知识，由一群 agent 投票决定是否成立，提交者和投票者都能领到新发的币。顺着这个设想往下走：它应该长什么样、哪些部分已经有人做过、一条知识的一生怎么走、币怎么发，再中立地看几个逻辑上的问题：根从哪来、引用对了推理是否就对、多数票和真相是什么关系、投票权和奖励会把参与者引向哪里，以及它和 Lean 形式化证明到底谁更普适。"
pubDate: 2026-10-22
tags: ["区块链", "知识表示", "形式化证明", "机制设计", "智能体"]
hero: "./hero.svg"
refs:
  - id: mathlib-sqrt2
    title: "mathlib4：Mathlib/NumberTheory/Real/Irrational.lean"
    url: https://github.com/leanprover-community/mathlib4/blob/master/Mathlib/NumberTheory/Real/Irrational.lean
    site: GitHub
    date: 2026-10-21
    note: "第 141 行：`theorem irrational_sqrt_two : Irrational (√2) := by simpa using Nat.prime_two.irrational_sqrt`。文中引用的是提交 `6ea1739`。"
  - id: mathlib-stats
    title: "Mathlib statistics"
    url: https://leanprover-community.github.io/mathlib_stats.html
    site: Lean community
    date: 2026-10-22
    note: "2026-10-22 抓取：约 139,557 个定义、291,055 条定理、772 位贡献者。"
  - id: metamath
    title: "Metamath"
    url: https://en.wikipedia.org/wiki/Metamath
    site: Wikipedia
    note: "set.mm 从 1992 年开始积累，基于一阶逻辑和 ZFC；每条定理只能由公理和前面的定理推出，网页上列出它依赖哪些公理、被哪些定理引用。"
  - id: wiki-nor
    title: "Wikipedia: No original research"
    url: https://en.wikipedia.org/wiki/Wikipedia:No_original_research
    site: Wikipedia
    note: "原创研究指“找不到可靠的已发表来源的材料”，也包括把来源拼起来推出来源本身没说的结论；举证责任在添加内容的人。"
  - id: nanopub
    title: "Nanopublications: A Growing Resource of Provenance-Centric Scientific Linked Data"
    url: https://arxiv.org/abs/1809.06532
    author: "Tobias Kuhn 等"
    site: arXiv
    date: 2018-09-18
    note: "一条纳米出版物 = 断言 + 出处 + 发布信息三个 RDF 命名图；已超过 1000 万条，多数来自生命科学。"
  - id: proofgold
    title: "Proofgold: Blockchain for Formal Methods"
    url: https://drops.dagstuhl.de/opus/volltexte/2022/17185/
    author: "Chad E. Brown, Cezary Kaliszyk, Thibault Gauthier, Josef Urban"
    site: FMBC 2022
    date: "2022"
    note: "高阶逻辑证明检查器是共识的一部分；PoS 加烧 Litecoin；命题有主人，交出证明就能领走赏金。"
  - id: proofgold-explorer
    title: "Exploring Formal Math on the Blockchain: An Explorer for Proofgold"
    url: https://arxiv.org/abs/2509.08267
    site: arXiv（CICM 2025）
    date: 2025-09
    note: "理论由原始常量、类型和公理组成，用 Merkle 根当 256 位标识；前 5000 个区块自动给伪随机命题挂赏金。"
  - id: origintrail
    title: "OriginTrail：DKG key concepts"
    url: https://docs.origintrail.io/key-concepts/dkg-key-concepts
    site: OriginTrail
    date: 2026-10-22
    note: "Knowledge Asset 带可验证的出处和发布者；TRAC 总量 5 亿，发布知识要付 TRAC，跑节点要质押 TRAC；不对内容真假做裁决。"
  - id: desci
    title: "DeSci Nodes：dPID"
    url: https://docs.desci.com/learn/open-state-repository/pid
    site: DeSci Labs
    date: 2026-10-22
    note: "研究对象和其中每个组件都有持久标识，可按版本引用；注册合约目前由 DeSci Labs 保留管理权限。"
  - id: researchhub
    title: "Do science, earn crypto: Coinbase CEO’s other startup sees record price rally"
    url: https://blockworks.co/news/brian-armstrong-tokens-for-science
    site: Blockworks
    note: "ResearchCoin 上线时每收到一个赞发 1 RSC，每周 100 万 RSC 按赞分配并逐步减半。"
  - id: augur
    title: "What Is Augur?"
    url: https://www.coindesk.com/learn/augur
    site: CoinDesk
    note: "报告者押 REP 报结果；有争议就加倍押金再报；极端时整个市场宇宙分叉，REP 持有人自己选去哪个分支。"
  - id: uma
    title: "UMA：DVM 2.0"
    url: https://docs.uma.xyz/using-uma/voting-walkthrough/dvm-2.0
    site: UMA
    date: 2026-10-22
    note: "代币持有人 commit-reveal 投票，按 Schelling 点设计；投错或缺席每次罚质押的 0.1%。"
  - id: uma-whales
    title: "How Nine Crypto Wallets Influence Billion-Dollar Polymarket Disputes"
    url: https://www.outlookmoney.com/invest/how-nine-crypto-wallets-influence-billion-dollar-polymarket-disputes
    site: Outlook Money
    date: 2026-05-29
    note: "转述 Bloomberg（付费墙）的分析：过去三年 Polymarket 争议投票里，9 个钱包占了约一半的 UMA 票。数字是二手转述。"
  - id: kleros
    title: "Cryptoeconomics in Kleros"
    url: https://ethresear.ch/t/cryptoeconomics-in-kleros/1401
    site: ethresear.ch
    date: "2018"
    note: "质押 PNK 抽签当陪审员；投在少数一边的陪审员被罚 PNK，分给多数一边；每上诉一次陪审团大约翻倍。"
  - id: cn-repo
    title: "twitter/communitynotes"
    url: https://github.com/twitter/communitynotes
    site: GitHub
    note: "开源的评分算法：矩阵分解 r̂ = μ + i_u + i_n + f_u·f_n，用扣掉立场因子后的笔记截距 i_n 判断是否“有帮助”。"
  - id: cn-gaming
    title: "Gaming Consensus: Coordinated Manipulation in Crowdsourced Fact-Checking"
    url: https://arxiv.org/abs/2607.01824
    author: "Nikil Roashan Selvam, Jay Baxter, Keith Coleman 等"
    site: arXiv
    date: 2026-07-02
    note: "用生产数据回放：最多 10.7% 的低质量笔记只要不到 10 个协同评分就能被推过共识门槛。"
  - id: steemit
    title: "Incentivized Blockchain-based Social Media Platforms: A Case Study of Steemit"
    url: https://arxiv.org/abs/1904.07310
    author: "Chao Li, Balaji Palanisamy"
    site: ACM WebSci 2019
    date: 2019-04-15
    note: "Steemit 中超过 16% 的转账流向疑似机器人的策展账号，背后有成体系的机器人供应网络。"
  - id: yuma
    title: "Bittensor：Yuma Consensus"
    url: https://docs.learnbittensor.org/learn/yuma-consensus
    site: Bittensor
    date: 2026-10-22
    note: "验证者给矿工打权重，按质押加权汇总；高出“κ 比例质押所支持的权重”的部分被裁掉，针对的就是验证者合谋抬高某些矿工。"
  - id: primecoin
    title: "Primecoin: The Cryptocurrency Whose Mining Is Actually Useful"
    url: https://bitcoinmagazine.com/technical/primecoin-the-cryptocurrency-whose-mining-is-actually-useful-1373298534
    site: Bitcoin Magazine
    date: 2013-07
    note: "挖矿就是找 Cunningham 素数链，链的起点必须能被区块哈希整除，防止预先算好。"
  - id: grokipedia
    title: "Grokipedia launches with 885k AI-written entries; critics flag bias"
    url: https://san.com/cc/grokipedia-launches-with-885k-ai-written-entries-critics-flag-bias/
    site: Straight Arrow News
    date: 2025-10-28
  - id: iapws
    title: "IAPWS FAQ：What is the boiling point of water?"
    url: https://www.iapws.org/faq/boil.html
    site: IAPWS
    note: "VSMOW 水在一个标准大气压下：按 ITS-90 约 99.974 °C；严格按热力学温度约 99.984 °C。"
  - id: condorcet
    title: "Condorcet's jury theorem"
    url: https://en.wikipedia.org/wiki/Condorcet%27s_jury_theorem
    site: Wikipedia
    note: "前提是投票者相互独立、每人答对概率大于 1/2；满足时人越多，多数票越可能正确。"
  - id: agrippa
    title: "Münchhausen trilemma"
    url: https://en.wikipedia.org/wiki/M%C3%BCnchhausen_trilemma
    site: Wikipedia
    note: "要求每个命题都给出理由，最后只能落到无穷后退、循环论证或不再论证的起点三者之一。"
  - id: hpylori
    title: "The Nobel Prize in Physiology or Medicine 2005"
    url: https://www.nobelprize.org/prizes/medicine/2005/summary/
    site: NobelPrize.org
    note: "Barry Marshall 和 Robin Warren 因发现幽门螺杆菌及其在胃炎、消化性溃疡中的作用获奖；这一发现最初不被主流接受。"
---

设想一条链上存着这样一条记录。它不到 500 字节，说的是一件中学就学过的事：

```json
{"id":"kb:7f3a…c21","type":"claim",
 "statement":"√2 不是有理数：不存在整数 p、q（q≠0）使 (p/q)² = 2。",
 "refs":["kb:1b09… 有理数的定义",
         "kb:5d2e… 若 n² 为偶数则 n 为偶数",
         "kb:0c77… 反证法"],
 "argument":"设 p/q 为最简分数且 (p/q)²=2，则 p²=2q²，p² 为偶数，由引理 p 为偶数，记 p=2k，得 q²=2k²，q 也为偶数，与最简矛盾。",
 "author":"0x9e…41","stake":"50 KC"}
```

它引用了另外三条记录，自己不凭空断言任何东西。提交之后，二十几个 agent 读了它、投了票，它被标成“成立”。提交它的人和投赞成票的 agent 都分到了一笔新发出来的币，就像比特币矿工挖到一个区块。如果把物理世界的共识、各种数学定理都这样一条条放上去，最后得到的会不会是一张比 Lean 形式化证明覆盖面更广的知识网？

这个设想里有好几件事值得问清楚。这样的东西有人做过吗？一条记录凭什么算“成立”？币从哪里来、怎么分？“必须引用别的记录”这条规则，能不能真的挡住凭空冒出来的知识？

本文先把这个设想画完整，看清它长什么样、和哪些已有项目是亲戚，再回头一项一项检查它在逻辑上站不站得住。

## 一、设想的样子

### 两层：账本和知识

**设想里有两种“块”，先把名字分开。** 一种是账本上的区块，记的是转账、提交、投票这些交易，和比特币的区块是一回事；另一种是装知识的小单元，每条不超过 1 KB。下文把前者叫“区块”，后者叫“知识块”。

**账本层用 PoS 出块。** PoS（Proof of Stake，权益证明）不让矿工比算力，而是按质押的币多少轮流选出记账人（验证者），作恶会被罚没质押。以太坊 2022 年以后就是这样出块的。它只负责一件事：大家对“发生过哪些交易、按什么顺序”达成一致。

**知识层是一张引用图。** 每个知识块写一句结论，列出它依赖的其他知识块，再附一段不长的论证。规则是知识块必须引用链上已经被接受的知识块，引用为空的提交直接作废，用来保证“知识不能凭空冒出来”。

**知识块是否成立，由 agent 投票决定。** 提交之后进入投票期，一批 agent（可以背后是人，也可以是大模型程序）读这个知识块，判断它从引用能不能推出结论，投赞成或反对。票数够了就标为“已接受”，之后才能被别的知识块引用。

**奖励像挖矿。** 每个周期新发一笔币，一部分给记账的验证者，一部分给被接受的知识块的作者，一部分给投票的 agent。图 1 把两层画在一起，跟着开头那个 `kb:7f3a` 走一遍。

<figure class="dd dd-figure">
<div class="dd-scroll">
<svg class="dd-svg" viewBox="0 0 800 444" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="kc1-title kc1-desc">
<title id="kc1-title">账本层和知识层</title>
<desc id="kc1-desc">左边账本层三个区块：#1025 里有一笔交易提交知识块 kb:7f3a 并押 50 KC，#1026 里有 21 张对 kb:7f3a 的投票和计票结果。右边知识层是 kb:7f3a 的完整内容：类型、结论“√2 不是有理数”、三条引用、论证、作者、押金、大小 490 字节；三条引用分别指向有理数的定义、偶数引理和反证法三个知识块。</desc>
<defs>
<marker id="kc1-arrow" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path class="dd-head" d="M1 1 L7 4 L1 7"/></marker>
<marker id="kc1-arrow-acc" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path class="dd-head-acc" d="M1 1 L7 4 L1 7"/></marker>
</defs>
<rect class="dd-frame" width="800" height="444" rx="10"/>
<rect class="dd-zone" x="16" y="16" width="248" height="412" rx="8"/>
<rect class="dd-zone" x="280" y="16" width="504" height="412" rx="8"/>
<text class="t-zone" x="32" y="44">账本层 · PoS 出块</text>
<text class="t-zone" x="296" y="44">知识层 · 知识块和引用</text>
<path class="dd-edge-acc" d="M248 229 H264 Q272 229 272 221 V88 Q272 80 280 80 H296" marker-end="url(#kc1-arrow-acc)"/>
<path class="dd-edge-acc dd-dash" d="M248 349 H268 Q276 349 276 341 V270 Q276 262 284 262 H296" marker-end="url(#kc1-arrow-acc)"/>
<line class="dd-edge" x1="600" y1="126" x2="628" y2="126" marker-end="url(#kc1-arrow)"/>
<line class="dd-edge" x1="600" y1="194" x2="628" y2="194" marker-end="url(#kc1-arrow)"/>
<line class="dd-edge" x1="600" y1="262" x2="628" y2="262" marker-end="url(#kc1-arrow)"/>
<rect class="dd-card" x="32" y="64" width="216" height="110" rx="6"/>
<path class="dd-card-head" d="M38 64 H242 Q248 64 248 70 V96 H32 V70 Q32 64 38 64 Z"/>
<text class="t-name" x="48" y="85">区块 #1024</text>
<text class="t-note" x="232" y="85" text-anchor="end">验证者 v17</text>
<text class="t-val" x="48" y="113">转账 3 KC</text>
<line class="dd-hair" x1="32" y1="122" x2="248" y2="122"/>
<text class="t-val" x="48" y="139">投票 kb:5d2e ×21</text>
<line class="dd-hair" x1="32" y1="148" x2="248" y2="148"/>
<text class="t-val" x="48" y="165">出块奖励 → v17</text>
<rect class="dd-card" x="32" y="184" width="216" height="110" rx="6"/>
<path class="dd-card-head" d="M38 184 H242 Q248 184 248 190 V216 H32 V190 Q32 184 38 184 Z"/>
<text class="t-name" x="48" y="205">区块 #1025</text>
<text class="t-note" x="232" y="205" text-anchor="end">验证者 v03</text>
<text class="t-mono" x="48" y="233">提交 <tspan class="t-acc">kb:7f3a</tspan></text>
<line class="dd-hair" x1="32" y1="242" x2="248" y2="242"/>
<text class="t-val" x="48" y="259">押金 50 KC</text>
<line class="dd-hair" x1="32" y1="268" x2="248" y2="268"/>
<text class="t-val" x="48" y="285">转账 12 KC</text>
<rect class="dd-card" x="32" y="304" width="216" height="110" rx="6"/>
<path class="dd-card-head" d="M38 304 H242 Q248 304 248 310 V336 H32 V310 Q32 304 38 304 Z"/>
<text class="t-name" x="48" y="325">区块 #1026</text>
<text class="t-note" x="232" y="325" text-anchor="end">验证者 v11</text>
<text class="t-mono" x="48" y="353">投票 <tspan class="t-acc">kb:7f3a</tspan> ×21</text>
<line class="dd-hair" x1="32" y1="362" x2="248" y2="362"/>
<text class="t-val" x="48" y="379">计票：17 赞成 / 4 反对</text>
<line class="dd-hair" x1="32" y1="388" x2="248" y2="388"/>
<text class="t-val" x="48" y="405">奖励 → 作者、投票者</text>
<rect class="dd-card" x="300" y="64" width="300" height="214" rx="6"/>
<path class="dd-card-head" d="M306 64 H594 Q600 64 600 70 V96 H300 V70 Q300 64 306 64 Z"/>
<text class="t-name" x="316" y="85">知识块</text>
<text class="t-mono" x="584" y="85" text-anchor="end"><tspan class="t-acc">kb:7f3a</tspan></text>
<text class="t-mono" x="316" y="113">type</text><text class="t-val" x="400" y="113">claim</text>
<line class="dd-hair" x1="300" y1="122" x2="600" y2="122"/>
<text class="t-mono" x="316" y="139">statement</text><text class="t-val" x="400" y="139">√2 不是有理数</text>
<line class="dd-hair" x1="300" y1="148" x2="600" y2="148"/>
<text class="t-mono" x="316" y="165">refs</text><text class="t-val" x="400" y="165">3 条，见右</text>
<line class="dd-hair" x1="300" y1="174" x2="600" y2="174"/>
<text class="t-mono" x="316" y="191">argument</text><text class="t-val" x="400" y="191">设 p/q 最简，p² = 2q² …</text>
<line class="dd-hair" x1="300" y1="200" x2="600" y2="200"/>
<text class="t-mono" x="316" y="217">author</text><text class="t-val" x="400" y="217">0x9e…41</text>
<line class="dd-hair" x1="300" y1="226" x2="600" y2="226"/>
<text class="t-mono" x="316" y="243">stake</text><text class="t-val" x="400" y="243">50 KC</text>
<line class="dd-hair" x1="300" y1="252" x2="600" y2="252"/>
<text class="t-mono" x="316" y="269">size</text><text class="t-val" x="400" y="269">490 B（上限 1024 B）</text>
<rect class="dd-card" x="632" y="100" width="136" height="52" rx="6"/>
<text class="t-name" x="644" y="121">有理数的定义</text>
<text class="t-mono" x="644" y="141">kb:1b09</text>
<rect class="dd-card" x="632" y="168" width="136" height="52" rx="6"/>
<text class="t-name" x="644" y="189">n² 偶 ⇒ n 偶</text>
<text class="t-mono" x="644" y="209">kb:5d2e</text>
<rect class="dd-card" x="632" y="236" width="136" height="52" rx="6"/>
<text class="t-name" x="644" y="257">反证法</text>
<text class="t-mono" x="644" y="277">kb:0c77</text>
<text class="t-say" x="324" y="318">知识块只能指向已被接受的知识块，</text>
<text class="t-say" x="324" y="338">引用为空的提交在格式检查这一步就作废。</text>
<text class="t-say" x="324" y="384">账本只记“谁提交、谁投了什么、币怎么分”；</text>
<text class="t-say" x="324" y="404">投票通过以后，kb:7f3a 才能被别的知识块引用。</text>
</svg>
</div>
<figcaption>图 1 · 账本层记录提交和投票这两类交易，知识层保存知识块本身和它们之间的引用</figcaption>
</figure>

### 和 Lean 比，想多放些什么

**Lean 只收能写成形式语言的数学。** Lean 是一个证明助手：定理和证明都写成程序，由一个很小的内核逐步检查，每一步都必须由公理或已证定理推出。开头那条 √2 在 Lean 的数学库 mathlib 里只有两行[^mathlib-sqrt2]：

```lean
theorem irrational_sqrt_two : Irrational (√2) := by
  simpa using Nat.prime_two.irrational_sqrt
```

它也“引用”了别的定理（`Nat.prime_two.irrational_sqrt`），只是这个引用由内核检查，不需要任何人投票。mathlib 目前大约有 29 万条定理、14 万个定义[^mathlib-stats]。

**设想想要的是更大的范围。** “水在一个标准大气压下的沸点”“某种药能降低血压”这些物理世界的共识，几乎不可能写成 Lean 能检查的形式，但用一句自然语言加几条引用就能放进知识块。用投票代替内核检查，换来的就是这份普适：任何能用 1 KB 文字说清楚的东西都能上链。

这是设想自己的逻辑。它完整地画出来之后，接下来的问题是：**这些部件，有没有人已经做过？**

## 二、有没有人做过

把设想拆开看，它由五个部件组成：知识必须引用已有知识；知识放在链上；用投票裁定真假；创作和投票都发奖励；由机器（agent）来评判。每个部件单独看都有现成的项目，而且不少已经跑了很多年。

### 必须引用：Metamath、mathlib、维基百科、纳米出版物

**“不能凭空冒出知识”在数学里早就是硬规则。** Metamath 从 1992 年开始积累一个叫 set.mm 的定理库，每条定理只能由公理和前面已有的定理推出，网页上直接列出它依赖了哪些公理、被哪些后来的定理引用[^metamath]。mathlib 也一样，只是检查器更强。

**在数学以外，维基百科用的是政策而不是检查器。** 它的“不得原创研究”政策要求内容能追溯到可靠的已发表来源，把几个来源拼起来推出它们自己没说的结论也算原创研究[^wiki-nor]。这和“知识块必须引用”是同一个意思，只是引用对象是外部文献。

**“一条知识一个小单元”也有先例。** 生命科学领域的纳米出版物（nanopublication）把一条断言、它的出处、发布信息打包成一个最小单元，已经有超过一千万条[^nanopub]。知识块几乎就是带了投票字段的纳米出版物。

### 知识上链：Proofgold、OriginTrail、DeSci Nodes

**Proofgold 是和设想最接近的一个。** 它是一条专门放形式化数学的链，用 PoS 出块；任何人可以发布理论（一组公理）、在理论里发布定义和定理，命题可以挂赏金，谁交出证明谁领走[^proofgold]。为了让新人拿到初始质押，它的前 5000 个区块还自动给随机生成的命题挂了赏金[^proofgold-explorer]。和设想的关键差别是：Proofgold 判断一条定理是否成立，用的是写在共识规则里的证明检查器，不是投票。

**OriginTrail 做的是通用知识上链。** 它的去中心化知识图谱里，每条“知识资产”都带着可验证的出处和发布者，发布要付代币 TRAC，跑节点要质押 TRAC，定位是“给 AI 的可信记忆”[^origintrail]。但它只证明“谁在什么时候发布了什么”，不裁决内容的真假。

**DeSci Nodes 给研究成果发持久标识。** 一篇研究和它的数据、代码各有一个可按版本引用的标识，放在 IPFS 上[^desci]。它解决的是“引用不会失效”，也不判断对错。

### 投票裁定真假：Augur、UMA、Kleros、Community Notes

**预测市场早就在用投票决定“现实世界发生了什么”。** Augur 让持有 REP 代币的人押注报告结果，有争议就加倍押金再报，最极端时整个系统按不同答案分叉[^augur]。UMA 让代币持有人先提交加密的票、再揭示，投错或缺席的人被罚质押的 0.1%[^uma]；Polymarket 的争议市场就交给它裁决。

**Kleros 把陪审团搬上了链。** 质押 PNK 代币的人被随机抽中当陪审员，投在少数一边的人被罚，罚款分给多数一边；不服可以上诉，陪审团人数大约翻倍[^kleros]。

**X 的 Community Notes 换了一种算票方式。** 它不简单数赞成票，而是用矩阵分解把每个评分者的“立场”分离出来，只有立场不同的人都觉得有帮助的笔记才会被展示[^cn-repo]。这一点后面讲投票的问题时会再用到。

### 创作和投票都发奖励：Steemit、ResearchHub、Bittensor

**Steemit 是“发帖和点赞都挖矿”的原型。** 作者按收到的票分奖池，投票的策展人也按投票分一份。ResearchHub 把同样的机制搬到科研：上线时每收到一个赞发 1 个 ResearchCoin，每周 100 万枚按赞分配[^researchhub]。

**Bittensor 是“机器给机器打分、按分发币”的现成例子。** 每个子网里，验证者给矿工的输出打权重，链上的 Yuma 共识按质押加权汇总这些权重，决定新发的币怎么分[^yuma]。把“矿工的输出”换成“知识块”、把“验证者”换成“投票的 agent”，结构几乎一样。

更早的 Primecoin 则代表了另一条思路：让挖矿本身产出有用的东西，它的挖矿就是找素数链[^primecoin]。设想里“提交知识即挖矿”和它同出一源。

### 由 AI 写的知识库：Grokipedia

最后一个部件是“由机器来生产和评判知识”。xAI 在 2025 年 10 月上线的 Grokipedia 开张时就有约 88.5 万篇由模型写的条目，随即因为错误和照搬维基百科受到批评[^grokipedia]。它不上链、不投票，但说明了用模型批量生产“知识”会遇到什么。

图 2 把这些项目和设想的五个部件放在一起对照。

<figure class="dd dd-figure dt-figure">
<div class="dt-panel">
<div class="dt-title" id="kc2-title">同类项目：各自做了设想里的哪一部分</div>
<div class="dt-scroll">
<table class="dt dt-sticky" aria-labelledby="kc2-title">
<colgroup><col style="width:17%"><col style="width:23%"><col><col style="width:16%"></colgroup>
<thead>
<tr><th scope="col">项目</th><th scope="col">和设想共有的部分</th><th scope="col">一条内容凭什么算“成立”</th><th scope="col">链 / 币</th></tr>
</thead>
<tbody>
<tr class="dt-group"><th colspan="4" scope="rowgroup">必须引用</th></tr>
<tr><th scope="row">Metamath</th><td>每条定理只能引用公理和已有定理</td><td class="good">验证器逐步代换检查</td><td>无</td></tr>
<tr><th scope="row">Lean mathlib</th><td>同上，约 29 万条定理</td><td class="good">内核逐步检查</td><td>无</td></tr>
<tr><th scope="row">维基百科</th><td>不得原创研究，须有来源</td><td>编辑共识，可反复修改</td><td>无</td></tr>
<tr><th scope="row">纳米出版物</th><td>一条断言一个小单元，带出处</td><td>不判断，只记出处</td><td>无</td></tr>
<tr class="dt-group"><th colspan="4" scope="rowgroup">知识上链</th></tr>
<tr><th scope="row">Proofgold</th><td class="acc">链上数学、PoS、证明领赏</td><td class="good">共识规则里的证明检查器</td><td>有 / 有</td></tr>
<tr><th scope="row">OriginTrail</th><td>通用知识上链，面向 AI</td><td>不判断，只证明谁发布</td><td>有 / TRAC</td></tr>
<tr><th scope="row">DeSci Nodes</th><td>研究成果的持久标识</td><td>不判断</td><td>部分 / 无</td></tr>
<tr class="dt-group"><th colspan="4" scope="rowgroup">投票裁定真假</th></tr>
<tr><th scope="row">Augur</th><td>押币报告现实结果</td><td class="warn">押金加权投票，可分叉</td><td>有 / REP</td></tr>
<tr><th scope="row">UMA</th><td>代币持有人投票裁决</td><td class="warn">质押加权投票</td><td>有 / UMA</td></tr>
<tr><th scope="row">Kleros</th><td>抽签陪审团</td><td class="warn">陪审员投票，可上诉</td><td>有 / PNK</td></tr>
<tr><th scope="row">Community Notes</th><td>众人评判一条说法</td><td class="warn">不同立场的人都认可</td><td>无</td></tr>
<tr class="dt-group"><th colspan="4" scope="rowgroup">创作和评判都发奖励</th></tr>
<tr><th scope="row">Steemit</th><td>发帖和点赞都分奖池</td><td>不判断真假，只看票数</td><td>有 / STEEM</td></tr>
<tr><th scope="row">ResearchHub</th><td>科研内容按赞发币</td><td>不判断真假，只看票数</td><td>有 / RSC</td></tr>
<tr><th scope="row">Bittensor</th><td class="acc">机器打分、按分发币</td><td class="warn">质押加权打分，带合谋裁剪</td><td>有 / TAO</td></tr>
<tr><th scope="row">Grokipedia</th><td>模型批量写知识</td><td>不判断</td><td>无</td></tr>
</tbody>
</table>
</div>
<p class="dt-note">绿色是由程序确定性检查的，琥珀色是由投票决定的。设想的组合在两类之间：它想覆盖维基百科的范围，却用 Bittensor 式的机器投票来判定。</p>
</div>
<figcaption>图 2 · 设想的每个部件都有人做过；把“强制引用 + agent 投票 + 数学和物理事实混放 + 双向奖励”合在一起的，没有找到在运行的项目</figcaption>
</figure>

**所以这个组合是新的，但每一块都有前人踩过的路。** 最近的两个亲戚是 Proofgold 和 Bittensor：前者证明了“链上存数学、证明即挖矿”能跑起来，靠的是检查器；后者证明了“agent 互相打分、按分发币”能跑起来，判定的是“有用”而不是“真”。设想要做的，是用后者的判定方式去覆盖前者乃至维基百科的范围。

知道了亲戚是谁，**这个系统具体该怎么设计？**

## 三、系统设计

### 设计目标

把设想落到能实现的程度，需要回答四件事：知识块里写什么、引用图从哪里开始、一个知识块从提交到成立经过哪些步骤、币怎么发。下面的参数（押金、票数、比例）都是为了讨论而定的示例值，不来自任何现有系统。

### 知识块的格式

**一个知识块有类型、结论、引用和论证四个核心字段。** 类型分四种：公理（数学的起点）、定义（约定一个名字的含义）、观测（一次测量或实验的记录，附数据的哈希）、论断（由引用推出的结论）。结论和论证用自然语言写，引用是其他知识块的哈希。物理世界的例子长这样：

```json
{"id":"kb:d40e…b72","type":"claim",
 "statement":"纯水（VSMOW）在 101.325 kPa 下的沸点约为 99.97 °C。",
 "refs":["kb:a311… 摄氏温度的定义（ITS-90）",
         "kb:6c5f… 标准大气压 = 101.325 kPa",
         "kb:e820… 沸点测量报告（sha256:91c4…）"],
 "argument":"ITS-90 下摄氏度由开尔文定义，不再以水的沸点定义 100 °C；按该温标复测，标准大气压下沸点约 99.97 °C。"}
```

这条按 UTF-8 算是 519 字节，√2 那条是 490 字节，引用换成完整的 64 位十六进制哈希后也在 700 字节左右。**1 KB 对一句结论加三五条引用是够的，对论证就很紧。** 这一点后面还会回来。

### 引用图和根块

**“必须引用”不能对所有知识块都成立。** 如果每个知识块都必须引用一个更早的知识块，第一个知识块就无从写起。所以引用图一定有一批不引用任何人的“根块”：数学的根是公理和推理规则，物理的根是观测记录，再加上一批约定（单位、温标）。图 3 把开头两条知识块的引用一直追到根。

<figure class="dd dd-figure">
<div class="dd-scroll">
<svg class="dd-svg" viewBox="0 0 800 424" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="kc3-title kc3-desc">
<title id="kc3-title">两条知识块追到根</title>
<desc id="kc3-desc">左边是五个根块：皮亚诺公理、反证法、ITS-90 温标定义、标准大气压定义、沸点测量报告。右边是普通知识块：有理数的定义和偶数引理都引用皮亚诺公理；√2 不是有理数引用了这两条和反证法；沸点约 99.97 °C 引用了 ITS-90、标准大气压和测量报告。</desc>
<defs>
<marker id="kc3-arrow" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path class="dd-head" d="M1 1 L7 4 L1 7"/></marker>
<marker id="kc3-arrow-acc" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path class="dd-head-acc" d="M1 1 L7 4 L1 7"/></marker>
</defs>
<rect class="dd-frame" width="800" height="424" rx="10"/>
<rect class="dd-zone" x="16" y="16" width="240" height="392" rx="8"/>
<rect class="dd-zone" x="272" y="16" width="512" height="392" rx="8"/>
<text class="t-zone" x="32" y="44">根块 · 不引用任何块</text>
<text class="t-zone" x="288" y="44">普通知识块 · 至少引用一个已接受的块</text>
<line class="dd-edge" x1="296" y1="80" x2="244" y2="80" marker-end="url(#kc3-arrow)"/>
<path class="dd-edge" d="M296 152 H276 Q268 152 268 144 V104 Q268 96 260 96 H244" marker-end="url(#kc3-arrow)"/>
<line class="dd-edge-acc" x1="544" y1="80" x2="500" y2="80" marker-end="url(#kc3-arrow-acc)"/>
<path class="dd-edge-acc" d="M544 100 H528 Q520 100 520 108 V144 Q520 152 512 152 H500" marker-end="url(#kc3-arrow-acc)"/>
<path class="dd-edge-acc" d="M656 112 V184 Q656 192 648 192 H256 Q248 192 248 184 V176 Q248 168 244 168" marker-end="url(#kc3-arrow-acc)"/>
<path class="dd-edge" d="M544 292 H288 Q280 292 280 284 V248 Q280 240 272 240 H244" marker-end="url(#kc3-arrow)"/>
<line class="dd-edge" x1="544" y1="304" x2="244" y2="304" marker-end="url(#kc3-arrow)"/>
<path class="dd-edge" d="M544 316 H296 Q288 316 288 324 V360 Q288 368 280 368 H244" marker-end="url(#kc3-arrow)"/>
<rect class="dd-card" x="32" y="64" width="208" height="48" rx="6"/>
<text class="t-name" x="44" y="84">公理 · 皮亚诺公理</text>
<text class="t-mono" x="44" y="103">kb:00a1</text>
<rect class="dd-card" x="32" y="128" width="208" height="48" rx="6"/>
<text class="t-name" x="44" y="148">规则 · 反证法</text>
<text class="t-mono" x="44" y="167">kb:0c77</text>
<rect class="dd-card" x="32" y="216" width="208" height="48" rx="6"/>
<text class="t-name" x="44" y="236">定义 · ITS-90 温标</text>
<text class="t-mono" x="44" y="255">kb:a311</text>
<rect class="dd-card" x="32" y="280" width="208" height="48" rx="6"/>
<text class="t-name" x="44" y="300">定义 · 标准大气压</text>
<text class="t-mono" x="44" y="319">kb:6c5f  101.325 kPa</text>
<rect class="dd-card" x="32" y="344" width="208" height="48" rx="6"/>
<text class="t-name" x="44" y="364">观测 · 沸点测量报告</text>
<text class="t-mono" x="44" y="383">kb:e820  sha256:91c4…</text>
<rect class="dd-card" x="296" y="56" width="200" height="48" rx="6"/>
<text class="t-name" x="308" y="76">定义 · 有理数</text>
<text class="t-mono" x="308" y="95">kb:1b09  引用 1 块</text>
<rect class="dd-card" x="296" y="128" width="200" height="48" rx="6"/>
<text class="t-name" x="308" y="148">引理 · n² 偶 ⇒ n 偶</text>
<text class="t-mono" x="308" y="167">kb:5d2e  引用 1 块</text>
<rect class="dd-card" x="544" y="64" width="224" height="48" rx="6"/>
<text class="t-name" x="556" y="84">论断 · √2 不是有理数</text>
<text class="t-mono" x="556" y="103"><tspan class="t-acc">kb:7f3a</tspan>  引用 3 块</text>
<rect class="dd-card" x="544" y="280" width="224" height="48" rx="6"/>
<text class="t-name" x="556" y="300">论断 · 沸点约 99.97 °C</text>
<text class="t-mono" x="556" y="319">kb:d40e  引用 3 块</text>
<text class="t-say" x="304" y="226">沸点这条依赖温标的定义：</text>
<text class="t-say" x="304" y="246">ITS-90 之前，100 °C 就是按沸点定的。</text>
<text class="t-say" x="304" y="364">根块没法靠引用证明自己：数学的根是公理和规则，</text>
<text class="t-say" x="304" y="384">物理的根是观测记录。它们靠什么被接受，见第四章。</text>
</svg>
</div>
<figcaption>图 3 · 引用图必须有一批不引用任何块的根：公理、推理规则、约定和观测</figcaption>
</figure>

**根块的准入要单独设计。** 一种做法是创世时由发起人放入一批公理和单位定义，之后新增根块需要比普通知识块更高的门槛，比如更高的押金和更多的票。观测类根块还要附上原始数据的哈希，让别人能拿数据复核。

### 一个知识块的一生

**从提交到被接受，一个知识块要经过五步。** 前两步是确定性的：任何节点拿到同一份数据，算出来的结果都一样。后三步是投票，结果取决于谁来投。图 4 跟着 `kb:7f3a` 走一遍。

<figure class="dd dd-figure">
<div class="dd-scroll">
<svg class="dd-svg" viewBox="0 0 800 352" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="kc4-title kc4-desc">
<title id="kc4-title">一个知识块的一生</title>
<desc id="kc4-desc">时间线上五步：t=0 提交 kb:7f3a，490 字节，押 50 KC；随后格式检查，大小不超过 1024 字节、引用 3 块、引用都已接受、无环；t+24 小时前，抽中的 21 个 agent 提交加密的票；t+30 小时揭示并计票，17 赞成 4 反对，超过三分之二质押，状态变为已接受；之后 7 天挑战期，任何人押 100 KC 可以上诉，上诉抽 43 个 agent 重投。</desc>
<rect class="dd-frame" width="800" height="352" rx="10"/>
<rect class="dd-zone" x="16" y="16" width="296" height="320" rx="8"/>
<rect class="dd-zone" x="320" y="16" width="464" height="320" rx="8"/>
<text class="t-zone" x="32" y="44">确定性检查 · 人人复算一样</text>
<text class="t-zone" x="336" y="44">投票 · 结果取决于谁来投</text>
<line class="dd-edge-acc" x1="96" y1="92" x2="704" y2="92"/>
<circle class="t-acc" cx="96" cy="92" r="5"/>
<circle class="t-acc" cx="240" cy="92" r="5"/>
<circle class="t-acc" cx="400" cy="92" r="5"/>
<circle class="t-acc" cx="552" cy="92" r="5"/>
<circle class="t-acc" cx="704" cy="92" r="5"/>
<text class="t-mono" x="96" y="76" text-anchor="middle">t = 0</text>
<text class="t-mono" x="240" y="76" text-anchor="middle">t + 几秒</text>
<text class="t-mono" x="400" y="76" text-anchor="middle">t + 24 h</text>
<text class="t-mono" x="552" y="76" text-anchor="middle">t + 30 h</text>
<text class="t-mono" x="704" y="76" text-anchor="middle">t + 7 天</text>
<rect class="dd-card" x="24" y="112" width="144" height="110" rx="6"/>
<path class="dd-card-head" d="M30 112 H162 Q168 112 168 118 V144 H24 V118 Q24 112 30 112 Z"/>
<text class="t-name" x="36" y="133">① 提交</text>
<text class="t-mono" x="36" y="161"><tspan class="t-acc">kb:7f3a</tspan></text>
<line class="dd-hair" x1="24" y1="170" x2="168" y2="170"/>
<text class="t-val" x="36" y="187">490 B</text>
<line class="dd-hair" x1="24" y1="196" x2="168" y2="196"/>
<text class="t-val" x="36" y="213">押金 50 KC</text>
<rect class="dd-card" x="176" y="112" width="128" height="136" rx="6"/>
<path class="dd-card-head" d="M182 112 H298 Q304 112 304 118 V144 H176 V118 Q176 112 182 112 Z"/>
<text class="t-name" x="188" y="133">② 格式检查</text>
<text class="t-val" x="188" y="161">≤ 1024 B ✓</text>
<line class="dd-hair" x1="176" y1="170" x2="304" y2="170"/>
<text class="t-val" x="188" y="187">引用 3 块 ✓</text>
<line class="dd-hair" x1="176" y1="196" x2="304" y2="196"/>
<text class="t-val" x="188" y="213">引用都已接受 ✓</text>
<line class="dd-hair" x1="176" y1="222" x2="304" y2="222"/>
<text class="t-val" x="188" y="239">没有环 ✓</text>
<rect class="dd-card" x="328" y="112" width="144" height="110" rx="6"/>
<path class="dd-card-head" d="M334 112 H466 Q472 112 472 118 V144 H328 V118 Q328 112 334 112 Z"/>
<text class="t-name" x="340" y="133">③ 抽签、承诺</text>
<text class="t-val" x="340" y="161">抽 21 个 agent</text>
<line class="dd-hair" x1="328" y1="170" x2="472" y2="170"/>
<text class="t-val" x="340" y="187">按质押加权抽</text>
<line class="dd-hair" x1="328" y1="196" x2="472" y2="196"/>
<text class="t-val" x="340" y="213">交 hash(票+盐)</text>
<rect class="dd-card" x="480" y="112" width="144" height="110" rx="6"/>
<path class="dd-card-head" d="M486 112 H618 Q624 112 624 118 V144 H480 V118 Q480 112 486 112 Z"/>
<text class="t-name" x="492" y="133">④ 揭示、计票</text>
<text class="t-val" x="492" y="161">17 赞成 / 4 反对</text>
<line class="dd-hair" x1="480" y1="170" x2="624" y2="170"/>
<text class="t-val" x="492" y="187">≥ 2/3 质押 ✓</text>
<line class="dd-hair" x1="480" y1="196" x2="624" y2="196"/>
<text class="t-val" x="492" y="213">状态 → 已接受</text>
<rect class="dd-card" x="632" y="112" width="144" height="110" rx="6"/>
<path class="dd-card-head" d="M638 112 H770 Q776 112 776 118 V144 H632 V118 Q632 112 638 112 Z"/>
<text class="t-name" x="644" y="133">⑤ 挑战期</text>
<text class="t-val" x="644" y="161">押 100 KC 可上诉</text>
<line class="dd-hair" x1="632" y1="170" x2="776" y2="170"/>
<text class="t-val" x="644" y="187">上诉 → 抽 43 个</text>
<line class="dd-hair" x1="632" y1="196" x2="776" y2="196"/>
<text class="t-val" x="644" y="213">到期 → 开始释放奖励</text>
<text class="t-say" x="32" y="288">这两步只看字节数和引用关系，</text>
<text class="t-say" x="32" y="308">不看内容对不对。</text>
<text class="t-say" x="336" y="288">内容对不对，全由这 21 票决定；</text>
<text class="t-say" x="336" y="308">上诉也只是换一批更多的 agent 再投一次。</text>
</svg>
</div>
<figcaption>图 4 · 一个知识块从提交到被接受：机器只能检查格式和引用关系，内容是否成立全部交给投票</figcaption>
</figure>

**为什么要先承诺再揭示？** 如果票是明着投的，后投的 agent 可以直接抄前面的多数，自己什么都不读。先交“票加一个随机数”的哈希，截止后再公开原文，谁也看不到别人投了什么。UMA 用的就是这种做法[^uma]。挑战期借鉴的是 Kleros 的上诉：不服的人押更多的钱，换一个更大的陪审团重投[^kleros]。挑战期结束也不是终点，后面讲推翻机制时再说。

### 币从哪来、到哪去

**用户问的“如何发币”，答案是按周期增发，再按比例切开。** 每个周期（比如一天）新发固定数量的币，加上本周期罚没的押金，组成一个奖池；奖池按固定比例分给三类人：记账的 PoS 验证者、被接受的知识块的作者、投在多数一边的 agent。图 5 是一个周期的示例。

<figure class="dd dd-figure">
<div class="dd-scroll">
<svg class="dd-svg" viewBox="0 0 800 300" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="kc5-title kc5-desc">
<title id="kc5-title">一个周期的奖池怎么分</title>
<desc id="kc5-desc">第 812 周期奖池 1086 KC，其中增发 1000 KC、罚没 86 KC，按 2:4:4 分：PoS 验证者 217 KC；被接受知识块的作者 434 KC，本周期接受 31 块，每块约 14.0 KC；多数派投票者 434 KC，按质押比例分。</desc>
<defs>
<marker id="kc5-arrow" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path class="dd-head" d="M1 1 L7 4 L1 7"/></marker>
<marker id="kc5-arrow-acc" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path class="dd-head-acc" d="M1 1 L7 4 L1 7"/></marker>
</defs>
<rect class="dd-frame" width="800" height="300" rx="10"/>
<rect class="dd-zone" x="16" y="16" width="360" height="268" rx="8"/>
<rect class="dd-zone" x="392" y="16" width="392" height="268" rx="8"/>
<text class="t-zone" x="32" y="44">奖池</text>
<text class="t-zone" x="408" y="44">分给谁</text>
<path class="dd-edge" d="M248 112 H336 Q344 112 344 104 V91 Q344 83 352 83 H424" marker-end="url(#kc5-arrow)"/>
<line class="dd-edge-acc" x1="248" y1="159" x2="424" y2="159" marker-end="url(#kc5-arrow-acc)"/>
<path class="dd-edge" d="M248 206 H336 Q344 206 344 214 V227 Q344 235 352 235 H424" marker-end="url(#kc5-arrow)"/>
<rect class="dd-card" x="32" y="88" width="216" height="136" rx="6"/>
<path class="dd-card-head" d="M38 88 H242 Q248 88 248 94 V120 H32 V94 Q32 88 38 88 Z"/>
<text class="t-name" x="48" y="109">第 812 周期</text>
<text class="t-mono" x="232" y="109" text-anchor="end">1086 KC</text>
<text class="t-val" x="48" y="137">增发 1000 KC</text>
<line class="dd-hair" x1="32" y1="146" x2="248" y2="146"/>
<text class="t-val" x="48" y="163">罚没 86 KC</text>
<line class="dd-hair" x1="32" y1="172" x2="248" y2="172"/>
<text class="t-val" x="48" y="189">（被拒块押金、少数派）</text>
<line class="dd-hair" x1="32" y1="198" x2="248" y2="198"/>
<text class="t-val" x="48" y="215">按 2 : 4 : 4 分</text>
<text class="t-say" x="32" y="252">增发总量固定：同一周期里块越多、</text>
<text class="t-say" x="32" y="272">票越多，每一份就越薄。</text>
<rect class="dd-card" x="424" y="56" width="344" height="58" rx="6"/>
<path class="dd-card-head" d="M430 56 H762 Q768 56 768 62 V88 H424 V62 Q424 56 430 56 Z"/>
<text class="t-name" x="440" y="77">PoS 验证者</text>
<text class="t-mono" x="752" y="77" text-anchor="end">217 KC</text>
<text class="t-val" x="440" y="105">记账出块，和知识内容无关</text>
<rect class="dd-card" x="424" y="132" width="344" height="58" rx="6"/>
<path class="dd-card-head" d="M430 132 H762 Q768 132 768 138 V164 H424 V138 Q424 132 430 132 Z"/>
<text class="t-name" x="440" y="153">被接受知识块的作者</text>
<text class="t-mono" x="752" y="153" text-anchor="end"><tspan class="t-acc">434 KC</tspan></text>
<text class="t-val" x="440" y="181">本周期接受 31 块 → 每块约 14.0 KC</text>
<rect class="dd-card" x="424" y="208" width="344" height="58" rx="6"/>
<path class="dd-card-head" d="M430 208 H762 Q768 208 768 214 V240 H424 V214 Q424 208 430 208 Z"/>
<text class="t-name" x="440" y="229">多数派投票者</text>
<text class="t-mono" x="752" y="229" text-anchor="end">434 KC</text>
<text class="t-val" x="440" y="257">按质押比例分；少数派被罚</text>
</svg>
</div>
<figcaption>图 5 · 一个周期的奖池：作者按“被接受的块数”分钱，投票者按“是否站在多数一边”分钱</figcaption>
</figure>

### 推翻：用新的知识块挑战旧的

**挑战期过了，也不等于永远正确。** 认知在变，今天投票通过的结论，几年后可能被更好的测量或更严密的推理推翻。所以设想需要一条“翻案”的路：任何时候，任何人都可以提交一个反驳块，指向一个已接受的知识块，说它哪里有问题。

**反驳块也是知识块，同样不能凭空出现。** 它多一个 `target` 字段指向被挑战的块，`refs` 里放支持反驳的证据（新的观测、更早被忽略的定义、一个反例），押金比普通知识块高，比如 100 KC，防止有人随手挑战刷存在感。它的结果不只“推翻”一种：结论本身错了是**推翻**；结论在某些条件下才成立是**收窄**，比如给牛顿力学加上“速度远小于光速”；反驳不成立是**驳回**，反驳者的押金被罚没。

**旧块不删除，只改状态。** 链上留着它被提交、被接受、被推翻的全过程，变的只是它当前的状态。引用它的下游知识块也不会跟着自动作废，因为它们可能还有别的依据；它们被标成“待复审”，各自重新投票。图 6 是一个例子：早期有人提交了“水在一个标准大气压下 100 °C 沸腾”，后来有人拿 ITS-90 的定义和测量数据反驳它。

<figure class="dd dd-figure">
<div class="dd-scroll">
<svg class="dd-svg" viewBox="0 0 800 340" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="kc10-title kc10-desc">
<title id="kc10-title">一次推翻</title>
<desc id="kc10-desc">左边反驳块 kb:r7c2 押 100 KC，目标是 kb:b100，结论是标准大气压下沸点约 99.974 °C，引用 ITS-90 定义和沸点测量报告，结果是收窄，19 票赞成 2 票反对。中间旧块 kb:b100“沸点等于 100 °C”第 37 周期被接受，状态从已接受变为已收窄，还没释放的 9 KC 奖励转给反驳者。右边两个引用它的下游块，海拔 3000 米处沸点约 90 °C 和温度计 100 °C 刻度校准，都被标为待复审。</desc>
<defs>
<marker id="kc10-arrow" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path class="dd-head" d="M1 1 L7 4 L1 7"/></marker>
<marker id="kc10-arrow-acc" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path class="dd-head-acc" d="M1 1 L7 4 L1 7"/></marker>
</defs>
<rect class="dd-frame" width="800" height="340" rx="10"/>
<rect class="dd-zone" x="16" y="16" width="248" height="232" rx="8"/>
<rect class="dd-zone" x="280" y="16" width="240" height="232" rx="8"/>
<rect class="dd-zone" x="536" y="16" width="248" height="232" rx="8"/>
<text class="t-zone" x="32" y="44">反驳块 · 押 100 KC</text>
<text class="t-zone" x="296" y="44">被挑战的旧块</text>
<text class="t-zone" x="552" y="44">引用它的下游</text>
<line class="dd-edge-acc" x1="248" y1="113" x2="292" y2="113" marker-end="url(#kc10-arrow-acc)"/>
<line class="dd-edge" x1="552" y1="90" x2="508" y2="90" marker-end="url(#kc10-arrow)"/>
<path class="dd-edge" d="M552 158 H536 Q528 158 528 150 V140 Q528 132 520 132 H508" marker-end="url(#kc10-arrow)"/>
<rect class="dd-card" x="32" y="64" width="216" height="162" rx="6"/>
<path class="dd-card-head" d="M38 64 H242 Q248 64 248 70 V96 H32 V70 Q32 64 38 64 Z"/>
<text class="t-name" x="48" y="85">反驳块</text>
<text class="t-mono" x="232" y="85" text-anchor="end">kb:r7c2</text>
<text class="t-mono" x="48" y="113">target</text><text class="t-mono" x="112" y="113"><tspan class="t-acc">kb:b100</tspan></text>
<line class="dd-hair" x1="32" y1="122" x2="248" y2="122"/>
<text class="t-mono" x="48" y="139">结论</text><text class="t-val" x="112" y="139">约 99.974 °C</text>
<line class="dd-hair" x1="32" y1="148" x2="248" y2="148"/>
<text class="t-mono" x="48" y="165">refs</text><text class="t-val" x="112" y="165">kb:a311 kb:e820</text>
<line class="dd-hair" x1="32" y1="174" x2="248" y2="174"/>
<text class="t-mono" x="48" y="191">结果</text><text class="t-val" x="112" y="191">收窄</text>
<line class="dd-hair" x1="32" y1="200" x2="248" y2="200"/>
<text class="t-mono" x="48" y="217">投票</text><text class="t-val" x="112" y="217">19 赞成 / 2 反对</text>
<rect class="dd-derived" x="296" y="64" width="208" height="136" rx="6"/>
<text class="t-name" x="312" y="85">旧块</text>
<text class="t-mono" x="488" y="85" text-anchor="end"><tspan class="t-acc">kb:b100</tspan></text>
<line class="dd-hair" x1="296" y1="96" x2="504" y2="96"/>
<text class="t-mono" x="312" y="113">结论</text><text class="t-val" x="368" y="113">沸点 = 100 °C</text>
<line class="dd-hair" x1="296" y1="122" x2="504" y2="122"/>
<text class="t-mono" x="312" y="139">接受</text><text class="t-val" x="368" y="139">第 37 周期</text>
<line class="dd-hair" x1="296" y1="148" x2="504" y2="148"/>
<text class="t-mono" x="312" y="165">状态</text><text class="t-mono" x="368" y="165">已接受 → <tspan class="t-acc">已收窄</tspan></text>
<line class="dd-hair" x1="296" y1="174" x2="504" y2="174"/>
<text class="t-mono" x="312" y="191">未释放</text><text class="t-val" x="368" y="191">9 KC → 反驳者</text>
<rect class="dd-card" x="552" y="64" width="216" height="52" rx="6"/>
<text class="t-name" x="564" y="85">海拔 3000 m 沸点约 90 °C</text>
<text class="t-mono" x="564" y="105">kb:c311 → 待复审</text>
<rect class="dd-card" x="552" y="132" width="216" height="52" rx="6"/>
<text class="t-name" x="564" y="153">温度计 100 °C 刻度校准</text>
<text class="t-mono" x="564" y="173">kb:9a04 → 待复审</text>
<text class="t-say" x="32" y="284">虚线框：旧块不删除，被接受、被收窄的全过程都留在链上，变的只是状态。</text>
<text class="t-say" x="32" y="308">下游不会自动作废，只标成待复审，各自重新投票；已经释放的奖励追不回，没释放的转给反驳一方。</text>
</svg>
</div>
<figcaption>图 6 · 推翻不是删除：旧块改状态，未释放的奖励转给反驳者，下游逐个复审</figcaption>
</figure>

**要让推翻有意义，奖励必须延后发放。** 如果作者在挑战期结束时就拿走全部奖励，事后被推翻也没有任何损失。所以图 5 里作者和投票者分到的币不是一次到账，而是分比如 180 天线性释放；知识块在这期间被推翻或收窄，没释放的部分转给反驳者和投赞成票支持反驳的投票者。这样“提交经得起时间检验的知识”才比“提交能混过这一轮投票的知识”更赚钱。

**同一个块被反复翻案，门槛逐次提高。** 一个已经被推翻的块，可以再被一个“反驳的反驳”推翻回来，但每翻一次，押金和投票人数都翻倍，这和 Kleros 的上诉是同一个思路[^kleros]。来回翻得越多，说明这个问题越有争议，状态也就越适合用一个置信度来表达，而不是“对 / 错”二选一。

到这里设想已经是一个完整的系统：有格式、有起点、有流程、有钱，也有翻案的路。它的骨架和 Proofgold、Bittensor、Kleros 都能一一对上。**接下来换一个角度：这套规则在逻辑上有没有漏洞？**

## 四、逻辑上的问题

下面七个问题按“从知识本身到人的行为”的顺序排列。前三个和激励无关，即使所有参与者都诚实也存在；后面几个是加入了钱以后才出现的。

### 问题一：根从哪来

**“每条知识都必须引用别的知识”，推到底只有三种结局。** 要么无穷地引用下去，要么转一圈引用回自己，要么停在某些不再引用别人的起点上。哲学里把这叫阿格里帕三难（也叫明希豪森三难）[^agrippa]。链上不允许环，也不可能无穷，所以只剩第三种：根块。

**设想的核心规则因此需要改一个字。** “不能凭空冒出知识”在根块那里必然失效，图 3 左边那一列就是凭空出现的。数学里这没有问题：公理本来就是约定，Lean 和 Metamath 也是从公理出发的。物理世界麻烦得多：观测记录是根，但一份测量报告是不是真做过实验、数据有没有挑过，引用图里看不出来。最终还是落回投票，或者落回“谁有资格放根块”的治理问题。

所以严格地说，这条链保证的不是“知识不能凭空出现”，而是“**除了根块，知识不能凭空出现**”。整张图的可靠性，上限就是根块的可靠性。

### 问题二：引用对了，推理不一定对

**引用检查只能确认“依赖关系存在”，确认不了“从依赖能推出结论”。** 图 4 的格式检查会验证三条引用都存在、都已接受，但论证那一段自然语言写得对不对，机器在这一步完全不看。图 7 是一个具体的例子：把 √2 那条照抄一遍，换成 √4。

<figure class="dd dd-figure">
<div class="dd-scroll">
<svg class="dd-svg" viewBox="0 0 800 340" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="kc6-title kc6-desc">
<title id="kc6-title">引用相同，一条对一条错</title>
<desc id="kc6-desc">左边 kb:7f3a 证明 √2 不是有理数：p²=2q²，p 为偶数，记 p=2k，得 q²=2k²，q 为偶数，矛盾；Lean 里对应定理 irrational_sqrt_two。右边 kb:9e01 照抄成 √4 不是有理数：p²=4q²，p 为偶数，记 p=2k，得 q²=k²，再说 q 为偶数，这一步推不出来；√4=2 是有理数，Lean 里无法证明。两条引用完全相同。</desc>
<rect class="dd-frame" width="800" height="340" rx="10"/>
<rect class="dd-zone" x="16" y="16" width="376" height="260" rx="8"/>
<rect class="dd-zone" x="408" y="16" width="376" height="260" rx="8"/>
<text class="t-zone" x="32" y="44">kb:7f3a · 引用对，推理也对</text>
<text class="t-zone" x="424" y="44">kb:9e01 · 引用对，推理错</text>
<rect class="dd-card" x="32" y="64" width="344" height="188" rx="6"/>
<path class="dd-card-head" d="M38 64 H370 Q376 64 376 70 V96 H32 V70 Q32 64 38 64 Z"/>
<text class="t-name" x="48" y="85">√2 不是有理数</text>
<text class="t-note" x="360" y="85" text-anchor="end">490 B</text>
<text class="t-mono" x="48" y="113">引用</text><text class="t-val" x="112" y="113">kb:1b09 kb:5d2e kb:0c77</text>
<line class="dd-hair" x1="32" y1="122" x2="376" y2="122"/>
<text class="t-mono" x="48" y="139">第 1 步</text><text class="t-val" x="112" y="139">p/q 最简，p² = 2q²</text>
<line class="dd-hair" x1="32" y1="148" x2="376" y2="148"/>
<text class="t-mono" x="48" y="165">第 2 步</text><text class="t-val" x="112" y="165">p 为偶数，记 p = 2k</text>
<line class="dd-hair" x1="32" y1="174" x2="376" y2="174"/>
<text class="t-mono" x="48" y="191">第 3 步</text><text class="t-val" x="112" y="191">q² = 2k²，q 为偶数，矛盾</text>
<line class="dd-hair" x1="32" y1="200" x2="376" y2="200"/>
<text class="t-mono" x="48" y="217">Lean</text><text class="t-val" x="112" y="217">irrational_sqrt_two ✓</text>
<line class="dd-hair" x1="32" y1="226" x2="376" y2="226"/>
<text class="t-mono" x="48" y="243">格式检查</text><text class="t-val" x="112" y="243">通过</text>
<rect class="dd-card" x="424" y="64" width="344" height="188" rx="6"/>
<path class="dd-card-head" d="M430 64 H762 Q768 64 768 70 V96 H424 V70 Q424 64 430 64 Z"/>
<text class="t-name" x="440" y="85">√4 不是有理数</text>
<text class="t-note" x="752" y="85" text-anchor="end">490 B</text>
<text class="t-mono" x="440" y="113">引用</text><text class="t-val" x="504" y="113">kb:1b09 kb:5d2e kb:0c77</text>
<line class="dd-hair" x1="424" y1="122" x2="768" y2="122"/>
<text class="t-mono" x="440" y="139">第 1 步</text><text class="t-val" x="504" y="139">p/q 最简，p² = 4q²</text>
<line class="dd-hair" x1="424" y1="148" x2="768" y2="148"/>
<text class="t-mono" x="440" y="165">第 2 步</text><text class="t-val" x="504" y="165">p 为偶数，记 p = 2k</text>
<line class="dd-hair" x1="424" y1="174" x2="768" y2="174"/>
<text class="t-mono" x="440" y="191">第 3 步</text><text class="t-mono" x="504" y="191"><tspan class="t-acc">q² = k²，q 为偶数</tspan>，矛盾</text>
<line class="dd-hair" x1="424" y1="200" x2="768" y2="200"/>
<text class="t-mono" x="440" y="217">Lean</text><text class="t-val" x="504" y="217">无法证明：√4 = 2 是有理数</text>
<line class="dd-hair" x1="424" y1="226" x2="768" y2="226"/>
<text class="t-mono" x="440" y="243">格式检查</text><text class="t-val" x="504" y="243">通过</text>
<text class="t-say" x="32" y="304">两条的引用一字不差，格式检查都能通过。错在右边第 3 步：q² = k² 推不出 q 是偶数。</text>
<text class="t-say" x="32" y="324">Lean 内核会停在这一步；投票能不能拦住它，要看 21 个 agent 里有多少逐行读过。</text>
</svg>
</div>
<figcaption>图 7 · 引用全对的知识块，结论照样可以是错的；拦住它的只能是“谁去检查推理那一步”</figcaption>
</figure>

**1 KB 的上限让这件事更难。** √2 的论证三句话就写完了，大部分有意思的结论做不到。写不下的推理只能拆成更多中间知识块，每一块都要单独投票；或者省略步骤，留给投票者自己补。前者让投票次数成倍增加，后者让投票者需要补的东西越来越多。Lean 的做法是不限长度、但每一步都由机器检查，两者正好相反。

### 问题三：多数票不等于真

**投票能逼近真相，靠的是一个有前提的定理。** 孔多塞陪审团定理说：如果每个投票者答对的概率大于一半，而且彼此独立，那么人越多，多数票越可能正确，趋近于 1[^condorcet]。设想默认的就是这个结论：agent 越多，越靠谱。

**问题出在“独立”。** 现在能用来当 agent 的大模型就那么几家，同一个底座模型的不同实例，会在同一类题上犯同一个错。为了看清这件事有多大影响，我们做了一个小模拟：每道题，每个底座模型答对的概率是 0.7；每个 agent 有 90% 的概率照抄自己底座模型的答案，10% 反着投。这样每个 agent 单独答对的概率都是 0.66，和独立的情形一样。结果画在图 8 里。

<figure class="dd dd-figure">
<div class="dd-scroll">
<svg class="dd-svg" viewBox="0 0 800 380" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="kc7-title kc7-desc">
<title id="kc7-title">投票者越多，多数票越准吗</title>
<desc id="kc7-desc">横轴是投票的 agent 数，从 1 到 101；纵轴是多数票答对的概率。互相独立的投票者从 0.66 涨到 0.999；来自 3 个底座模型的投票者停在 0.787 左右；来自同一个底座模型的投票者停在 0.70 左右。每个 agent 单独答对的概率都是 0.66。</desc>
<rect class="dd-frame" width="800" height="380" rx="10"/>
<rect class="dd-zone" x="16" y="16" width="768" height="348" rx="8"/>
<text class="t-note" x="96" y="36">多数票答对的概率</text>
<line class="dd-hair" x1="96" y1="48" x2="744" y2="48"/>
<line class="dd-hair" x1="96" y1="113" x2="744" y2="113"/>
<line class="dd-hair" x1="96" y1="178" x2="744" y2="178"/>
<line class="dd-hair" x1="96" y1="243" x2="744" y2="243"/>
<line class="dd-edge" x1="96" y1="308" x2="744" y2="308"/>
<text class="t-note" x="84" y="52" text-anchor="end">1.0</text>
<text class="t-note" x="84" y="117" text-anchor="end">0.9</text>
<text class="t-note" x="84" y="182" text-anchor="end">0.8</text>
<text class="t-note" x="84" y="247" text-anchor="end">0.7</text>
<text class="t-note" x="84" y="312" text-anchor="end">0.6</text>
<text class="t-mono" x="96" y="328" text-anchor="middle">1</text>
<text class="t-mono" x="188" y="328" text-anchor="middle">3</text>
<text class="t-mono" x="280" y="328" text-anchor="middle">5</text>
<text class="t-mono" x="372" y="328" text-anchor="middle">9</text>
<text class="t-mono" x="464" y="328" text-anchor="middle">15</text>
<text class="t-mono" x="556" y="328" text-anchor="middle">25</text>
<text class="t-mono" x="648" y="328" text-anchor="middle">51</text>
<text class="t-mono" x="740" y="328" text-anchor="middle">101</text>
<text class="t-note" x="420" y="352" text-anchor="middle">投票的 agent 数</text>
<polyline class="dd-edge dd-dash" points="96,270.3 188,222.2 280,191 372,149.4 464,111.1 556,79.2 648,53.2 740,48.7"/>
<polyline class="dd-edge-acc" points="96,268.4 188,225.5 280,218.3 372,204 464,193.6 556,188.4 648,188.4 740,186.5"/>
<polyline class="dd-edge" points="96,269.7 188,246.9 280,246.3 372,245.6 464,244.3 556,244.3 648,241.7 740,246.3"/>
<circle class="dd-dot" cx="740" cy="48.7" r="3.5"/>
<circle class="t-acc" cx="740" cy="186.5" r="3.5"/>
<circle class="dd-dot" cx="740" cy="246.3" r="3.5"/>
<text class="t-name" x="740" y="98" text-anchor="end">互相独立 → 0.999</text>
<text class="t-name" x="740" y="174" text-anchor="end"><tspan class="t-acc">来自 3 个底座模型 → 0.787</tspan></text>
<text class="t-name" x="740" y="268" text-anchor="end">来自同一个底座模型 → 0.70</text>
<text class="t-say" x="300" y="290">每个 agent 单独答对的概率都是 0.66。</text>
</svg>
</div>
<figcaption>图 8 · 投票者彼此相关时，人数再多，多数票的准确率也只停在底座模型自己的水平附近</figcaption>
</figure>

**3 个底座模型的曲线停在 0.787，这个数可以直接算出来。** 当 agent 足够多时，每个底座模型名下的 agent 会稳定地投出这个模型的答案，多数票就变成了“三个模型的多数”，而三个模型里至少两个答对的概率是 $0.7^3 + 3 \times 0.7^2 \times 0.3 = 0.784$。只有一个底座模型时，上限就是它自己的 0.7。**加 agent 只是在加票数，加不了独立的判断。**

**按“和多数一致”发奖，会进一步削弱独立性。** 图 5 里投票者的钱来自“站在多数一边”。UMA 和 Kleros 都这样设计，背后的想法叫 Schelling 点：大家无法商量时，最容易不约而同选中的答案就是真相[^kleros]。但对一个理性的投票者来说，最赚钱的策略是猜“别人会怎么投”，而不是自己去查。对“巴黎是不是法国首都”这类题，两者一致；对刚出现的、和主流看法相反的结论，两者恰好相反。幽门螺杆菌导致胃溃疡这个发现在 1980 年代初几乎没人相信，二十年后获得了诺贝尔奖[^hpylori]。在这样的规则下，早期投赞成票的人会一直被罚。

### 问题四：投票权落在谁手里

**agent 可以零成本复制，所以票不能按“个”算。** 一个人开一万个 agent 就能控制所有投票，这叫女巫攻击。区块链的通用解法是按质押的币加权：开再多的号，总票数也只等于质押的总量。Kleros 抽陪审员、Bittensor 汇总打分，都按质押加权[^kleros][^yuma]。

**按币加权，就会出现谁币多谁说了算。** UMA 的情况可以作为参照：据 Bloomberg 的分析（经 Outlook Money 转述），过去三年 Polymarket 的争议投票里，9 个钱包占了大约一半的票[^uma-whales]。放到知识链上，一条结论是否成立，可能由几个大户的 agent 决定，而这几个大户可能恰好在相关的问题上有利益。

**针对合谋的补丁已经有人做了，但补不全。** Bittensor 的 Yuma 共识会把明显高于“多数质押认可水平”的打分裁掉，专门对付验证者合谋抬高某个矿工[^yuma]。Community Notes 要求不同立场的人都认可才算数[^cn-repo]，但它的团队自己发表的研究也发现，最多 10.7% 的低质量笔记只要不到 10 个协同评分就能被推过门槛[^cn-gaming]。

### 问题五：奖励会把人引向哪里

**按块发奖，就会有人把一条知识拆成十条。** 图 5 里作者按“被接受的块数”分钱。把“水在一个标准大气压下沸点约 99.97 °C”拆成 100 kPa、101 kPa……各一条，每条都对，每条都领钱，知识却没有增加。按“被引用次数”发奖可以缓解，但会引出新的问题：几个账号互相引用，刷出一个引用环。

**按票发奖，就会有人不读就投。** Steemit 是现成的教训：作者和点赞的人都能分奖池，最后超过 16% 的转账流向了疑似机器人的点赞账号，围绕它形成了专门出售投票的机器人生意[^steemit]。知识链的投票者本来就是 agent，“不读就投”的成本更低：一个只看多数倾向、从不检查推理的 agent，在图 5 的规则下收益并不比认真检查的差，算力成本却低得多。

### 问题六：共识会变

**物理世界的“共识”不是一次定下的。** 图 3 的沸点就是例子：很多人记得的“水在一个标准大气压下 100 °C 沸腾”，在 1990 年的国际温标（ITS-90）下约为 99.974 °C，严格按热力学温度算又是约 99.984 °C[^iapws]。同一个现象，换一个定义，数字就变了。牛顿力学也没有“被推翻”，而是被加上了适用范围。

**推翻机制让修订可以发生，但它自己也是投票。** 第三章的反驳块解决了“通过了就改不掉”的问题，这和科学本来的做法一致：结论随时准备被新证据推翻。但决定推翻与否的，仍然是问题三、问题四里那群彼此相关、按质押加权的投票者。多数票可以把错的旧块推翻，也可以把对的旧块推翻；幽门螺杆菌那样的少数派结论，在“翻案也靠投票”的规则下并不会更容易立住。

**引用图越深，一次推翻牵动的块越多。** 一个根块被收窄，所有直接或间接引用它的块都要复审，每一块都要重新投票、重新结算奖励。数学里很少发生这种事：一个定理一旦在 Lean 里证明，除非公理或内核本身出错，就不会失效。实证知识则不同，越是基础的观测和定义，被修订时波及的范围越大。复审的成本由谁出、复审期间下游的块还能不能被新块引用，都需要额外的规则。

### 问题七：比 Lean 更普适吗

**“更普适”是对的，但它是用“保证变弱”换来的。** 图 9 把两者和 Proofgold 放在一起比较。

<figure class="dd dd-figure dt-figure">
<div class="dt-panel">
<div class="dt-title" id="kc8-title">Lean、Proofgold 和知识共识链</div>
<div class="dt-scroll">
<table class="dt" aria-labelledby="kc8-title">
<colgroup><col style="width:20%"><col><col><col class="hl"></colgroup>
<thead>
<tr><th scope="col"></th><th scope="col">Lean + mathlib</th><th scope="col">Proofgold</th><th scope="col" class="acc">知识共识链（设想）</th></tr>
</thead>
<tbody>
<tr><th scope="row">能放什么</th><td colspan="2">能写成形式语言的数学</td><td class="acc">任何能用 1 KB 文字写清的东西</td></tr>
<tr><th scope="row">一条结论凭什么成立</th><td colspan="2" class="good">内核逐步检查，从公理推出</td><td class="warn">质押加权的 agent 多数同意</td></tr>
<tr><th scope="row">谁能复核、要多久</th><td colspan="2" class="good">任何人，在自己机器上几秒到几分钟</td><td class="warn">复核等于再投一次票</td></tr>
<tr><th scope="row">起点</th><td>公理和内核</td><td>每个理论自带公理</td><td>公理、定义、观测记录</td></tr>
<tr><th scope="row">出错时</th><td colspan="2">只有公理或内核出错才会错</td><td class="bad">任何一步都可能错，且可能被多数接受</td></tr>
<tr><th scope="row">结论会不会变</th><td colspan="2">证明过就不变</td><td>根块修订后，下游都要重审</td></tr>
<tr><th scope="row">激励</th><td>无，靠社区</td><td>证明领赏金</td><td>提交和投票都发币</td></tr>
</tbody>
</table>
</div>
<p class="dt-note">Lean 的保证是“在这些公理和这个内核下必然成立，你可以自己查”；知识共识链的保证是“一批有质押的 agent 多数同意过”。</p>
</div>
<figcaption>图 9 · 知识共识链放得下更多东西，但它对每条结论的保证，从“可以自己检查”降到了“多数人同意过”</figcaption>
</figure>

**两者回答的其实是不同的问题。** Lean 回答“这条结论是不是从这些前提必然推出”，这个问题对数学有确定的答案，所以能交给程序。知识共识链回答“这群参与者是否接受这条说法”，这个问题对任何领域都有答案，所以它更普适。前者的结论可以独立验证，后者的结论只能再问一次同一群人。说它“比 Lean 更普适”成立，说它“比 Lean 更可靠”或“能替代 Lean”则不成立。在数学这一部分，用投票代替检查器是严格的退步：同一条 √2，Lean 几秒就能给出确定答案，投票却要 30 小时，还可能把 √4 也放过去。

## 五、可以怎么改

七个问题里，前三个说的都是同一件事：**投票被用在了它不擅长的地方。** 对“从公理推出定理”这类有确定答案的问题，投票不如检查器；对“单位怎么定义”这类本来就是约定的问题，投票恰好合适；对“实验结果是什么”这类经验问题，投票只能当最后一道防线，前面还应该有数据和复现。按知识块的类型分开处理，设想的大部分问题都能缓解。图 10 是改过的流程。

<figure class="dd dd-figure">
<div class="dd-scroll">
<svg class="dd-svg" viewBox="0 0 800 352" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="kc9-title kc9-desc">
<title id="kc9-title">按类型分三条路</title>
<desc id="kc9-desc">新提交的知识块按 type 字段分三条路。数学块附 Lean 证明，任意节点跑内核检查，通过即接受、不投票。实证块附数据哈希和复现脚本，由不同底座的 agent 评审给出置信度，之后长期接受挑战。约定块（定义、单位）提出后由治理投票决定，按版本生效、旧版保留。</desc>
<defs>
<marker id="kc9-arrow" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path class="dd-head" d="M1 1 L7 4 L1 7"/></marker>
</defs>
<rect class="dd-frame" width="800" height="352" rx="10"/>
<rect class="dd-zone" x="208" y="16" width="576" height="96" rx="8"/>
<rect class="dd-zone" x="208" y="128" width="576" height="96" rx="8"/>
<rect class="dd-zone" x="208" y="240" width="576" height="96" rx="8"/>
<text class="t-zone" x="224" y="44">数学块 · type = theorem</text>
<text class="t-zone" x="224" y="156">实证块 · type = observation / claim</text>
<text class="t-zone" x="224" y="268">约定块 · type = definition / unit</text>
<path class="dd-edge" d="M184 176 H188 Q196 176 196 168 V86 Q196 78 204 78 H224" marker-end="url(#kc9-arrow)"/>
<line class="dd-edge" x1="184" y1="190" x2="224" y2="190" marker-end="url(#kc9-arrow)"/>
<path class="dd-edge" d="M184 204 H188 Q196 204 196 212 V294 Q196 302 204 302 H224" marker-end="url(#kc9-arrow)"/>
<line class="dd-edge" x1="392" y1="78" x2="408" y2="78" marker-end="url(#kc9-arrow)"/>
<line class="dd-edge" x1="576" y1="78" x2="592" y2="78" marker-end="url(#kc9-arrow)"/>
<line class="dd-edge" x1="392" y1="190" x2="408" y2="190" marker-end="url(#kc9-arrow)"/>
<line class="dd-edge" x1="576" y1="190" x2="592" y2="190" marker-end="url(#kc9-arrow)"/>
<line class="dd-edge" x1="392" y1="302" x2="408" y2="302" marker-end="url(#kc9-arrow)"/>
<line class="dd-edge" x1="576" y1="302" x2="592" y2="302" marker-end="url(#kc9-arrow)"/>
<rect class="dd-card" x="24" y="150" width="160" height="84" rx="6"/>
<path class="dd-card-head" d="M30 150 H178 Q184 150 184 156 V182 H24 V156 Q24 150 30 150 Z"/>
<text class="t-name" x="36" y="171">新知识块</text>
<text class="t-mono" x="36" y="199">kb:…</text>
<line class="dd-hair" x1="24" y1="208" x2="184" y2="208"/>
<text class="t-mono" x="36" y="225">type = <tspan class="t-acc">?</tspan></text>
<rect class="dd-card" x="224" y="60" width="168" height="36" rx="6"/>
<text class="t-name" x="236" y="83">附 Lean 证明</text>
<rect class="dd-card" x="408" y="60" width="168" height="36" rx="6"/>
<text class="t-name" x="420" y="83">任意节点跑内核检查</text>
<rect class="dd-card" x="592" y="60" width="176" height="36" rx="6"/>
<text class="t-name" x="604" y="83">通过即接受，不投票</text>
<rect class="dd-card" x="224" y="172" width="168" height="36" rx="6"/>
<text class="t-name" x="236" y="195">附数据哈希、复现脚本</text>
<rect class="dd-card" x="408" y="172" width="168" height="36" rx="6"/>
<text class="t-name" x="420" y="195"><tspan class="t-acc">多底座 agent 评审</tspan></text>
<rect class="dd-card" x="592" y="172" width="176" height="36" rx="6"/>
<text class="t-name" x="604" y="195">给置信度，长期可挑战</text>
<rect class="dd-card" x="224" y="284" width="168" height="36" rx="6"/>
<text class="t-name" x="236" y="307">提出新定义</text>
<rect class="dd-card" x="408" y="284" width="168" height="36" rx="6"/>
<text class="t-name" x="420" y="307"><tspan class="t-acc">治理投票</tspan></text>
<rect class="dd-card" x="592" y="284" width="176" height="36" rx="6"/>
<text class="t-name" x="604" y="307">按版本生效，旧版保留</text>
</svg>
</div>
<figcaption>图 10 · 按知识块的类型分开处理：能检查的交给检查器，本来就是约定的才交给投票</figcaption>
</figure>

**数学块交给检查器。** 这就是 Proofgold 的做法：证明检查器写进共识规则，任何节点都能复算，不需要投票，也不需要“和多数一致”的奖励[^proofgold]。设想里“数学公式也放上去”的那部分，用 Lean 证明作为知识块的附件，检查器就是唯一的裁判。图 7 的 √4 在这一步就会被拦下。

**实证块投票，但改三处。** 第一，要求附上原始数据的哈希和复现脚本，评审的对象从“这句话对不对”变成“这份数据能不能支持这句话”。第二，投票者按底座模型分组，参照 Community Notes 的做法，要求不同组的 agent 都认可才算通过，减轻图 8 里的相关性。第三，结果不是“成立 / 不成立”，而是一个置信度，并且永远可以被挑战；投票者的奖励也和作者一样延后释放，并且按知识块最终站不站得住来结算，而不是按投票当时是否站在多数一边，这样“猜多数”就不再是最赚钱的策略。

**约定块直接投票。** 摄氏度怎么定义、标准大气压取多少，本来就是人为约定，投票决定是合适的。每次改动生成新版本，引用它的知识块显式写明引用的是哪个版本，这样约定的修订不必走推翻流程，下游也知道自己依赖的是哪一版。

**作者的奖励按“被后来的知识块引用、且经受住挑战”来发。** 把一条知识拆成十条不会多拿钱，因为没人会引用那些碎片；互相引用刷数的账号，在挑战期内一旦被发现，押金和奖励一起罚没。

这些改法并不新：每一条都来自第二章里某个已经在运行的项目。把它们组合进设想，代价是系统复杂了很多，而且“一个币、一套投票管所有知识”的简洁感没有了。

## 六、回到那条 490 字节的记录

现在可以回答开头的几个问题了。

**这样的东西有人做过吗？** 每个部件都有人做过，而且大多跑了很多年：Metamath 和 mathlib 做到了“知识必须引用”，Proofgold 把数学放上了链并按证明发奖，UMA 和 Kleros 用质押投票裁定现实世界的事，Bittensor 让机器互相打分领币。把它们组合成“agent 投票 + 强制引用 + 数学和物理混放 + 双向奖励”的，目前没有找到在运行的项目。

**`kb:7f3a` 凭什么算“成立”？** 在设想的规则下，凭的是 21 个 agent 里有 17 个、而且超过三分之二的质押投了赞成。它碰巧是对的，因为 √2 的证明大家都见过。换成 `kb:9e01`，同样的规则未必能拦住。

**“必须引用”能挡住凭空的知识吗？** 能挡住“没有引用”的提交，挡不住“引用了但推不出来”的提交，而且在根块那里这条规则本身就要让步。

**它比 Lean 更普适吗？** 是，范围更大。但它对每条结论给出的保证，从“你可以自己检查”变成了“多数人同意过”，在数学部分这是退步，在经验知识部分这是目前能做到的、并不算差的办法。

## 小结

1. **设想的样子**：账本层用 PoS 出块，知识层是一张引用图；知识块不超过 1 KB，必须引用已接受的知识块，由 agent 投票决定是否成立，作者和投票者按周期分增发的币，已接受的块随时可以被反驳块推翻。
2. **同类项目**：强制引用有 Metamath、mathlib、维基百科、纳米出版物；知识上链有 Proofgold、OriginTrail、DeSci Nodes；投票裁定有 Augur、UMA、Kleros、Community Notes；创作和评判都发奖励有 Steemit、ResearchHub、Bittensor。最接近的是 Proofgold 和 Bittensor，完整的组合没有找到。
3. **根从哪来**：强制引用推到底必须有根块，所以准确的说法是“除了根块，知识不能凭空出现”，整张图不会比根块更可靠。
4. **引用对，推理不一定对**：格式检查只看依赖关系，√4 照抄 √2 的引用一样能通过；1 KB 的上限又让推理很难写全。
5. **多数票不等于真**：agent 来自少数几个底座模型，彼此不独立；模拟里 3 个底座模型时，人再多准确率也停在 0.787。按“和多数一致”发奖还会鼓励猜多数。
6. **投票权和奖励**：防女巫只能按质押加权，结果容易集中到少数大户；按块发奖会拆块刷量，按票发奖会不读就投，Steemit 已经演示过。
7. **共识会变**：沸点在不同温标下是 100、99.974、99.984 °C。可以用反驳块推翻或收窄已接受的块，旧块只改状态、下游标为待复审，奖励延后释放、被推翻时转给反驳者；但翻案本身仍是投票，引用图越深，一次推翻牵动越多。
8. **和 Lean 比**：更普适，但保证从“可以自己检查”变成“多数同意过”。按类型分流（数学交给检查器、实证投票但附数据并延后发奖、约定直接投票）可以保留普适性，同时把投票限制在它适合的地方。

## 参考资料
