# 论比特币和以太坊的“宕机”

By [subai](https://paragraph.com/@subai-2) · 2023-05-15

---

五月伊始，比特币和以太坊两条市值第一第二的链就接连爆出所谓“宕机”的冷门。但细究起来，其中又有本质区别。下面我们就来说一说。

关于比特币“宕机”的消息是在5月8日爆出的。一天两次。要是笔者没记错的话，那天正好是gate上BRC-20模因币ordi的日子。东八区早上十点上的线。一时之间，引发集体性FOMO，比特币网络爆堵。

好巧不巧的，当天凌晨4点45分（UTC+8），在区块高度788686的地方，发生了两个矿池竞争分叉的事情，请格外注意，Fork Monitor记录的时间戳是UTC+0，所以是20:45）。也许是这次算力角逐，导致一个矿池产出的分叉被抛弃，造成部分交易被重新退回内存池，让本已拥堵不堪的网络雪上加霜。

另一个可能性则是因为有矿工挖出了空区块。导致实际可用区块空间减少，增加了排队队列的拥堵。比如就在7日深夜11点55分50秒（UTC+8），就产出了一个空区块788594。而它距离上一个区块788593的时间戳11点55分10秒（UTC+8）仅仅过去了40秒钟！

到了下午14点58分（UTC+8），区块高度788759，比特币网络被监测到“卡”了将近一个小时没有产出下一个区块。后来，直到一个多小时后的15点59分（UTC+8），区块788760才被计算出来。

谁料到了晚上20点57分（UTC+8），区块高度788791，比特币出块再次延迟。网络一直等到一个多小时后的22点03分（UTC+8），才找到下一个区块788792。

第一，出块延迟与BRC-20火爆导致网络拥堵没有什么直接关系。

第二，比特币网络的出块是概率性的，符合泊松分布。10分钟的出块间隔只是统计控制目标，而实际出块时间可能与此想去甚远。从上面的实际案例可以看出，这个时间间隔可能短至几十秒，也可能长达1个多小时。\[1\]

至于为什么比特币矿工会在那么多人花钱冲土狗的“好日子”打包空区块，放着高昂的手续费收入不赚？这是由矿池的工作机制决定的。矿池的算力其实是来自于接入的众多矿机。矿池只负责下发计算任务，和打包区块。矿机负责无脑计算。矿池通常会在收到区块后，立刻下发一个空区块让矿机先计算着，而不是等交易准备好再下发任务。因为如果矿池下发新任务慢了，那么多矿机就会仍然在上一个区块上面计算，这段时间的算力就被白白浪费了。所以，矿池会先下发一个空区块让矿机先算着，然后等准备好交易后，再更新任务让矿机计算。哈希计算是无记忆的，所以更新任务并不会影响爆块概率。

更巧的是，没过多久，12日、13日以太坊的PoS链也出现了“宕机”问题。

先是在5月12号的凌晨4点19分（UTC+8）的epoch（轮次） 200553附近，以太坊信标链等了近半个小时都无法最终化区块链\[2\]。这与设计规格要求的每epoch包含32个slots，每个slots也就是每个区块间隔12秒，这样每个epoch的时间应该是12 \* 32 = 384秒即6.4分钟相去甚远。

还没等以太坊基金会的开发者们搞清楚原因，到了5月13号凌晨2点5分（UTC+8）的epoch 200757附近，以太坊信标链又一次延宕。这次等了超过1小时才恢复\[3\]。以太坊基金会发布了一个紧急补丁，但是却仍然未能搞清楚真正的原因是什么。

不能最终化，就意味着区块链的写入是未能最终生效的，存在被篡改的可能性。以太坊从PoW改成PoS之后，就抛弃了比特币采用的概率最终化方法，而是改用了显式最终化\[4\]。如何既要显式最终化，又要去中心化？为此以太坊引入了信标链、epoch等一系列的概念和设计。

笔者的这篇文章，把上面几次事件进行了还原和记录。这很重要。尤其是对于以太坊的两次延宕，由于epoch的延宕，事后不会在区块链上留痕，这与比特币区块时间戳会忠实记录下当时的延迟出块时间不同，因此就造成了我们事后追查以太坊最终化延宕历史的困难。

既然区块链抹去了这个历史，那就只能在文章里进行记述。

不同于媒体报道的含糊之辞，笔者给出了精确的epoch编号。但是，事实上，延宕并不是发生在这一个epoch，而是发生在前后一大段时间窗口内。那么，为何笔者上面的记述中要用这两个epoch呢？因为这两个epoch具有明显不同于前后正常最终化的epoch的特征，那就是它们的attestations（见证）显著地减少。正常是3000多，epoch 200553只有1792，epoch 200757只有1408。

计算机科学对于分布式系统的挑战所采取的对策，就是不断弱化问题寻求妥协解的过程。从单机数据库的ACID强一致性，弱化为互联网分布式系统的最终一致性（eventual consistency），再到比特币在拜占庭环境下的概率最终化（probabilistic finality）。中本聪共识的聪明之处就在于，巧妙利用了0.9的无限循环等于1这个知识，让比特币的区块链能够不断逼近于一致性（共识）。以太坊弃PoW而转为PoS，要把概率最终化重新强化为显式最终化，而同时又要保证系统能够在拜占庭环境中工作，不退回互联网的管控环境，这在理论和实践上都将面临未知的挑战。

总结：比特币出块的设计本身和PoW的特点就是概率最终性，符合泊松分布，短至几十秒，长达1小时，都是正常现象。以太坊PoS出块则试图实现显式最终性，但是最近两次原因不明的最终化失败，预示着在这条道路上探索的艰辛。

参考资料：

*   \[1\] Here Is Why Bitcoin Transactions Take So Long. [https://originstamp.com/blog/here-is-why-bitcoin-transactions-take-so-long/](https://originstamp.com/blog/here-is-why-bitcoin-transactions-take-so-long/)
    
*   \[2\] [https://www.coindesk.com/tech/2023/05/11/ethereum-mainnet-was-unable-to-fully-finalize-transactions-for-25-minutes/](https://www.coindesk.com/tech/2023/05/11/ethereum-mainnet-was-unable-to-fully-finalize-transactions-for-25-minutes/)
    

[https://beaconcha.in/epoch/200552](https://beaconcha.in/epoch/200552)

*   \[3\] [https://www.coindesk.com/tech/2023/05/12/ethereum-resumes-finalizing-blocks-after-second-performance-hiccup-in-24-hours/](https://www.coindesk.com/tech/2023/05/12/ethereum-resumes-finalizing-blocks-after-second-performance-hiccup-in-24-hours/)
    

[https://beaconcha.in/epoch/200757](https://beaconcha.in/epoch/200757)

*   \[4\] [https://hackmd.io/@prysmaticlabs/finality](https://hackmd.io/@prysmaticlabs/finality)

---

*Originally published on [subai](https://paragraph.com/@subai-2/cYlflSzkMKHPClqsv4wc)*
