动机
预测市场正在快速扩张(Polymarket 2024 年交易量约为 90 亿美元,2025 年超过 200 亿美元),但预言机的安全性却未能跟上。现有的预言机(UMA和 Kleros)依赖治理代币来保障经济安全。然而,这种机制已被实践证明存在漏洞:当超过 700 万美元的赌注依赖于市值仅为 5000 万美元的代币时,攻击就变得有利可图。
根本漏洞:线性权益加权投票(巨鲸主导)、可预测的投票者集合(便于协调)以及受治理代币市值限制的安全预算。
我建议采用不同的方法:建立一个以ETH为单位的安全性的预言机,攻击成本与 ETH 的市值成正比,而不是与治理代币的市值成正比。
建筑学
ETH Deposit -> Liquid Staking (Lido/RocketPool/cbETH) -> ~ 2.8 - 3 % APY|Validator Pool (global, single pool for all markets)|VRF Panel Selection (per market)/ \Panel A Panel B <- simultaneous, independent (commit-reveal) (commit-reveal)\ /Compare|A = B -> finalize ( 48 h)A != B -> Panel C (VRF, disjoint set) -> 2 -of- 3 rule ( 96 h)该协议结合了三种基本算法:二次投票权重、基于VRF的随机面板以及并行多轮决议。每种算法都已得到充分研究(例如, QV与抽签、 QSort以及Kleros申诉)。该协议的贡献在于将它们综合为一个预言机协议,其中每种基本算法的不足之处都由其他算法弥补。
协议设计
1.ETH质押采用二次方加权
验证者向协议存入ETH (最低 1 个ETH)。存款通过流动性质押提供商进行路由,因此质押的ETH可以产生收益(年化收益率约为 2.8-3%)。收益分配:80% 分配给验证者,20% 进入奖励池。
锁定期:14 天入场锁定(防止闪电攻击 - 攻击者无法存款并立即参与),14 天出场锁定(确保在提款前可以执行罚没)。
投票权重:
W_i = \sqrt{S_i} W i = √ S i
这是对抗巨鲸霸权的关键机制。影响力成本呈二次方关系:
| 赌注 | 线性权重 | 二次权重 | 每票成本 |
|---|---|---|---|
| 1 ETH | 1 | 1 | 1 ETH |
| 4个ETH | 4 | 2 | 2ETH |
| 25 ETH | 25 | 5 | 5ETH |
| 100 ETH | 100 | 10 | 10 ETH |
理性行为者会将权益分散到多个钱包:100 个钱包 x 1 个ETH = 100 票,共计 100 个ETH;而 100 个ETH则需要集中在一个钱包中。这种女巫攻击策略是可以预期的,并且已被考虑在内——它将攻击者的问题从“购买足够的代币”转移到了“注册并锁定数千个钱包 14 天”,这既需要大量资金,又容易被检测到。完整的成本计算请参见下方的攻击分析。
2. VRF面板选择
当市场需要解决时,该协议会从全球验证者池中随机选择一个验证者小组:
seed = VRF ( marketId , roundNumber , blockHash )
选择是加权随机抽样,不放回——每个验证者的选择概率与\sqrt{\text{stake}} √ stake成正比。
面板尺寸与市场规模成正比(风险越高→面板越大→越难操纵):
| 市场交易量 | 面板尺寸范围 | 最低池要求 |
|---|---|---|
| 低于 10 万美元 | 50-200 | 600 |
| 10万至100万美元 | 100-500 | 1,500 |
| 超过100万美元 | 300-2000 | 6,000 |
池中必须至少包含3 × maxPanelSize个合格验证者,以确保可以创建三个不相交的面板(用于第 1 轮、第 2 轮以及可能的第 3 轮)。
法定人数:小组规模的30%。如果在公布期内未达到法定人数,则截止日期延长24小时(仅限一次)。如果仍未达到法定人数,则该轮结果默认为上一轮的结果。如果所有轮次均未达到法定人数,则该市场被标记为无法解决,所有赌注将全额返还,不扣除任何费用。
轮次间排除:
排除的 R2 = 面板R1排除的R2 =面板R1
\text{排除}_{R3} = \text{面板}_{R1} \cup \text{面板}_{R2}排除R 3 =面板R 1 ∪面板R 2
验证者不能在同一个市场中投两次票。这保证了每一轮都由不同的验证者群体决定。
3. 并行提交-显示投票
核心设计选择:第 1 轮和第 2 轮在独立的面板上同时运行。
Panel A: [ Commit 24 h ][ Reveal 24 h ] - > Compare resultsPanel B: [ Commit 24 h ][ Reveal 24 h ]t = 0 t = 48 h提交阶段:每个验证者提交一个哈希值:
\text{commitment} = \text{keccak256}(\text{vote} \| \text{salt} \| \text{address}) commitment = keccak256 ( vote ∥ salt ∥ address )
揭示阶段:验证者揭示明文投票和盐值。合约验证哈希值是否匹配。
为什么并行系统至关重要:在顺序系统中,R1 的结果在第二轮 (R2) 开始之前就已经公开。这会导致信息泄露——R2 的投票者可能会受到 R1 结果的影响,而不是独立投票。并行小组是真正独立的谢林点博弈。每个小组在不知道其他小组决定的情况下达成共识。
最终确定(三选二规则) :
| R1 | R2 | R3 | 最终结果 | 时间 |
|---|---|---|---|---|
| 是的 | 是的 | - | 是的 | 48小时 |
| 不 | 不 | - | 不 | 48小时 |
| 是的 | 不 | 投票 | 2/3 | 96小时 |
| 不 | 是的 | 投票 | 2/3 | 96小时 |
当 R1 和 R2 达成一致时,结果将在 48 小时内生效,无需等待申诉。当他们意见不一致时,将从剩余的验证者池(不包括 R1 和 R2 的验证者)中抽取 C 组进行裁决,以打破僵局。
4. 分层斩击
在所有轮次中,对最终结果投反对票的验证者都会被扣除验证费。扣除率与市场交易量成正比——交易量越大,惩罚力度越大:
| 市场交易量 | 折扣率 |
|---|---|
| 低于 10 万美元 | 2% |
| 10万至100万美元 | 5% |
| 100万至1000万美元 | 10% |
| 超过1000万美元 | 15% |
削减的资金分配如下: 80%分配给多数投票者(与\sqrt{\text{stake}} √ stake成比例), 20%分配给一般奖励池。
在三轮投票制(例如第一轮=赞成,第二轮=反对,第三轮=赞成 → 最终赞成)中,所有三轮中投反对票的选民都会被平均扣分。这鼓励选民无论被分配到哪一轮都进行诚实投票。
5. 质量指标和声誉
每个验证者都会维护一个累积质量评分:
Q_i^{(t+1)} = Q_i^{(t)} + \Delta Q, \quad \Delta Q = \begin{cases} +1 & \text{多数派} \\ -1 & \text{少数派} \end{cases} Q ( t + 1 ) i = Q ( t ) i + Δ Q , ΔQ = { + 1多数−1少数民族
- 新验证者从Q_0 = 0开始, Q 0 = 0
- 如果Q < -20 ,则减免10 % 并禁售 90 天。
- 禁售期结束后的收益: Q_0 = -10, Q 0 = − 10 ,新的14天禁售期
- 屡犯者每次罚款10%——持续的不良行为代价越来越高。
不活跃惩罚:被选入验证小组但未参与投票的验证者,每次未投票将被扣除其质押金额的0.1% 。此举旨在杜绝那些为了获取收益而质押但从不参与决议的“搭便车”者。
6. 奖励结构
诚实的验证者可以通过三种途径获得收益:
- 市场费用:交易量的0.5%
- ETH被削减:从少数选民手中重新分配
- 质押收益:20% 的流动性质押年化收益率 (APY) 将分配至奖励池
验证者i在多数派中的分布情况:
\text{奖励}_i = \text{奖励池} \times \frac{\sqrt{S_i}}{\sum_{j \in \text{多数派}} \sqrt{S_j}}奖励i =奖励池× √ S i ∑ j ∈ major √ S j
奖励条件:投票(承诺+公布),多数票, Q \geq -20 Q ≥ − 20 。
7. 验证者生命周期
None -- stake ()- -> LockIn ( 14 d) - -> Active|+-- exit ()- -> ExitReq - -> LockOut ( 14 d) - -> Exited|+-- Q < - 20 - -> Banned ( 10 % slash, 90 d) - -> LockIn (Q=- 10 )该状态机确保验证者无法通过快速进入或退出系统来利用时间漏洞。验证者必须保持活跃状态至少 14 天才能被选入面板,并且在申请退出后必须等待 14 天才能提取资金——在此期间,待处理的罚没处罚仍然有效。
攻击分析
西比尔攻击成本
理性的攻击者使用最小权益钱包(每个钱包 1 ETH , \sqrt{1} = 1 √ 1 = 1权重 - 最佳比例)。
假设:诚实池由 10,000 个验证者组成,平均质押 5 ETH。
总诚实重量: 10,000 × √5 ≈ 22,360 10,000 × √5 ≈ 22,360
要控制超过 50% 的预期面板权重,攻击者需要A > 22{,}360 A > 22,360 个女巫钱包:
攻击者份额 = A / (22,360 + A) > 0.5 意味着 A > 22,360攻击者份额= A 22,360 + A > 0.5 ⟹ A > 22,360
成本:约 22,400 个ETH (按 2,300 美元/ETH计算约为 5200 万美元),全部锁定 14 天。
投资回报率计算(1000万美元市场)
| 价值 | |
|---|---|
| 潜在利润(50%的市场份额) | 500万美元 |
| 所需资本(股份) | 5200万美元 |
| 资金锁定 | 28天 |
| 成功投资回报率 | 9.6% |
| 失败损失(削减 15%) | -800万美元 |
预期收益为负:攻击者冒着损失 800 万美元的风险,却只能获得 500 万美元,而且资金会被锁定一个月。此外,该攻击是可以检测到的——在 14 天的锁定期内,突然涌入 2.2 万个最低质押额的验证者,这显然是一个异常情况。
为什么治理代币攻击不适用
在这个协议中,攻击目标资产是ETH生态系统中流动性最强的资产。即使购买价值5200万美元的ETH,也无法显著影响其价格。相比之下,治理代币攻击只需获取25%的质押代币即可操纵结果,而且这些代币在投票后还可以出售。而在这个协议中,攻击失败会导致ETH被永久扣押。
检测与响应
14 天的准入锁定期为检测提供了窗口。如果协议观察到新的最低权益注册数量出现异常激增,它可以:
- 增加待定市场的面板尺寸
- 提醒社区
- 诚实的验证者池有时间做出反应(增加质押,招募更多验证者)。
这与闪电贷或同块攻击有着本质区别——攻击者必须投入资金并等待。
未解决的问题
我希望就以下几点获得反馈:
Sybil攻击的资金Threshold:5200万美元以上加上14天的锁定是否足以起到威慑作用?或者是否存在我忽略的更便宜的攻击途径?攻击者能否仅针对交易量低、面板尺寸较小的市场获利?
MEV 和 VRF 种子:种子包含
blockHash,而 blockHash 由The Block提议者控制。提议者能否操纵区块组组成?什么样的随机性来源才能提供足够的保护?并行投票独立性:该设计假设并行小组产生独立的谢林点结果。B 小组的验证者能否尝试预测 A 小组的结果?真正的独立性是否需要额外的机制设计?
质量指数博弈:验证者可能对低价值市场(构建QQ分数)进行诚实投票,而对高价值市场进行不诚实投票。ΔQ 是否应随市场规模而变化?
参数
所有数值均为初步估算值,仅供讨论。实际生产值应通过测试网实验和经济模拟确定。设计约束条件:
- 最低投资额 → Sybil 的资本要求依然很高
- 锁定持续时间 → 闪光攻击仍然不可能
- 面板尺寸 → 与市场价值成正比,面临风险
- 削减投票率 → 不诚实投票在每个层级都会导致负期望值。
- 质量阈值 → 过滤掉屡教不改的不良行为者,容忍无心之失
完整规格: GitHub 仓库(MIT 许可证)。
先前工作
该设计基于: QV with sortition(Vitalik,2019) 、 QSort 、 oracle voting rules 、Kleros(随机陪审团 + 顺序上诉)和UMA DVM 2.0(提交-揭示 + slashing)。