跳转到正文
buybitcoinsmart

术语表 /挖矿与共识

过期区块

过期区块是什么?
过期区块是一个完全有效但在竞争中落败的区块:同一高度的另一个区块胜出,网络于是在那个区块之上继续构建,放弃了这个区块。

两名矿工在相隔不到一秒的时间内各自找到解是常有的事,此时网络会短暂地存在两个候选链尖。哪条分支先被延长,哪条就胜出;研究人员在2013年测量比特币网络时发现,大约1.7%的区块最终落在落败的一侧。对您而言这是不可见的:过期区块中的付款会回到内存池,并被再次挖出。

运作方式

过期区块是由延迟产生的,并非区块本身存在任何缺陷。

挖矿是一场没有协调的抽奖。当一台机器找到解时,其矿池会宣布这个区块,而这一宣布需要时间才能传遍全球。在消息到达之前,其他所有矿工仍在前一个链尖上继续运算,其中任何一人都可能在同一高度找到第二个有效解。于是同时存在两个版本的事实,两者都正确,由谁在其中一个之上先发布下一个区块来打破平局。另一个就成为过期区块。

这个窗口的大小是可以测量的。Christian Decker 和 Roger Wattenhofer 在2013年对网络进行了监测,发现区块传到大多数节点的中位时间为6.5秒,因此约有1.7%的区块最终被放弃。此后区块中继已大幅改进。紧凑区块中继在 BIP152 中作出规范,并于2016年8月随 Bitcoin Core 0.13.0发布,使对等节点能够利用内存池中已有的交易重建区块,只需发送几千字节,而不是一两兆字节,专用的中继网络则将典型的传播时间压到了一秒以内。

落败会让矿池损失整个区块。过期区块的币基输出永远不会成为被接受的历史记录的一部分,因此其区块补贴和手续费一文不值。协议同样假定这种情况可能发生:在一个区块中产生的币要再锁定100个区块,大约十六小时,正是为了让任何人都无法花费后来证明位于错误分支上的奖励。

在哪里会遇到它

过期区块通常在区块浏览器和矿池面板上变得可见,而且往往使用另一个名称。

一些区块浏览器会发布被丢弃区块的列表,并将其归入孤块,比特币这一领域的术语混乱大多源于此。矿池面板会报告其矿工提交的份额的过期率或拒绝率。在按份额付费的安排下,单个矿工的这部分工作仍会被记入,损失由矿池承担,这也是矿池手续费所购买的服务之一。

Bitcoin Core 会清楚地显示这一点。向节点查询其已知的链尖,近期的过期区块会显示为一个单独的链尖,标记为 valid fork(有效分叉):已完整验证,各方面都正确,只是不是累计工作量最多的那条链。

您还会看到,这正是确认数存在的原因。只有一个确认的付款位于一个仍可能在竞争中落败的区块里。深度为六个区块的付款则不会,因此交易所以区块数而非分钟数来表述充币政策。

过期区块 vs 链重组

过期区块是一个对象,链重组是一个动作。两者从不同的角度描述同一件事。如果您的节点碰巧先收到获胜的区块,落败的区块就根本不会成为您这条链的一部分,也不会发生重组。如果您先收到的是落败的区块,您的节点就必须断开它并切换,这就是一次一个区块的重组。像这样只涉及一个区块的事件每年发生寥寥几次,并不意味着出了问题。深度达数个区块的重组则是另一回事,在比特币主链上极为罕见。

请勿混淆

常见问题

过期区块是否意味着我的交易丢失了?

不会。过期区块中的交易仍然有效,并会回到内存池,由下一位矿工收录,通常在一两个区块之内。只有在获胜区块中确认了与之冲突的交易,结果才会改变。

矿工能否因过期区块获得报酬?

区块链不会支付。过期区块的币基输出永远不会成为被接受的历史记录的一部分,因此其区块补贴和手续费一文不值。按份额付费的矿池仍会给各自的矿工记账,并自行承担损失。

接着阅读

相关术语

挖矿与共识中的更多术语

阅读本页英文版