主页 > imtoken国际版 > 谈论比特币分叉

谈论比特币分叉

imtoken国际版 2023-01-18 16:55:37

随着比特币分叉一词开始出现在越来越多的报道中,比特币现金 (BCC) 飙升。为什么数字加密货币会分叉?硬分叉和软分叉有什么区别?这需要从软件开发的特点入手。

比特币分叉时间

图片来自简书App

我们来说一个历史事件,2010 年,一名黑客利用比特币的一个漏洞,刷了一笔包含 1844 亿比特币的交易。他利用的漏洞是比特币只定义了输出总量不能大于输入总量,但没有限制面额不能为负数。这样,黑客可以让输出包含一个大的负数比特币,剩余输出的总比特币可以大大超过总输入。这件事被开发者在半天之内及时发现并修补,使得本次交易的输出无效。事后看来,这是一个非常低级的漏洞,但如果它没有被黑客利用,它可能不会被注意到。越是常识性的东西,就越难想到添加这个限制。

比特币分叉时间

在中本聪提出比特币这种去中心化数字加密货币的想法后,一群程序员开发了代码以在软件中实现比特币。任何大型软件都有或多或少的错误,这可能是由于人为疏忽、缺乏流程或时间紧迫而匆忙工作造成的。即使假设一个软件消除了所有漏洞,它也有其自身的局限性。同样的软件只有10个人使用,100万人使用。体验很不一样,考量也不同,所以设计思路也不同。任何软件设计都需要找到合适的平衡点,时间和空间的权衡,效率和安全的权衡,所以没有完美的通用软件。

当比特币被开发出来的时候,那些程序员从来没有想过比特币现在能得到如此广泛的关注和参与。在当时的代码实现中,很多影响软件吞吐量的限制都是硬编码的。例如,一个块的大小为 1M,而一个事务的大小必须至少为 250 字节。它是通过平均 10 分钟挖出一个区块来计算的。每秒只能处理七笔交易,而像 Visa 这样的信用卡组织在高峰期每秒可以处理数万笔交易。在当时可预见的情况下,这些限制是合理的。但比特币的发展却超乎任何人的想象,尤其是频繁的交易使得原本设计的比特币软件难以应对,出现区块拥塞现象。

比特币分叉时间

要解决此问题,您需要升级软件。比特币依靠去中心化节点达成共识来保证交易安全,而比特币升级的本质是修改共识规则。由于比特币的去中心化特性,该系统既有新旧软件也有。新旧节点可能无法达成共识,导致区块链分叉。

分叉可分为硬分叉和软分叉。所谓硬分叉,是指运行旧软件的节点挖出的块,在软件修改后不识别新软件的节点。也就是说,新软件下达成共识的规则超过了旧软件所限制的规则。例如,如果添加了新的加密方式,旧节点无法验证,自然会拒绝新的区块。软分叉意味着新软件​​的规则仍然可以遵循旧软件的规则,也就是说新软件只能将规则改得更严格,让共识的规则包含在旧规则中,比如原来的规则之一是要求交易输出的比特币总和不大于交易输入的比特币总和。现在修改规则后可以规定,如果满足以上条件,也要求输出结果中的比特币按面值从小到大排列(不管这条规则的合理性如何),然后出块按照这个新规则挖出的区块必须满足旧规则的要求,新区块可以被所有老节点识别,老节点挖出的区块可能不符合新规则,会被拒绝新节点。

比特币分叉时间

软叉适用于小修,使用一些预留场地等方法,达到不伤筋骨的效果。比如比特币的交易数据结构中的一些字段,一开始是没有用到的。以后如果要加一层校验,可以用这个字段来存放需要校验的数据,但是这样的字段是有限的比特币分叉时间,用完就不能再添加新的校验了。此外,由于软件漏洞,历史上的几次软分叉最终导致硬分叉,在及时发布新补丁后被淘汰。

硬分叉导致永久分叉,因为新节点挖出的区块不被旧节点识别,新旧节点会沿着两条分叉的主链发展。软分叉导致临时分叉,因为新节点挖出的块会被旧节点识别,但旧节点挖出的块可能不会被新节点识别。软分叉的风险是老节点挖矿可能会白费,因为它挖的矿不被新节点识别。新的区块被新旧节点都认可,所以传播速度会更快,最长的链连接最终会是新节点挖出的区块。

比特币分叉时间

至于比特币解决区块拥塞问题的具体方案,不同的利益相关者(主要是矿池和核心开发团队,以及交易所和用户)提出了不同的解决方案。为了扩展和隔离,这里就不展开了。

所以比特币的分叉,本质上是因为软件升级需要修改正确区块的共识,导致新旧节点的规则不一致才能达成共识。因为软件不可能一蹴而就或完美无缺比特币分叉时间,未来必然需要升级和分叉。至于选择硬分叉还是软分叉,不同的利益集团会有自己的想法,最终结果难以预料。