请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

扫一扫,访问微社区

乐链网 首页 科普知识 查看内容

比特币共识分叉的完整历史

2018-1-11 17:11| 发布者: admin| 查看: 72| 评论: 0

摘要:在这篇文章中,我们列出了 19 个比特币共识规则的变化(或 18 个,有一个意外 “失败” 了),这呈现了几乎所有我们认为比特币历史上的重要事件。这些事件中至少有 3 次造成了可识别的区块链分叉,分别持续了 ...

摘要:在这篇文章中,我们列出了 19 个比特币共识规则的变化(或 18 个,有一个意外 “失败” 了),这呈现了几乎所有我们认为比特币历史上的重要事件。这些事件中至少有 3 次造成了可识别的区块链分叉,分别持续了大约 51 , 24 和 6 个区块,这些事件分别发生在 2010 年, 2013 年和 2015 年。

专用术语

名称

释义

区块链分叉

区块链分叉,导致原区块链分拆成两个各自独立的区块链。这可能由硬分叉,软分叉或其他原因造成。

共识规则变更


硬分叉

放宽区块有效性的共识规则,以致以前认为无效的一些区块现在被认为是有效的。

现有节点需要升级才能整合到新的硬分叉区块链。

软分叉

收紧区块有效性的共识规则,以致以前认为有效的一些区块现在被认为是无效的。

现有节点不一定需要升级也可以整合到新的软分叉区块链上。

备注:我们相信这些条款起源于 2012 年 4 月,并在 BIP99 和 BIP123 中正式确定

比特币共识分叉列表

日期

启动区块

BIP  号或软件版本

注释

类别

结果

2010 年 7 月 28 日

不适用 1

0.3.5

OP_RETURN 被禁用。修复一个让任何人可以支出任何比特币的重大缺陷

软分叉

在升级过程中没有证据表明有出现任何问题

2010 年 7 月 31 日

不适用 1

0.3.6

禁用 3 OP_VER 和  OP_VERIF

软分叉

有些用户在升级时遇到了问题,建议在不能升级的情况下 2 关闭节点

添加 NO_NOP 函数,尽管在这之前可能没有使用过 NO_NOP

硬分叉





2010 年 8 月 1 日

不适用 1

0.3.7

分离 scriptSig 和 ScriptPubKey 的评估。修复一个让任何人可以支出任何比特币的重大缺陷

潜在非确定的硬分叉

在升级过程中没有证据表明有出现任何问题

2010 年 8 月 15 日

74,638

0.3.10

在 1,845 亿比特币支出事件发生后,修复过量支出程序错误

当初交易时输入的 0.5BTC 仍未被支出

软分叉

区块链分叉了。 事件发生后 5 个小时,解决方案客户端 0.3.10 出台。我们相信在 “好区块链“ 夺回 PoW 领先之前,”坏区块链“ 上产生了 51 个区块

禁用 OP_CAT , 删除了 DoS vector, 同时禁用了 14 个其他功能

软分叉





2010 年 9 月 7 日

不适用 1

0.3.12

以不正確的方式添加 20,000 簽名操作限制。這個不正確的限制今天依然存在

软分叉

在升级过程中没有证据表明有出现任何问题

2010 年 9 月 12 日

79,400

不适用

添加 1MB 区块大小限制。

在 2010 年 7 月 15 日认可的“MAX_BLOCK_SIZE = 1000000” 是源于 2010 年 7 月 19 日 0.3.1 rc1 的软件版本。 认可的1MB 规则在 2010 年 9 月 7 日执行,从第 79,400 个区块开始启动。在 2010 年 9 月 20 日,中本聪删除了这个启动规则,但保留了 1MB 的限制规则。

软分叉

在升级过程中没有证据表明有出现任何问题

2012 年 3 月 15 日

171,193

BIP30

不允许使用相同的 TXID 进行交易,除非较旧的交易完全用完。  2012 年 9 月,该规则已在所有区块中实行,除了 91,842 和 91,880 区块违反了该规则

软分叉

这是软分叉公布日,没有证据表明有出现任何问题

2012 年 4 月 1 日

173,805

BIP16

支付 Script Hash (P2SH)- 这允许交易发送到 script hash (地址开头为 3 )而不是公匙哈希(地址开头为 1 )

软分叉

在 2012 年 2 月 1 日之前的 7 天内,激活率达到 55% 。矿工们升级的速度不够快,所以评估时间推迟到 3 月 15 日。运行 0.6.orc1 的用户延迟升级,当他们的无效交易节点被挖掘时,导致过早启动软分叉,卡在了区块 170,060 。 45% 的矿工生产无效区块形成的启动问题在软分叉后延续了几个月。

2013 年 3 月 24 日

 227,835

BIP34

需要在 coinbase 交易中包括区块高度

软分叉

95% 的激活率。完成成功部署。

2013 年 3 月 11 日

225,430

0.8.0

这是由 Berkeley DB 迁移到 Level DB 引起的一个意外硬分叉,它意外的删除了未知的 10,000 BDB 数据库锁定限制。这导致了在 2013 年 3 月 1 日发生的一个区块链分拆,尽管导致错误的程序是在 20 天前发布的,也就是 2013 年 2 月 20 日。当比特币经济和矿工用回 0.7.2 规则,该变更也被切换了。

共识规则没有发生变化

发生了至少涉及 24 个区块的区块链分叉, 0.8.0 区块链上起码领先了 13 个区块。同时发生了成功重复支出的情况。初始规则的区块链最终重新取得领先 PoW

2013 年 3 月 18 日

不适用 1

0.8.1

这是一个临时的软分叉,导入了一个新的规则,要求区块中的输入引用不超过 4,500 个 TXID ,这个规则要比 10,000 BDB 锁定限制更严格。该规定于 2013 年 5 月 15 日过期,一个硬分叉发布日。

软分叉

没有证据表明有任何问题

2013 年 5 月 15 日 或 2013 年 8 月 16 日

 252,451 或之前

BIP50

在 2013 年 8 月,可能产生了一个违反了原先 10,000 BDB 锁定限制规则的区块,该规则在 2013 年 5 月 15 日放宽了。

硬分叉

没有证据表明有任何问题

2015 年 7 月 4 日

 363,731

BIP66

严格的 DER 签名 – 这种升级意味着比特币不再依赖于 OpenSSL 的签名解

软分叉

在 1.000 个区块的区间内达到 95% 的采用率。由于一些矿工表示支持 BIP66 ,但还没有升级,而且用 SPY 开采,所以发生了区块链分拆,持续了 6 个区块。最终新的软分叉规则夺回主动权。

2015 年 12 月 14 日

 388,380

BIP65

检查锁定时间认证 – 这可以锁定资金直到将来的某个指定时间。这是比特币的一个新功能

软分叉

成功推出达到 95% 采用率

2016 年 7 月 4 日

 419,328

BIP68

BIP112

BIP113

相对锁定时间

取消使用未来的时间戳来抓取过去交易时间中位数激励

软分叉

成功推出获得 95% 采用信号

2017 年 7 月 23 日

  477,800

BIP91

这个临时软分叉标识出了 SegWit 升级的必要性

软分叉

尽管只有极少数用户采用了 BIP91 规则,但软分叉在 336 个区块区间内达到了 80% 的采用率。因此区块链分拆的风险在这段时间内更高了。

2017 年 8 月 1 日

 478,479

BIP148

此临时软分叉在 2017 年 8 月 1 日之后的两周时间内标识出 SegWit 升级必要性

软分叉

尽管只有极少数用户采用了 BIP91 规则,软分叉公布日似乎成功且没有问题。因此区块链分拆的风险在这段时间内更高了。

2017 年 8 月 24 日

 481,824

BIP141

BIP143

BIP147

隔离见证升级

软分叉

成功推出获得 95% 采用信号

2262年

13,440,000

BIP42

修正了 21 万个加密货币供应上限的错误。该软件已于 2014 年 4 月升级,以解决这个错误,但新的规则在到 23 世纪前都不适用。

软分叉

软分叉仍然不适用

资料来源:BitMEX 研究,Github,比特币区块链

备注:

1. 除了 1MB 区块大小的限制之外,在 2012 BIP16 软分叉之前,没有任何的激活方法,因此如果分叉可以平稳的发生而不导致区块链分拆,则不一定有特定的共识分叉区块高度或发生日期。

2. “如果你不能立即升级到 0.3.6 ,最好在那之前关闭你的比特币节点。” – 中本聪(资料来源)

3. 在删除 OP_VER 之前,每个软件升级都有可能被认为是一个非确定性的硬分叉,而这些情况已经被排除在这个清单之外。如果硬分叉的定义包括上述的情况,那么它的定义便太过迂腐了。

4. 在上表中我们没有使用一致的定义,因为例如,根据具体情况,分叉的发生日期在每个事件中的定义根据该事件的情况都有所不同。

5. 其他人也提到, P2P 协议的改变也可以被认为是硬分叉的一种,如果它们使以前的软件版本无法继续使用,使之前软件版本不再连接到网络。但严格来说,这些规则并没有放宽任何区块的有效规则,而是可以通过建立软件过度版本来同步旧节点。这些更改不包括在上面的列表中。

6. 有些人认为 BIP90 是硬分叉的一种,然而由于它只是放松了过去发生的与软分叉激活相关的规则,所以它并不具备许多与共识分叉相关的特征或风险。

7. 在 2010 年 7 月,区块链选择规则被改变了,由区块的数量转移到的累积工作量。从技术上讲,这不是区块有效性规则的变化,但是这种变化的确存在一些与共识规则变化相关的风险。

2013 年事件算是硬分叉吗?

我们认为,总的来说,发生在 2013 年 3 月 11 日之后几个月, BDB 锁定限额的添加算是一个硬分叉。有争议的规则是 10,000 BDB 的锁定限制,这是添加。该规则于 2013 年 5 月 15 日在 2013 年 3 月 18 日发布的软件版本 0.8.1 中放宽。超过此限制的区块可能最终于 2013 年 8 月 16 日生产。因此,该硬分叉的日期可以是 2013 年 5 月 15 日或 8 月 16 日,取决于您如何定义它。

虽然有些人认为这可能不算是一个硬分叉,原因可以有很多,包括觉得这个规则是 “半非确定性” 的,或者可以由手动改变 BDB 配置的设置。事实上,由于锁定限制的非确定特性,理论上有可能存在一个本地系统设置,使得旧的 BDB 锁定限制从未被突破。因此,由于透过非常严格的定义,要求硬分叉是确定性的,甚至可能与比特币数据(如交易或区块头)直接相关的,人们可以做出比特币“从来没有硬分叉过”的声明。

在讨论这个事件时,比特币开发者 Gregory Maxwell 说:

那里有一个混合包,实际上你可以拿一个 BIP-50 节点,并且完全同步区块链,我最近几个月前用 0.3.24 做了这个尝试。它只是不会可靠地处理涉及大区块的,除非您更改 BDB 配置。所以,如果这到底是不是一个硬分叉还是有争议的,因为它是非确定性的。之前有一些错误修复,旧版本会被卡住,并在此之前停止同步链接。所以我认为如果给予一个非常强大的定义,就是以创建一个违反了先前版本规定的规则的区块链来看的话,我们从来没有硬分叉过。

资料来源:https://bitcointalk.org/index.php?topic=702755.msg8116032#msg8116032

2015 年 7 月区块链分拆事件

在上述共识规则变化清单中,有三次事件造成了可识别的区块链分拆。最近一次发生在 2015 年 7 月 4 日,在 BIP66 软分叉升级期间发生。

在 BIP66 激活之后,立即产生了一个 6 的区块的孤儿链,因为矿工产生了无效区块,而其他矿池并没有被认定该为无效区块,因为它们并没有在验证新区块。

在这种情况下,一些矿工表示支持 BIP66 软分叉,但实际上并没有升级他们的节点来验证这些区块,可以说矿工是 “假表态”。如果矿工已经开始验证区块,他们会发现区块无效且拒绝这些区块,然而一些建立无效区块的矿工和一个无效区块分支却出现了。

下图显示说明了这 6 个区块和区块分叉的图表。

2015 年区块链分拆图表

56910002a3f7cdd97a6a

资料来源: Blockchain.info (http://archive.is/WqGRp,http://archive.is/LHlF7)

免责声明

虽然在这篇文章中提出了许多说法,但我们并不保证准确性。我们可能犯了错误或者意外地忽略了列表中的共识规则更改。我们欢迎更正。

备注

在这篇文章发表之后,比特币维基上发布了另一个共识版本清单。

本文由BitMEX研究团队提供,查阅更多加密货币行业相关研究报告请访问http://cn.research.bitmex.com

原文: https://blog.bitmex.com/zh_cn-bitcoins-consensus-forks/

作者: BitMEX 研究团队

微博: BitMEX

微信公众号: BitMEX

官方 telegram 群: https://t.me/joinchat/GFRHFw5iUPbqeqPu1K95Tg


郑重声明:
  本文转载于网络,版权归原作者所有,其内容与观点不代表乐链网立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,欢迎与我们联系,我们将核实后修改或删除。

打开微信扫码与乐链网面对面交流

Powered by 乐链网   © 2017 lechain.com Inc.   鲁ICP备17012785号-1    UED:乐链网      

返回顶部