RIB · English Edition
训练mempool
好,聚焦 L1(Shard 局部 Finality)。你要训练的是:“什么时候把某笔交易/某段因果前沿提升到 L1,以及如何让 L1 更快、更稳、更便宜”。下面给你一个可落地的数据量与训练设计。
1) L1 训练目标到底是什么
L1 的核心是两件事:
- 确认概率/确认时间预测
- p(L1 within X seconds | context)
- E[T_L1](多久进 L1)
- p(L1 within X seconds | context)
- L1 调度策略(Orchestrator)
- 哪些 tx 先处理/先打包
- 是否触发 shard commit
- 是否走私有 relay / 直连 builder
- 冲突集里押哪条(RBF/双花/替换)
- 哪些 tx 先处理/先打包
注意:这些都是策略层;L1 是否成立仍由 shard 内确定规则裁决。
2) 你需要多少数据:给你明确门槛
最小可用(MVP:明显好于 fee-only 规则)
- 20 万 – 100 万笔交易(或等价事件样本)
- 你能做到:
- 基础 p(confirm) 与 E[T] 预测
- 排序优化让 L1 失败率明显下降
- 基础 p(confirm) 与 E[T] 预测
稳定可用(Production:能给支付 SLA)
- 200 万 – 1000 万笔交易
- 你能做到:
- 分拥堵状态的稳定预测
- P95/P99 体验显著改善
- 冲突押注胜率更高
- 分拥堵状态的稳定预测
经验上:若你有完整 mempool+网络特征,达到“不错”的 L1 模型,通常 200–500 万笔就能很能打。
3) 但更关键:你要的不是“交易数”,而是“正负样本与长尾覆盖”
L1 里你真正难学的是尾部问题:
- 长时间不确认
- 被替换/被踢出
- 冲突集失败
这些通常占比不大。为了学得好,你需要:
- 至少 10 万级别的失败/延迟样本(可通过重采样、故障注入、压测获得)
4) L1 数据怎么收集:最小字段集(必须有)
如果你只收链上确认信息,模型会很弱。L1 必须带 mempool 视角。
Tx 级特征(必须)
- fee_rate
- tx_size
- dependency_depth(依赖/祖先数)
- RBF_flag
- CPFP_possible(是否可被 CPFP 提升)
- conflict_set_size(同输入竞争数)
Mempool 状态(强烈建议)
- time_seen(首次看见时间)
- mempool_backlog(当时队列压力)
- mempool_min_fee(当时最低费率门槛)
- eviction_events(是否被驱逐/原因)
网络/传播(建议)
- relay_path(公网/私有/直连)
- time_to_miner_seen(可用 proxy:到达关键 relay 的时间)
- peer_quality(RTT/丢包粗指标)
标签(必须)
- confirmed_at_L1?
- T_L1(到 L1 的时间)
- dropped/replaced?(失败类型)
5) 模型形态:先用哪个最划算
阶段 1(最划算):监督学习 + 校准
- 任务 A:分类 p(L1 within X)(X=1s/2s/5s)
- 任务 B:回归 E[T_L1]
- 再做 calibration(让概率可用)
上线收益:排序更稳、触发时机更准。
阶段 2(更强):序列模型(Transformer 思想)
输入不是单笔 tx,而是:
- 最近 N 秒的 mempool 状态序列
- 当前 shard backlog 序列
输出: - 下一步动作:是否 commit、选哪些候选、走哪条 relay
6) 你如何定义“不错”(验收指标,给你可量化)
对 L1 来说,最重要的验收不是 AUC,而是体验指标:
- L1 成功率提升
- 例如:未确认/被踢出比例下降 30%+
- 例如:未确认/被踢出比例下降 30%+
- 确认时间尾部改善
- P95(T_L1) 下降 20–40%
- P99(T_L1) 下降 10–30%
- P95(T_L1) 下降 20–40%
- 冲突押注胜率
- 对有冲突集的样本:胜率提升 10–20 个百分点
- 对有冲突集的样本:胜率提升 10–20 个百分点
- 成本不升反降
- 在相同 SLA 下平均 fee 降 5–15%
- 在相同 SLA 下平均 fee 降 5–15%
7) 一个现实的“数据计划”(你可以照着执行)
如果你现在从零开始,我建议:
- 先攒 30 天数据(自然覆盖多种拥堵状态)
- 目标达到:
- 交易:200–500 万
- 失败/替换样本:≥10 万
- 交易:200–500 万
- 同时做一轮压测/故障注入,补齐长尾
这样训练出来的 L1 模型,通常就能达到“不错”的工程效果。
如果你愿意,我可以下一步把 L1 的“训练与上线”写成一份简洁 spec:
- 日志 schema(每条 tx 记录字段)
- 训练任务与指标
- 线上 A/B 验证方案(对比 fee-only baseline)
- 降级开关(模型失效时回退规则)