MonadBFT 深入研究 - 高性能共识的机制设计基础 - 第 1 部分

  • thogiti
  • 发布于 3小时前
  • 阅读 40

本文深入探讨了 MonadBFT 共识协议的机制设计,将其置于博弈论框架下,分析了验证者在协议中的策略行为,并提出了六个研究问题,旨在通过微调代码和机制,提升协议的经济激励性和安全性,同时保持其高性能和线性执行路径。

概述

共识协议存在于经济体内部。验证者持有权益,支付运营成本,追逐或防御 MEV,有时还会串通。如果我们将 MonadBFT 仅仅描述为一个消息传递算法,我们就忽略了驱动真实结果的力量。在本系列中,我们将 MonadBFT 视为一种机制:一种由战略代理人参与的规则系统。我们的问题是机制设计问题:该协议是否使“遵循规范”成为理性验证者的最佳响应,同时保持对拜占庭行为的安全性?

MonadBFT 的论文^2实现 旨在实现快速确认、可问责的安全性和抵抗尾部分叉,同时保持快乐路径基本线性。在这篇开篇中,我们 (i) 将 MonadBFT 置于清晰的博弈论基础上,(ii) 将其产物解释为机制组件,(iii) 将这些组件固定到 repo,以及 (iv) 提出了六个研究问题,其解决方案可以在不膨胀协议的情况下加强该机制。之后的文章将逐一探讨这些问题。


1) 作为重复博弈的 MonadBFT

我们对视图 $v=1,2,\ldots$ 建立一个无限视界的博弈模型。在每个视图中,领导者 $\ell(v)$ 提出一个区块 $B_v$;验证者要么投票(快乐路径),要么发送超时(不快乐路径)。网络是部分同步的:在一个未知的 GST 之后,诚实 ↔ 诚实的消息在 $\Delta$ 内到达; pre-GST 的延迟是无界的。安全性不假设 GST;活跃性和延迟则假设 GST。

每个验证者 (i) 都有一个类型 $\theta_i$(权益 $s_i$,延迟,MEV 容量,联盟意图)和一个每个视图的效用

$$ U_i=\text{fees}_i+\text{rewards}_i+\text{relayPay}_i - \text{costs}_i(\text{compute},\text{bw},\text{delay}) - \text{slash}_i + \text{MEV}_i(\text{ordering},\text{timing}). $$

我们以序列(完美贝叶斯)均衡进行推理,并且尽可能地以不依赖于先验的事后激励陈述为目标。


2) 作为机制组件的协议产物

共识系统读起来就像分布式戏剧:客户端宣布意图,节点解释它们,信使合唱团在舞台上传递台词,而起搏器保持时间。MonadBFT 以 Rust 渲染了这场戏剧。以下每个产物同时是一个软件组件和一个机制元素,一个激励、信息和控制与代码相遇的点。

从经济角度来看,保持线性快乐路径不仅降低了延迟;它还降低了参与的边际成本,因此较小的验证者可以保持竞争力,直接对抗中心化压力。

2.1 从客户端意图到链上承诺

一个典型的回合从验证者集合之外开始。客户端使用 JSON-RPC;节点将意图转换为候选状态转换;共识决定这些转换成为法律的顺序[^4]。

核心共识和交易流程 :ingress → tx admission → propose/vote (QC/TC) → commit → RPC externalization.

Ingress (RPC 作为意图边界)。 monad-rpc 公开以太坊兼容的 HTTP/WebSocket 端点,验证请求形状,并通过 IPC 将交易/状态查询转发到节点执行器(monad-rpc/src/main.rs L65–125, 130–155)。机制视角:RPC 是报告渠道,用户在此披露稍后驱动分配的出价(每 gas 的小费)。

Admission & pre-adjudication (TxPool + policy)。 EthTxPoolExecutor 检查签名和策略,存储交易,并根据共识的需求,生成受 EthBlockPolicy 限制的提案。排序是在 tracked-pool sequencer 中实现的优先级规则(monad-eth-txpool/src/pool/tracked/sequencer.rs)。机制视角:这是对批次的分配规则;目前是 effective_tip_per_gas 上的 first-price 优先拍卖。

Consensus loop (propose → vote → QC/TC)。 monad-consensus-state 运行 HotStuff 系列的回合:领导者发出 Proposal,验证者验证并投 Vote,系统聚合一个 QC;在停滞时,它累积一个 TCmonad-consensus-state/src/lib.rs ~L435–752)。机制视角:QCs/TCs 是在部分同步下对齐信念并推进博弈的公共信号

Persistence & externalization. 已提交的区块通过 MonadBlockFileLedger 刷新;状态增量信息落入 TrieDB (monad-triedb)。RPC 将最终/乐观的视图呈现回客户端。机制视角:账本是分配结果;乐观的确认是在不含糊其词的前提下的承诺设备

2.2 Executors, events, and the control plane (how messages become moves)

Monad 遵循一个清晰的 executor 模式monad-node 协调类型化的事件和命令;每个子系统都是一个具有狭窄合约的工作者。

monad-node 启动密钥/配置 (NodeState),连接 executors,并驱动事件循环(monad-node/src/main.rs L109–153, 299–418, 458–548)。ParentExecutor 将命令转发到 MultiRouter(网络)、TokioTimer(超时)、EthTxPoolExecutor(提案)、StateSyncLedger 等(monad-executor-glue/src/lib.rs L57–76, 441–489, 563–585)。机制视角:事件总线 限定了战略空间,谁可以在何时以何种证据做什么。类型化的命令使激励边界明确。

2.3 The network as courier, not arbiter (RaptorCast, routing, identity)

广播必须快速、具有抗丢包能力且具有可信的中立性。这是 RaptorCast 的工作:UDP + fountain codes + 权益范围内的组,由路由/身份层管理。

MultiRouter 抽象了传输;PeerDiscoveryDriver 通过签名的 MonadNameRecord 和活跃性裁剪来维护拓扑(monad-node/src/main.rs ~L643–663, docs/peer_discovery.md)。RaptorCast 使用冗余编码/广播消息;接收者验证作者身份/组员身份并丢弃欺骗/大小不足的数据块(monad-raptorcast/src/udp.rs L192–247)。机制视角:信使应该是激励中立的;如果不是(搭便车中继),我们会得到一个可衡量的设计表面(问题 4)。

2.4 The consensus core as a set of levers

这是大多数机制旋钮所在的地方。

Leader election (allocation ex-ante)。 WeightedRoundRobin 通过由 round 种子化的确定性 ChaCha20 从权益中抽取领导者(monad-validator/src/weighted_round_robin.rs L44–83, 144–151)。杠杆:不可预测性 vs. 可验证性;DSIC vs. 可调度性。

Pacemaker (timing & escalation)。 Δ_timer = 3Δ + vote_pace + local_proc; 当阈值命中时,两阶段超时处理会产生 TC(monad-consensus/src/pacemaker.rs L166–177, 294–381)。杠杆:时间策略证明;自适应 vs. 可操纵的 Δ。

Vote aggregation & safety (public signals + constraints)。 VoteState 聚合签名并形成 QC;Safety 强制执行锁定/双重投票规则(vote_state.rs L82–180)。杠杆:驱动信念和削减的证据。

No-endorsement path (negative evidence)。 当 payload 未获得诚实支持时,NoEndorsementState 和 NEC 消息驱动安全回退(monad-consensus-state L442–1004 中的处理程序)。杠杆:”证明不存在“以解除对进度的阻塞。

2.5 Transaction pool & proposal policy (where MEV meets allocation)

OrderedTx 实现

fn cmp(&self, other: &Self) -> Ordering {
    (self.effective_tip_per_gas, self.tx.gas_limit())
        .cmp(&(other.effective_tip_per_gas, other.tx.gas_limit()))
}

,一个在 slot 上的 first-price 优先拍卖(sequencer.rs Ord::cmp commit)。EthBlockPolicy 设置每个区块的资源上限(模块 monad-eth-block-policy)。机制视角:排序规则定义了投标者的最佳回应;策略边界定义了可行集。

2.6 Storage, state sync, and the external view

TrieDB + 缓存形成具有调整后的读取并发性的权威状态;StateSync 为滞后节点提供数据。机制视角:确认表面(乐观 vs. 最终确定)在我们均衡分析中充当承诺设备

2.7 The message taxonomy that drives the game

ProposalMessage(领导者行动),VoteMessage(认可),TimeoutMessage(升级),RoundRecovery/NoEndorsement(负面证据)。路由器发布/广播。这些不仅仅是数据包;它们是携带承诺、成本和信念的机制原语。当我们调整它们、向选举中添加 VRF、为中继付费时,我们正在改变均衡集。


3) Three core properties (paper theorems with intuition)

3.1 No-Tail-Forking (NTF)

这是 MonadBFT 论文^2 中的 定理 1 (“No-Tail-Forking”)。非正式地:在 GST 之后,如果一个区块 $B_v$ 具有一个带有严格多数诚实验可的 QC,那么任何冲突提议都不能在相同的序列 $v$ 处提交。高度为 $v{+}1$ 的任何有效后继者必须要么扩展 $B_v$,要么携带一个 无认可证书 (NEC),该证书证明父级无法被多数重建(例如,数据不可用)。

机制如何强制执行它。 MonadBFT 的恢复规则强制执行 extend-or-explain:新的领导者必须重新提出 high tip($\ge 2f{+}1$ 投票的最新鲜提议)除非 它出示 NEC。NEC 聚合了 $f{+}1$ 签名,证明 high-tip 区块无法从已公布的 QC 中重建。这使得“跳过广泛认可的父级”变得不可能,除非有公共负面证据,而这正是尾部分叉所需要的。该论文的 引理 2、引理 3、引理 4 建立了用于证明 定理 1 的投票/形式有效性属性。

Intuition. 在流水线 BFT 中,恶意后继者可能会试图放弃前任以窃取其价值。MonadBFT 关闭了该路径:后继者要么扩展认可的父级,要么提供代价高昂、可验证的证据 (NEC) 表明扩展是不可能的。这就是 NTF。引理 4^2 保证了这一点,该引理表明一旦 $≥2f+1$ 验证者投票支持诚实的区块,所有后续提议都必须扩展它。

Mechanism-design note. NEC 充当 非认可的可验证证书,它强制执行 extend-or-explain 选择。因此,诱导的社会选择规则 $f:\Theta\to\text{Blocks}$ 满足 事后激励兼容性 属性(即,在所有私人信息被揭示后,说真话仍然是最优的):对于任何类型 profile $\theta$,一旦诚实的区块收集到 $\ge 2f+1$ 票数,任何偏差都无法改变该高度的结果,除非产生代价高昂的公共证据 (NEC)。

3.2 Accountable speculation (early confirmations revert only on equivocation)

“提前确认”快速路径的安全性由 定理 2 (“Safety of Early-Confirmation”)定理 3 (“Safety”) 一起捕获。该论文的 推论 1 指出了 operational headline:投机性确认仅在存在可问责的加密证据时才会恢复,例如,领导者含糊其词(同一视图/序列的两个冲突的已签名提议)。

机制如何强制执行它。 两个要素:

  1. 通过 QC 锁定。 当验证者看到先前者的 QC 时,严格多数的诚实验证者已经被锁定;在同一视图中不存在有效的“覆盖”。因此,投机性行动是安全的。

  2. 客户端阈值和回滚条件。 客户端仅在收到 $2f{+}1$ 个相同视图的早期确认后才会完成。如果拜占庭领导者含糊其词,并且没有分支达到该阈值,那么投机性的节点将 仅在 看到加密证明(冲突的已签名提议)时才会恢复。该证据是可以被削减的,因此恢复是可问责的。

Intuition. 我们用延迟来换取范围明确的风险:“快速前进”当 QC 证明先前者时;如果发生恢复,则必须带有收据(含糊不清的证据)。这会将任何回滚与惩罚联系起来,我们可以在 staking/slashing 经济学中校准这些惩罚。

3.3 Optimistic responsiveness (progress at network speed after GST)

定理 4 (“Strong Liveness”) 正式表示,在 GST 之后,进度以事件速度发生:一旦 $2f{+}1$ 响应到达,协议就会前进,而无需等待保守的挂钟时间。支持性的 timing 引理包括 引理 7(GST 之后没有 QC+TC 冲突),引理 9(在不可用情况下,NEC 的有界延迟构造/传播)和 引理 10–11(一旦满足 TC/NEC 条件,所有正确节点都会收敛并前进)。

机制如何强制执行它。 当 $2f{+}1$ 到达时,超时会聚合到 TC 中;TC 携带每个验证者的小费,从而可以立即从证据而不是从固定的计时器中进行下一个领导者重新提议。同样,NEC 提供简洁、可验证的信号,以便在数据可用性失败的情况下前进。因此,起搏器是 事件驱动的:它基于仲裁证据进行键控,而不是基于长挂钟时间缓冲。

Intuition. 固定的“几乎 $\Delta$”计时器要么将性能留在桌面,要么激励边缘浏览。MonadBFT 的事件驱动起搏器在健康时以网络的速度移动,并且仅在合格的公共证据上回退。这正是 定理 4 断言的内容。


这三个如何适应我们的机制议程。

  • 定理 1 (NTF) 是我们订购中 extend-or-explain 策略的骨干 (§5.1):一旦 NEC 伪造代价昂贵,它就会将“reorg-for-MEV”变成一种受支配的策略。
  • 定理 2 / 定理 3 + 推论 1 (Accountable speculation) 证明了更快的确认规则是合理的,同时确保任何回滚都伴随着可削减的收据。
  • 定理 4 + 引理 7, 9, 10, 11 (Strong liveness / responsiveness) 激发了 §5.6 中小型起搏器控制器:我们可以在不添加消息或削弱活跃性的情况下抑制 timing 博弈。

我们现在已经构造了该机制并确定了其安全属性。接下来,我们将这些抽象连接到 MonadBFT 代码库[^1] 中的特定文件和行。下面的每个锚点都显示了今天存在的确切实现,为什么它会产生激励接缝,以及在不更改 MonadBFT 消息模式的情况下改进博弈的最小更改。


4) Code → theory: precise touch points

在提出更改之前,我们希望将抽象机制固定到 repo 中的确切行。下面的每个小节都会做三件事:(i) 显示实现协议工件的特定代码路径,(ii) 解释 该处产生的 机制设计压力(激励、可预测性、公共物品泄漏),以及 (iii) 草绘 最小的设计推力,该推力在不更改 MonadBFT 的出色消息模式的情况下改进了激励。将这些视为“外科锚点”:我们没有重写共识;我们正在收紧具有经济意义的接缝。

有了这个框架,下面的代码片段就不是随机例子,它们是种子行、价格规则或小型控制器参数改变协议实际参与的 博弈最小位置

4.1 Leader selection (replayable and predictable → add VRF seed)

Deterministic PRNG helper (seeded by round):

// monad-validator/src/weighted_round_robin.rs
fn randomize(x: u64, m: u64) -> u64 {
    let mut gen = ChaCha20Rng::seed_from_u64(x);
    gen.gen_range(0..m)
}

Cumulative-stake sampling (u64 path):

// monad-validator/src/weighted_round_robin.rs (excerpt)
fn generate_random_validator_u64<PT: PubKey>(
    round: Round,
    validators: Vec<(&NodeId<PT>, &Stake)>,
) -> NodeId<PT> {
    let mut total_stakes = 0_u64;
    let stake_bounds = validators
        .iter()
        .filter_map(|&(node_id, stake)| {
            let stake_u64 = stake.0.to::<u64>();
            if stake_u64 > 0 {
                total_stakes = total_stakes
                    .checked_add(stake_u64)
                    .expect("total stake <= u64::MAX");
                Some((node_id, total_stakes))
            } else { None }
        })
        .collect_vec();
    // ... choose stake_index via randomize(round.0, total_stakes), then binary search ...
    // returns *stake_bounds[upper_bound].0
}

Interface + per-epoch branch (deterministic seeding by round.0):

// monad-validator/src/weighted_round_robin.rs
impl<PT: PubKey> LeaderElection for WeightedRoundRobin<PT> {
    type NodeIdPubKey = PT;

    fn get_leader(
        &self,
        round: Round,
        epoch: Epoch,
        validators: &BTreeMap<NodeId<PT>, Stake>,
    ) -> NodeId<PT> {
        if epoch < self.staking_activation {
            generate_random_validator_u64(round, validators.iter().collect_vec())
        } else {
            let mut gen = ChaCha20Rng::seed_from_u64(round.0); // deterministic, computable schedule
            let randomizer = |total_stake| randomize_256_with_rng(&mut gen, total_stake);
            generate_random_validator_with_randomizer(validators.iter().collect_vec(), randomizer)
        }
    }
}

Why this matters economically.分配规则是与权益成比例的(累积界限)。信息结构是种子。用公共 $\texttt{round.0}$ 种子化 ChaCha20 使得整个领导者计划可以事先计算。可重放性很好;可预测性诱使针对即将上任的领导者的抢先 MEV有针对性的 DoS

Minimal mechanism nudge. 保留抽样代码;交换种子。从先前 epoch 的 QC/TC 记录中派生一个每个 epoch 种子化的 VRF(事后可验证),并将其馈送到每个轮次的 ChaCha20 中。你可以在事后保留可重放/调试确定性,但会提高 事先的最小熵

引理(next-leader 最小熵,非正式)。 借助敌对权益份额 $\alpha$ 和对 epoch 种子提供的 $k$ 个独立诚实贡献, $$H_\infty!\big(\ell(v)\mid \mathcal{I}_A\big) \ge \log \frac{1}{\alpha+\varepsilon(k)}$$ 对于可忽略的 $\varepsilon(k)$。效果:时间表保持可重构;未来的领导权变得难以抢先。

评价:见 §5.2(领导者选择)。


4.2 Transaction ordering (first-price priority → batch auction + order-commit)

Current priority rule (first-price by tip-per-gas, then gas limit):

// monad-eth-txpool/src/pool/tracked/sequencer.rs
impl<'a> Ord for OrderedTx<'a> {
    fn cmp(&self, other: &Self) -> Ordering {
        (self.effective_tip_per_gas, self.tx.gas_limit())
            .cmp(&(other.effective_tip_per_gas, other.tx.gas_limit()))
    }
}

Why this matters economically. 这是一个纯粹的 first-price 优先级机制。它不是 DSIC:用户对出价进行阴影处理;领导者可以捕获 重新排序租金;搜索者可以进行抢先交易。安全性很好,但福利和感知到的公平性会受到影响。

Minimal mechanism nudge. 将一个区块视为一个批次:(i) 在纯文本之前绑定一个排序置换(commit-and-reveal 或每个 tx 隐蔽);(ii) 为包含的 tx 清除一个 单一价格(统一清除小费或类似 VCG 的付款);(iii) 对与已提交的到达的无端差异添加适度的审计处罚

引理(在 IPV 下的真实性,非正式)。 在独立的私有值下,具有统一清除价格的批量分配是 DSIC/BNE(取决于详细信息),并且预期的重新排序利润受校准的审计惩罚上限约束。效果:更少的 MEV 方差,更稳定的费用,验证者收入通过清除价格得以保留。

评价:见 §5.1(订购和 MEV)。


4.3 Pacemaker timing (static edge → strategy-proof controller)

Current timeout calculation:

// monad-consensus/src/pacemaker.rs
fn get_round_timer(&self, round: Round) -> Duration {
    self.delta * 3 + vote_delay + self.local_processing
}

Why this matters economically. 固定的边缘会邀请“几乎太晚”的联盟时间安排:投票刚好在计时器的范围内,以偏向下一个提议者,从而增加延迟尾部而不会越过削减线。

Minimal mechanism nudge. 为每个节点添加一个小的反馈控制器,以估计本地条件并惩罚 TC 形成中延迟投票的系统聚类: $$ \theta_{v+1} = (1-\alpha)\,\theta_v + \alpha\,\widehat{\Delta}_v + \beta\,\widehat{v}_v $$ 并在聚合超时时稍微降低聚类接近截止日期的投票的权重(没有新的阈值,只是统计折扣)。

引理(dominated 的延迟偏差,非正式)。 通过合适的 $(\alpha,\beta)$ 和 TC 权重,系统的几乎延迟投票受到严格支配(更高的 TC 风险/更低的预期收益),同时 $P99$ 提交延迟得到改善。效果:更好的尾部,不变的消息模式。

评价:见 §5.6(起搏器)。


4.4 Staking flows (where we calibrate strict honesty)

存在两个不同的“权益”接触点,用于不同的目的:

  1. 领导者分配权重(概率):由 weighted_round_robin.rs 中的累积权益抽样来实现(请参阅 §4.1)。这决定了 谁可以领导

  2. Payouts/penalties plumbing(payoff):通过系统交易实现的,该系统交易铸造奖励(并且是资格门/惩罚的自然家园)。

奖励管道工程(强制执行Hook):

// monad-system-calls/src/lib.rs
system_calls.push(SystemCall::StakingContractCall(
    StakingContractCall::Reward { block_author_address, block_reward },
));

Why this matters economically. 分配 (4.1) 设置领导概率;强制执行 设置 激励措施。我们共同调整不含糊其词的削减 $\phi$ 和 奖励不合格窗口 $\omega$,以便即使使用流动性质押或外部信用,对于长期存在的验证者而言,偏离也是严格无利可图的 在折价效用中

$$\mathbb{E}\big[ui(\text{deviate})\big] = \text{MEV}{\text{now}} - \phi s_i + \delta \cdot \mathbb{E}\big[u_i^{\text{post-slash}}\big] < \delta \cdot \mathbb{E}\big[u_i^{\text{honest}}\big],$$

其中 $\delta\in(0,1)$ 是每个视图的折扣因子, $\omega$ -length 不合格窗口通过放弃奖励来降低削减后效用 $\mathbb{E}[u_i^{\text{post-slash}}]$。这会将“遵循规范”从微弱的最佳响应转换为严格的最佳响应,而无需触摸消息复杂性。

评价:见 §5.3(权益)。


4.5 RaptorCast (robust path, public-goods economics)

接收路径已经丢弃了格式错误/尺寸不足的数据块,并在 UDP 管道中强制执行了组成员身份(良好的安全态势)。但是,转发的经济学 是一个公共物品问题:理性的节点可能会在负载下转发不足。

Minimal mechanism nudge. 添加见证的工作收据加上稀疏的审计:每个转发都发出一个小的收据;验证者以概率 $q$ 进行审计。诚实的转发在审计为真时获得微型奖励 $\rho$;审计为假/丢失会燃烧少量转播债券 $b$。

Design inequality (dominance condition). $$ q\rho > c \quad\text{和}\quad q b \ge \text{max spoof gain}, $$ 其中 $c$ 是每块的中转成本。选择 $q$,以便 $q\rho$ 是可忽略的开销,但仍然阻止逃避。

引理(relay 严格支配 shirking,非正式)。 如果 $q\rho>c$ 且 $qb$ 涵盖了可欺骗的收益,则诚实的转发会使预期收益最大化;开销 $q\rho$ 仍然很小。效果:在压力下更高的解码成功率,而无需进行最小的新管道(收据可以批量处理或记录在区块元数据中)。

评价:见 §5.4 (RaptorCast)。


5) Six research problems we’ll tackle (expanded mechanism targets)

5.1 Ordering & MEV: from first-price priority to batch truthfulness

Monad 的 txpool 当前实施了一个纯粹的“tip-per-gas then gas-limit”优先级顺序。它简单而快速,但在经济上来说,它是一个 first-price 拍卖:用户对出价进行阴影处理,抢先交易是有利可图的,并且领导者可以获得重新订购租金。这些都不会破坏安全性,但会降低福利和感知到的公平性。

// monad-eth-txpool/src/pool/tracked/sequencer.rs
impl&lt;'a> Ord for OrderedTx&lt;'a> {
    fn cmp(&self, other: &Self) -> Ordering {
        (self.effective_tip_per_gas, self.tx.gas_limit())
            .cmp(&(other.effective_tip_per_gas, other.tx.gas_limit()))
    }
}

机制目标。 将每个区块视为一个 批次:在纯文本之前或使用每个 tx 隐藏绑定一个顺序;清除所有包括的交易在内的 单一价格 $p^$;惩罚与已提交到达的无端差异。令 $\pi$ 为最终顺序,$\text{arrival}$ 为已提交的置换,$d(\cdot,\cdot)$ 为置换距离(例如,Kendall-$\tau$)。提议者会最大化 $$ \sum_{i\in \pi} (v_i - p^)\,\text{gas}i \;-\; \Lambda\, d(\pi,\text{arrival}) \quad \text{s.t.}\quad \sum{i\in \pi}\text{gas}_i \le G, $$ $\Lambda$ 经过校准以淹没重新排序租金。

Why it exists. First-price 不是 DSIC;它邀请进行战略竞标和机会主义重新订购。Batch + 单一清除价格(或类似的 VCG 付款)恢复了在 IPV 假设下的真实披露,并减少了 MEV 外部性,同时通过清除价格保留了验证者收入。

What we’ll prove/measure. 在 IPV 下 DSIC(或 BNE)分配的存在;一个绑定 $\mathbb{E}[\text{reorder profit}] \le C/\Lambda$;链上指标:每个区块上的 MEV,Kendall-$\tau$,纳入延迟 Gini,用户剩余。工程风险是复杂性(承诺,审计);我们将从不接触共识消息的最小 commit-and-reveal 开始。


5.2 Leader selection: keep replayability, add min-entropy

今天的领导者选择是经过设计的可重放的:从 round.0 种子化的 ChaCha20 确保任何人都可以重构出谁应该领导给定的视图。可重放性是一项功能。代价是可预测性:联盟可以预测领导窗口并围绕它们安排订单流或拒绝服务策略。

// monad-validator/src/weighted_round_robin.rs
let mut gen = ChaCha20Rng::seed_from_u64(round.0);
let randomizer = |total_stake| randomize_256_with_rng(&mut gen, total_stake);

机制目标。 将回合种子替换为从先前 epoch 的 QC/TC 记录派生的 epoch 种子化的 VRF;保持押注加权选择。每个人事后都验证;事前的最小熵增加。

正式目标(非正式)。 通过对手股份份额 $\alpha$ 和对 epoch 种子提供的 $k$ 个独立诚实贡献, $$ H_\infty(\ell(v)\mid \mathcal{I}_A) \ge \log\frac{1}{\alpha+\varepsilon(k)}, \quad \varepsilon(k)\to 0. $$ 这限制了联盟“调用下一个领导者”的能力,同时保留了调试/重播故事。 我们要衡量什么。 可预测性得分与轮次种子基线;自引导运行长度;奖励方差。权衡:少量的种子管道(仍然没有额外的共识消息)。


5.3 Staking & slashing:使诚实成为一种严格的最佳响应

系统已经通过系统交易铸造奖励;这是我们使不良行为在经济上不可行的手段。

// monad-system-calls/src/lib.rs
system_calls.push(SystemCall::StakingContractCall(
    StakingContractCall::Reward { block_author_address, block_reward },
));

机制目标。 共同调整一个双重签名惩罚 $\phi$ 和一个奖励不合格窗口 $\omega$(可选的 stake 老化 $\eta(t)$),以便对于任何验证者 $i$, $$ \mathbb{E}[\text{MEV}_i(\text{equivocation/timing})] < \phi s_i + \mathbb{E}[\text{lost rewards under }\omega]. $$ 我们在模型中显式地处理 liquid staking 和廉价的外部授信;即使有这样的覆盖,不等式也必须成立。

它存在的原因。 如果没有严格的优势,当 MEV 出现峰值时,资金充足的联盟可以合理化短暂的故障。收紧 $\phi$ 和 $\omega$ 使期望值变为负值,从而将“诚实”从弱最优变为严格最优。

我们要衡量什么。 观察到的双重签名频率(应该为零,但我们会跟踪);风险时间窗口;资本成本敏感性。权衡:惩罚必须足够严厉才能阻止,但又不能太严厉以至于导致级联破产;我们将探索保险式的上限。


5.4 RaptorCast 中继:为见证的工作付费,轻微惩罚欺骗行为

RaptorCast 的接收路径是健壮的(对格式错误/欺骗的数据块进行早期丢弃、进行组检查),但转发是一种公共物品。在压力下,理性的节点可能会减少中继。

机制目标。 添加见证工作收据和稀疏审计:转发节点发出签名收据;验证者随机审计一小部分 $q$。诚实的转发在通过审计为真时会获得少量奖励 $\rho$;审计为假/缺失会烧掉少量中继保证金 $b$。

设计不等式。 如果以下条件成立,则诚实转发严格占优 $$ q\rho > c \quad \text{and} \quad qb \ge \text{max spoof gain}, $$ 其中 $c$ 是每个数据块的成本。选择 $q$,使 $q\rho$ 的开销可忽略不计,并且在负载下,活跃度仍然提高。

我们要衡量什么。 数据块接收率;重建延迟 $P95/P99$;审计失败率;开销。权衡:微小的核算通道和保证金管理,远离热路径;收据可以批量处理或折叠到区块元数据中。


5.5 Peer Discovery:小答案,大后果(为扩展而设计)

Peer Discovery 的响应是有意设置得很小的(≤16 个节点)并且会修剪无响应节点,良好的操作习惯。从经济角度来看,小的答案预算使每个邻居插槽都变得非常宝贵;天真的选择会将诚实节点纠缠到敌对邻域中。

机制目标。 选择邻居以最大化多样性/扩展,跨越 stake 池、ASN、地理位置,并搭配昂贵的身份(stake/工作),因此大型 Sybil 攻击表面是昂贵的。目标是一种行为类似于诚实区域视角的 扩展器 的覆盖网络。

正式目标(非正式)。 在答案预算为 $d$ 和多样性得分为 $\lambda$ 的情况下,

$$\mathbb{E}[\text{SybilEdgeFrac}] \;\le\; \min\Big{\frac{\sigma}{\sigma+w_H},\; e^{-\lambda d}\Big},$$

其中 $\sigma$ 是对抗性身份权重,$w_H$ 是诚实多样性权重。指数项反映了来自多样性感知选择的扩展。

我们要衡量什么。 邻居多样性指数;模拟的 eclipse 概率;流失后的收敛时间。权衡:对等选择器中稍多的逻辑;相同的线路占用空间。


5.6 Pacemaker:一个小控制器,使延迟游戏无利可图

当前的计时器将 $\Delta$ 的倍数与投票节奏和本地处理相结合,这是明智且清晰的。

// monad-consensus/src/pacemaker.rs
fn get_round_timer(&self, round: Round) -> Duration {
    self.delta * 3 + vote_delay + self.local_processing
}

但是静态边缘会邀请“几乎太晚”的投票模式,这些模式会使尾部变胖,而不会跨越明显的惩罚线。

机制目标。 为超时设置一个本地反馈控制器, $$ \theta_{v+1}=(1-\alpha)\theta_v+\alpha,\widehat{\Delta}_v+\beta,\widehat{v}_v, $$ 使用限幅/迟滞,并在组装 TC 时降低聚集的迟到投票的权重(轻量级、统计加权,而不是新的阈值)。

正式目标(非正式)。 存在 $(\alpha,\beta)$ 使得 (i) 策略 “有系统地在 $>0.9\theta$ 处投票” 在预期收益中是严格劣势(更高的 TC 概率 + 惩罚风险),并且 (ii) $P99$ 提交延迟在没有振荡的情况下得到改善。

我们要衡量什么。 视图重置率;$P95/P99$ 提交延迟;一个预/后“迟到投票集群”指数。权衡:参数调整;我们将提供安全的默认值和保障措施。

上面的每一个机制都是局部的:它不会引入 all-to-all 通信或更重的证书。快乐路径仍然是线性的。每个机制都收紧了一个激励结合面(排序、时序、计划可预测性、公共物品转发、邻居质量、惩罚经济学),同时保留了 MonadBFT 的核心承诺:恢复带有可说明的收据。并且每个机制都提出了精确的、可证伪的指标,因此该系列在经验上而不是仅仅在言辞上获得了其主张。


6) 接下来

第二部分 — 排序和 MEV。 我们将指定批量拍卖 + 订单提交机制,给出真实性草图,校准审计惩罚,并包括一个小的基于代理的模拟规范,你可以在本地运行该规范。目标不是“解决 MEV”,而是在不破坏验证者经济学或 MonadBFT 美好的消息模式的情况下,可衡量地消除其最糟糕的病态。


参考文献

[^1]: MonadBFT GitHub Repo

[^4]: Monad 架构

附录:直接存储库锚点

  • Leader selection(可重放的 PRNG): monad-validator/src/weighted_round_robin.rs (seed_from_u64(round.0); randomize_256_with_rng).
  • Txpool 排序: monad-eth-txpool/src/pool/tracked/sequencer.rs (Ord by effective_tip_per_gas then gas limit).
  • Pacemaker 计时器: monad-consensus/src/pacemaker.rs (get_round_timer: 3*Δ + vote_pace + local_processing).
  • Staking 系统调用: monad-system-calls/src/lib.rs (epoch change, snapshot, reward issuance).
  • RaptorCast 检查: monad-raptorcast/src/udp.rs (undersized/oversized drops, spoof checks, group membership).
  • Peer Discovery: docs/peer_discovery.md (bounded answers; liveness-based pruning).
  • 原文链接: github.com/thogiti/thogi...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
thogiti
thogiti
https://thogiti.github.io/