出块时间是怎么被守住的?难度反馈、固定时隙与排班跳过三种办法 图 1
出块时间是怎么被守住的?难度反馈、固定时隙与排班跳过三种办法 · 图 1

“这条链十秒到账、那条链两分钟一个块”——这类说法常常混淆了两件事:协议想要的出块节奏,以及协议为了守住这个节奏做了什么。出块节奏不是自然现象,它靠一套调节机制维持;不同链用的办法差别很大,理解差异比记住秒数更重要。

工作量证明链:用难度做反馈回路

以比特币为例,协议把出块时间目标写成参数,实际节奏则由全网的哈希率决定。如果算力大幅上升,块会提前出现,节点不会自动变慢,直到下一个调整点到来。比特币每 2016 个区块重新计算一次目标值,公式很简单:新难度等于旧难度乘以“预期时间除以实际时间”,也就是这一段 2016 个块如果只用了不到两周,下一段就更难。

公式里要注意“难度”与“目标值”互为倒数:这段 2016 个块如果实际用时不到预期,下一段的难度就按预期除以实际的倍数上调。这条回路有两处细节值得注意。第一,单次调整幅度被裁剪,目标值一次最多放宽或收紧到四倍,避免一次剧烈的算力进出把链条推得离目标太远。第二,调整依据的是区块头里的时间戳,而时间戳由矿工填写,因此规则要求新区块的时间戳必须大于前 11 个区块时间戳的中位数,用集体中位数压制个别节点的极端时钟。也就是说,所谓“自动调节”实际上是节点对链上历史数据的一致解读,没有任何人在做决策。

需要注意的是,算力骤增或骤减后的那几天里,实际出块间隔会明显偏离目标;这段时间内“等 N 个确认”对应的真实时长也在变,用它估算到账时间时要把这段偏差算进去。

出块时间是怎么被守住的?难度反馈、固定时隙与排班跳过三种办法 图 2
出块时间是怎么被守住的?难度反馈、固定时隙与排班跳过三种办法 · 图 2

权益证明链:用时钟和投票门槛维持节奏

难度调节回路与固定时隙加投票两条节奏维持路径的对照

以太坊在合并之后走上了另一条路。它的时间被切成固定长度的时隙,每个时隙指定一个提议者出块;块与块之间不再有难度这道反馈阀门,因为出块资格由质押权重决定,与算力无关。算力翻倍不会让以太坊出块更快——协议不允许,物理上也做不到。

代价转移到另一处:一个时隙可能没有人出块,也可能出现相邻分叉。链靠验证者对每个时隙的投票(attestation)表达“我看到哪个分支”,再由最终性检查点把不可逆的判断定下来。因此以太坊的节奏稳定,但“不可改”需要跨越几个时隙、凑够投票权重之后才成立。这也是为什么同为“两层等待”,第一层是等区块出现,第二层是等最终性投票到位。

有些链走的是中间路线:把出块权按时隙排班发给指定的领导者,时隙目标时长写在创世参数里,领导者不履职则该时隙被跳过,节奏靠排班表和跳过计数维持,而不是靠难度或投票门槛。

把秒数翻译成用户判断

出块目标越短,交易被打包的等待越短,但“快”并不自动等于“安全”。短块时间的链,一次短暂的网络分区更容易制造临时分叉,用户端看到的“已确认”被翻转的概率也更高;长块时间的链反过来,重组窗口长但每次重组涉及的面更大。合理的做法是把两件事分开确认:交易进入哪个分支(看区块哈希和高度),以及这个分支在什么条件下不再被翻转(看该链的最终性规则或确认数惯例)。

出块目标的绝对秒数会随升级和参数调整变化,同一条链的合并前后也可能不同,判断具体某条链时以官方文档与链上参数为准,不要用旧资料里读到的秒数倒推今天的行为。本文只做机制说明,不构成投资建议,也不涉及任何价格判断。