▸ 产品 · v2.0.0

验证器不信任 template。它自行重新推导。

Veldra v2.0.0 交付 Invariant Shield:22 项规范化的重新推导检查(Phase 1),外加 mempool 真值基准(Phase 2)。它叠加在现有的 v1 策略网关(59 个 reason code)与 TOML 配置基线(61 个键)之上。

如实界定范围 · v2.0.0 现状WIREDvs.OBSERVING

v2.0.0 已接通,已在 origin,CI 全绿。独立共识重新推导已能运行。mempool 真值基准已能运行。至于“系统在生产中于验证器这一层捕获自洽的 template-manager 篡改”这一发布主张,必须先完成生产观察周期。在那之前,对外表述会把“已接通并在 CI 中通过测试”与“在数周观察窗口内针对真实 mainnet template 完成验证”区分开。

▸ 章节
01Reason codes02配置03遥测04rg-consensus facade05Phase 2 fail-stale 状态机06威胁模型 · 上限 · 注意事项07接入模式08Veldra vs SRI09路线图
01

Reason codes

每一次分歧都有名字。reason-code 表面就是契约:验证器拒绝一个 template 时会在指标流和日志行上发出什么,都有可以 grep 的权威来源。

59
gateway reason code · v1 基线
22
v2_invariant_* code 总数 · 以 rg-consensus::ConsensusViolation::ALL_CODES 为准
T1 · ×5Tier 1 · 关键Phase 1(v2.0.0)

会立即产生无效区块的缺陷。从原始区块字节重新推导。

CoinbaseValueCoinbaseHeightMerkleRootWitnessCommitmentMismatchTxCount
T2 · ×5Tier 2 · 高危Phase 1(v2.0.0)

会导致区块大概率成为孤块,或在下游被判为无效的缺陷。

TemplateWeightSigopsCoinbaseSigopsWitnessCommitmentMissingCoinbaseBip34
T3 · ×7Tier 3 · 双保险Phase 1.5(观察周期之后)

在 v2.0.0 的生产观察周期干净完成后接入。

CoinbaseScriptLengthCoinbaseOutputCountWeightExceedsMaxSigopsExceedMaxNonCoinbaseNullPrevoutHeaderVersionLowDuplicateTx
CLASS M · PHASE 2(mempool 真值基准)

将 template 中非 coinbase 的 txid 与一份独立的 bitcoind mempool 视图交叉核对。当未知 tx 比例超过 tolerance_pct 时拒绝。

权威来源: rg-consensus::ConsensusViolation::ALL_CODES

02

配置

61 个基线 TOML 键,加上 v2.0.0 中 [policy.mempool] 下新增的 8 个。这 8 个全部可选并带默认值——旧配置无需改动即可继续加载。

v1 基线 · 61 个键 分布在 [gateway] · [timing] · [share] · [auth]
[policy.mempool]v2.0.0 新增 · 8 键
enforcefalse在运营方主动启用之前仅作提示
tolerance_pct4.0未知 tx 比例阈值;可向 2.0 下调
poll_interval_secs10getrawmempool poll 节奏
max_stale_secs60fail-stale 窗口,超过则视图转为 Degraded
per_tx_detailfalse把 SAMPLE_UNKNOWN_CAP=10 扩展到所有未知 txid
rpc_url运营方侧 bitcoind 的 RPC 端点
rpc_userRPC 认证 · 或经由环境变量
rpc_passRPC 认证 · 或经由环境变量

8 个新键全部可选并带默认值,因此旧配置无需改动即可继续加载。

03

遥测

v2.0.0 为 Phase 2 新增 4 个 Prometheus 指标流。现有导出保持不变。

v2.0.0 新增 · 4 数据流
verifier_phase2_checks_total{result}counterresult ∈ {agreed, rejected, skipped, stale}
verifier_phase2_degraded_totalcounter视图为 Degraded 期间每提供一份 template 即递增
verifier_mempool_view_age_secondsgauge距上次成功刷新的时长
verifier_mempool_view_sizegauge上次成功刷新中的 tx 数量

现有导出保持不变。Prometheus / Grafana / CSV / NDJSON 可观测性与现有站点所述一致。

04

rg-consensus facade

共识引擎的狭窄公开 API。五个重新推导入口和五个包裹 rust-bitcoin 的访问器——这就是 Class D / Class S 的全部表面。

rg-consensus 是一个可分离的 facade,把 rust-bitcoin 封装在一条窄边界之后。

再推导入口 · ×5
re_derive_coinbase_value()re_derive_template_weight()re_derive_merkle_root()re_derive_witness_commitment()count_sigops()
类访问器 · ×5
template_txidsparse_blocktotal_sigopscoinbase_sigopsbip34_height
05

Phase 2 fail-stale 状态机

运营方的 bitcoind RPC 轮询失败时会发生什么。三个状态、具名转移、不丢弃 template。

Mempool 视图状态机:验证器依据视图年龄在三个状态之间转移,随后干净降级,不丢弃 template。

状态 1
Fresh
进入条件
在 poll_interval_secs 内轮询成功
行为
Class M 检查针对最新视图运行。
状态 2
Stale
进入条件
刷新失败,年龄 ≤ max_stale_secs
行为
Class M 仍针对最近一次已知视图运行。
状态 3
Degraded
进入条件
年龄 > max_stale_secs × 2
行为
Class M 被跳过。Template 落回 Phase 1。verifier_phase2_degraded_total ++。
默认值
max_stale_secs = 60  ·  sample_unknown_cap = 10
06

威胁模型 · 上限 · 注意事项

哪些在范围内、哪些从结构上就不在范围内,以及 4% 的 mempool 容差窗口能做与不能做什么。

ID
威胁
状态
拦截方
T1raw_block 篡改✓ 在内L2 Phase 1
T2声明值与字节不一致✓ 在内L2 Phase 1
T3自洽的 template-manager 篡改✓ 在内L3 Phase 2
T4运营方 bitcoind 被攻陷✗ 在外明确不在范围内
T5selfish mining · 激进的 mempool 偏离✗ 在外v3.x 的领域

ReserveGrid OS v2.0.0 配合 Phase 1 与 Phase 2 可拦截 T1、T2、T3。T4 与 T5 明确不在范围内。

▸ 架构天花板 · 各层从结构上无法捕获的事情
L1 · 无法

任何声明字段能通过运营方阈值的 template,即使底层字节是伪造的

L2 · 无法

声明值与原始字节在构造上就内部自洽的篡改

L3 · 无法

在已配置的容差窗口内运作的篡改,或在 bitcoind 自身已被攻陷时发生的篡改

▸ 告警事项 · 直说在前
  • 01Phase 2 的 4% 容差窗口吸收良性的 mempool 偏离(运营方 bitcoind 与网络之间合理的传播延迟)。
  • 02把阈值向 2.0 调低会收窄这个窗口,但无法在不对真实 template 产生误报的前提下把它压到零。
  • 03Phase 2 从定义上就信任运营方的 bitcoind。如果这个 bitcoind 本身被攻陷,Class M 就是盲的。
07

接入模式

三种部署形态——Shadow(仅告警 · 免费)、Observe(需许可 · 不强制执行)、Inline(需许可 · fail-closed)。bitcoind 这一前置条件已在开头点明。

模式
Shadow
免费约 1 天接入

让网关运行在你现有路径之后,裁决 = 仅告警。share 流零改动。

模式
Observe
需许可证约 1 周

自托管的 Docker 技术栈加许可证密钥。需要 mainnet bitcoind(或使用 rg-feed-server)。

模式
Inline
需许可证取决于基础设施就绪度

fail-closed 强制执行。网关位于 share 路径中。

BITCOIND 前置条件

observe 与 inline 两种模式都需要运营方侧的 bitcoind:已同步、资源充足、RPC 可达,并通过环境变量或 [policy.mempool] 接通 rpc_* 凭据。

许可证密钥流程

希望使用 observe 或 inline 模式的运营方,从其 veldra.org 账户(登录)获取许可证密钥。

observe 与 inline 两种模式都需要运营方侧的 bitcoind:已同步、资源充足、RPC 可达,并通过环境变量或 [policy.mempool] 接通 rpc_* 凭据。

08

Veldra vs SRI

唯一一处点名的产品对比。Stratum Reference Implementation 是 SV2 协议可实现的权威证明。Veldra 面向需要验证、而不只是连通性的矿池运营方。

Stratum Reference Implementation(SRI)是 SV2 协议可实现性的权威证明。Veldra 面向的是需要验证、而不只是需要连通性的矿池运营方。

维度
SRI
Veldra
SV2 协议表面
是 · 权威参考
是 · 生产形态
v1 政策类检查
部分
完整 · 59 个 gateway reason code
L2 不变量再推导
是 · 22 个 v2_invariant 编码
L3 mempool 现场事实
是 · Phase 2 Class M
面向矿池运营方部署而构建
实现参考

DATUM 及其他矿工侧 template 协议属于生态背景。Veldra 的验证层与矿池运行哪一种矿工侧协议无关。

09

路线图

v2.0.0 → Phase 1.5 → v3.x。不设日历日期——里程碑取决于生产观察周期,而不是时间表。

v2.0.0v2.0.0 发布里程碑当前

Invariant Shield Phase 1 加上 Phase 2 的 mempool 真值基准。

p1.5Phase 1.5下一个工程段

v2.0.0 的生产观察周期干净完成后,七个 Tier 3 兜底不变量随之接入。

v3.xv3.x(有限愿景)设计草图

selfish mining 检测。per-tx detail 模式,加上 v2.0.0 中已交付的四项 Phase 2 指标,已经为时间序列检测备好了数据形态:检测那些未知 tx 集合在时间上聚集、且指纹在结构上彼此一致的 template。v3.x 的设计从已交付的 Phase 2 表面出发——无需协议变更,除了在运营方策略中开启 per-tx detail 之外没有迁移成本。

▸ 接下来阅读
架构 →
单个 block template 如何穿过网关、独立重推导、Class D 与 Class M:六个步骤,每一阶段都点名对应的码。
故障图谱 →
一部按日期索引的矿池事故史——每一起是什么、哪一层本可以拦下它、会触发哪个 reason code。
问答 · 运营者评估 →
六个直白的问题,依次排列。它做什么。它告诉你什么。如何配置。成本。为何不用现有工具。今天已经接通了什么。