白皮书 / 提款证明、争议与根挑战
Dexter 白皮书

提款证明、争议与根挑战

每一笔 USDC 支付——挑战赛利润分成、排行榜奖金、推荐佣金——离开金库时都对应一份将用户钱包、应付余额、nonce 与已发布并提交到 Base 的结算根绑定的加密证明。如果 Merkle 证明无法基于已存储的根重构,finalizeWithdraw 会回滚。本页介绍四步请求生命周期、让任一社区成员可以在 USDC 移动之前对坏根提出异议的三种挑战方法,以及当提款在证明窗口中停留超过 24 小时目标时的精确恢复路径。

最近更新:2026 年 5 月 24 日
2 节 阅读 1 分钟 白皮书章节

七项合约原语构成基于证明的退出。前四项是每次提款的必备条件;后三项可供任何具有对已发布根提出挑战资格的地址使用。

机制 它的作用
requestWithdraw(amount) 发出一个链上 nonce,将用户的钱包、金额与时间戳绑定到具体的提款意图——没有 nonce,就没有退出路径
状态根历史 近期结算根的仅追加环形结构;finalizeWithdraw 必须引用仍在该历史中的根,这使得静默替换可被检测
Merkle 证明 + 叶子 用户侧叶子数据(钱包、余额、nonce 列表)加上重构所引用根的兄弟路径——重构失败则调用回滚
disputeWindowSec 根提交与最早 finalizeWithdraw 之间的可配置挑战窗口;在快速支付与异议时间之间权衡调整
challengeRootFraudProof 提交欺诈验证者输出,证明运行时提交了一个与有效状态过渡不一致的根
challengeRootInvalidLeaf 提交一个反向叶子,显示已发布树中某个账户余额与运行时所欠不一致
challengeRootConflict 提交两个声明的父节点或序号互相矛盾的根,暴露历史分叉

#提款路径受证明门控

用户先以希望退出的 USDC 金额调用 requestWithdraw。合约发出一个 nonce,将该请求与用户钱包、金额与区块时间戳绑定。该 nonce 是运行时唯一被允许据以行动的对象——一个从未调用过 requestWithdraw 的钱包,即使由运行时发起的支付,也无法通过 finalizeWithdraw,因为 Merkle 叶子中不存在匹配的 nonce。

运行时随后将该请求纳入下一个结算状态。当该状态被提交到 Base 时,新的根进入仅追加历史环,disputeWindowSec 开始。网关暴露用户的叶子数据与重构根所需的兄弟路径,使用户(或他们信任的任何客户端)可以在提交前进行链下证明校验。一旦 disputeWindowSec 在没有成功挑战的情况下结束,finalizeWithdraw 即可调用:合约根据所引用根在链上重新进行 Merkle 重构、检查 nonce 匹配且未被消耗、校验该根仍在历史中,然后才将 USDC 转账给用户钱包。

如果提款超过 24 小时目标仍在等待,故障是可观察的。要么 disputeWindowSec 仍处于开放(在合约上可见),要么根尚未提交(在 Basescan 上表现为自 requestWithdraw 以来不存在 commitSettlement 交易),要么人工审核队列已将该支付标记为领奖台前三或 $5K 以上的核验。在所有情况下,该请求仍在队列中,且在门控条件清除后即刻可最终确认——它不会过期。

TEXT
 requestWithdraw(amount)
   -> 链上 nonce 绑定钱包 + 金额 + 时间戳
   -> 运行时将请求纳入下一个结算根
   -> commitSettlement(root) 发布到 Base,进入历史环
   -> disputeWindowSec 开始
   -> 网关暴露叶子 + 兄弟路径,供链下校验
   -> disputeWindowSec 结束且无成功挑战
   -> finalizeWithdraw(nonce, leaf, proof, rootRef) 释放 USDC

#挑战与欺诈证明存在的原因

发布不等于正确。争议窗口存在的目的,是让任何能够构造反例的人都有资格在 USDC 因坏根而移动之前阻止它。三条挑战路径覆盖恶意或有 bug 的运行时可能引入的三种故障模式。challengeRootFraudProof 针对的是已发布根不可能由有效状态过渡产生的情形——欺诈验证者钩子在链上运行有争议的步骤,如果其输出不一致则拒绝该根。challengeRootInvalidLeaf 针对的是某个具体账户叶子错报运行时应付余额的情形;挑战者提交反向叶子,合约比对签名与累计余额。challengeRootConflict 针对的是历史分叉:两个已提交的根,其父节点引用或序号互相矛盾即互斥,合约会使较晚的提交失效。

成功的挑战使有争议的根失效、冻结任何引用该根的提款,并迫使运行时从最后已知良好状态重新计算与重新提交。失败的挑战消耗挑战者所抵押的保证金,根则原地保留。这种经济上的不对称——假警保证金损失、对正确警报防止金库规模影响——是有意为之。它奖励提交可复现反例的纪律,而非投机性投诉,同时仍对任何能够产生反例的地址保持异议路径开放。

这就是为什么一笔 Dexter 提款并不依赖于孤立地信任运行时。它依赖于一份已提交的根、一份可校验的证明、一段无法被静默改写的历史、一段任何第三方都可以挑战的窗口,以及一个把每一次最终确认都发布到 Base 的多签金库。