软分叉与硬分叉:差异解释

比特币 ( BTC ) 和以太坊 ( ETH ) 等加密货币由称为区块链的去中心化开源软件提供支持。分叉是对区块链底层协议的更改。区块链分叉是对网络的重要升级,可以代表根本性的变化,也可以代表微小的变化,可以由开发人员或社区成员发起。
它需要节点运营商——连接到区块链的机器来帮助验证其上的交易——升级到最新版本的协议。每个节点都有区块链的副本,并确保新交易不会与其历史记录相矛盾。
硬分叉是一种激进的升级,它可以使以前的交易和区块有效或无效,并要求网络中的所有验证器升级到更新的版本。它不向后兼容。软分叉是对向后兼容的软件的升级,并且旧版本链中的验证器将新版本视为有效。
实际上,硬分叉通常会导致永久链分离,因为旧版本不再与新版本兼容。那些在旧链上持有代币的人也被授予新链上的代币,因为他们共享相同的历史。硬分叉的发生可能有多种原因。
了解硬分叉
要了解什么是硬分叉,首先必须了解区块链技术。区块链本质上是由数据块组成的链,用作数字分类账,其中每个新块只有在前一个块被网络验证器确认后才有效。区块链上的数据可以一直追溯到网络上的第一笔交易。这就是为什么我们仍然可以在比特币区块链上看到第一个区块。
硬分叉本质上是与区块链最新版本的永久分歧,导致区块链分离,因为一些节点不再符合共识,并且网络的两个不同版本分别运行。
这实质上意味着在区块链上创建了一个分叉,其中一条路径继续遵循其当前的规则集,而第二条路径遵循一组新的规则。硬分叉不向后兼容,因此旧版本不再认为新版本有效。
由于经常发生链分裂,硬分叉通常被视为危险的。如果保护网络安全的矿工和帮助验证交易的节点之间发生分裂,网络本身就会变得不安全,更容易受到攻击。
对区块链采取恶意行动的一种常见方法是执行 51% 攻击,即一群矿工设法拥有超过 51% 的计算能力来保护网络并使用它来改变区块链的历史。事实上,由于硬分叉而创建的一些网络遭受了多次 51% 攻击,其中不良行为者双花相同的资金。这些攻击让不良行为者利用他们在网络中的卓越计算能力来重组块,从而使他们能够进行双花。
硬分叉可能存在的另一个漏洞是重放攻击。当恶意实体拦截分叉网络上的交易并在另一条链上重复该数据时,就会发生重播攻击。没有重放攻击保护的硬分叉会看到两笔交易都有效,这意味着有人可以在不控制其他用户资金的情况下转移他们的资金。
为什么会发生硬分叉?
如果硬分叉可以极大地降低区块链的安全性,那么它们为什么会发生呢?答案很简单:随着区块链技术的不断发展,硬分叉是改进网络所必需的升级。硬分叉背后可能有几个原因,但并非所有原因都是负面的:
添加功能
纠正安全风险
解决加密货币社区内的分歧
区块链上的反向交易
硬分叉也可能是偶然发生的。通常,这些事件会迅速得到解决,而那些不再与主区块链达成共识的事件会在意识到发生的事情后回退并坚持下去。同样,增加功能和升级网络的硬分叉通常允许那些脱离共识的人重新加入主链。
意外的硬分叉
比特币区块链在其历史上经历过许多意外的硬分叉。这些比人们想象的更常见,而且通常很快就得到解决,以至于几乎不值得一提。
大多数意外硬分叉发生在两名矿工几乎同时找到同一个区块时。由于网络上的共识是分布式的,两者最初都认为该块是有效的,并在他们或其他矿工添加后续块之前继续在不同的链上进行挖掘。
随后的区块决定了哪条链变得更长,这意味着另一条链被放弃以维持共识。矿工们转向最长的链条,因为被遗弃的链条不再有利于开采比特币,因为他们将开采网络的一个分支。
当这些分叉发生时,找到被遗弃区块的矿工将失去 coinbase 和交易费奖励。但是,由于发现的两个块是相同的并且包含相同的交易,因此不会使任何交易无效。
其他意外的硬分叉是导致短链分裂的代码问题的一部分。例如,在 2013 年,一个区块的总交易输入数量比以前看到的更多,它被挖掘和广播,而一些节点没有处理它,导致分裂。在一些节点降级其软件以达成共识并拒绝这个更大的块后,问题得到解决。
硬分叉和软分叉的区别
硬分叉并不是升级加密货币背后软件的唯一方式。相比之下,软分叉被视为一种向后兼容的更安全的替代方案,这意味着不升级到更新版本的节点仍会将链视为有效。
软分叉可用于添加不改变区块链必须遵循的规则的新特性和功能。软分叉通常用于在编程级别实现新功能。
为了更好地理解硬分叉和软分叉之间的区别,可以将其视为移动设备或计算机上的基本操作系统升级。升级后,设备上的所有应用程序仍将适用于新版本的操作系统。在这种情况下,硬分叉将是对新操作系统的彻底改变。
著名的硬分叉示例
加密货币世界中有许多硬分叉的历史例子,但并非所有例子都发生在比特币区块链上。以下是历史上一些最受欢迎的硬分叉以及它们如何影响行业。
SegWit2x 和比特币现金
SegWit2x 是一项提议的升级,旨在帮助比特币扩展。它旨在实施隔离见证 (SegWit) 并将加密货币网络上的块大小限制从 1 MB 增加到 2 MB。
SegWit2x 的实施是在 2017 年 5 月 23 日达成的有争议的纽约协议中决定的。该协议认为,代表网络哈希率 85% 以上的一些比特币企业主和矿工在闭门造车的情况下决定了 BTC 的未来。
SegWit 将通过软分叉实现,而块大小限制将在以后通过硬分叉实现。该提案存在争议,因为它不包括比特币主要代码库 Bitcoin Core 背后的任何开发人员,并且被视为一种中心化力量——一群决定网络命运的企业,无需矿工和节点达成共识。该协议是在对扩展比特币进行多年辩论之后达成的。
小区块的支持者认为,较大的区块会使托管完整节点变得更加困难,从而可能使加密货币集中化。那些支持更大区块的人认为,BTC 不断上涨的交易费用会损害其增长,并使一些用户退出网络。
在比特币网络上,用户激活的软分叉是可能的。在这种情况下,钱包运营商、交易所和其他运行全节点的企业可以转移到未来会有激活点的新版本区块链,迫使网络上的矿工“排队”并激活新规则。如果他们不这样做,网络最终可能会分裂。
比特币用户当时为用户激活的软分叉而竞选,以响应决定比特币未来的闭门会议并阻止开创先例。他们呼吁实施比特币改进提案 (BIP) 148,该提案试图在比特币网络上实施 SegWit,并认为 SegWit2x 是一个有争议的硬分叉,使网络容易受到重放攻击。2017年3月发布,2017年8月1日实施。
由于担心 SegWit2x 计划无法实现,看到社区支持 SegWit,一些大区块支持者决定在 2017 年 8 月 1 日对比特币区块链进行分叉,结果诞生了比特币现金 (BCH )。它的支持者并没有将分裂视为竞争对手网络的创建,而是中本聪最初愿景的延续。
比特币现金区块链创建时的块大小为 8 MB,此后增加到 32 MB。时至今日,比特币现金的支持者坚持认为,其低交易费用将有助于它扩大规模并为没有银行账户的人提供银行服务,他们认为 BTC 将因其较高的交易费用而被甩在后面。
比特币现金硬分叉让硬分叉的可能性成为人们关注的焦点,不久之后,许多其他比特币分叉也被创造出来。其中包括比特币黄金 (BTG)、比特币钻石 (BTCD) 等。
DAO 黑客
另一个主要的历史性硬分叉 与2016 年在以太坊网络上推出的去中心化自治组织 (DAO)有关。以太坊运行一组智能合约,这些合约本质上是代码块,只要满足一组条件就会自动执行。这些合约使金钱可编程并且支持去中心化金融应用程序(DApps)。
当时,在 2017 年首次代币发行 (ICO) 热潮之前,DAO 在加密领域最早的众筹活动之一中筹集了价值 1.5 亿美元的 ETH。它本质上是 DeFi 协议使用的去中心化治理模型的早期迭代,其中代币持有者对协议的未来进行投票。
DAO 推出后,被 11,000 名投资者盗取了价值 6000 万美元的 ETH。当时,以太坊的交易价格低于 10 美元,因此所有流通的以太币中约有 14% 投资于 DAO,黑客攻击对该网络的信心造成了重大打击。
以太坊社区内部发生了一场辩论,每个人都争先恐后地想出如何应对攻击。最初,以太坊创始人 Vitalik Buterin 提出了一个软分叉,将攻击者的地址列入黑名单并阻止他们转移资金。
攻击者或冒充他们的人回应社区声称资金是以“合法”方式获得的,并且符合智能合约的规则。他们声称他们准备对任何试图没收资金的人采取法律行动。紧张局势加剧,因为攻击者表示他们将通过用资金贿赂 ETH 矿工来阻止软分叉尝试。
争论再次接踵而至,直到提出硬分叉。硬分叉最终得以实施,它将以太坊网络的历史回滚到 DAO 攻击发生之前,将被盗资金重新分配到智能合约中,投资者可以在其中提取资金。
此举极具争议性,在一些人看来,影响了区块链的审查阻力和不变性:在他们看来,投资者正在获得救助。以这种方式看待事物的人拒绝硬分叉并支持网络的早期版本,现在称为以太坊经典 ( ETC )。
算力大战:ABC vs. SV
比特币现金于 2017 年 8 月通过比特币区块链的硬分叉创建,后来由于其社区内的团体不和而分裂成两个网络。一方面,有比特币现金 ABC (BCHA),一个试图改进其背后技术的开发团队。另一方面,有比特币现金 SV(BSV),这是一个由自称为“中本聪”的 Craig Wright 支持的团队,试图将区块大小从 32 MB 提高到 128 MB。
在第 556,767 个区块,区块链一分为二,BCH 股票代码之战开始了。双方的矿工都部署了他们可以使用的所有资源,以获得相对于另一方的哈希率优势。许多人呼吁对另一个网络进行 51% 攻击以重组其区块,因此其支持者将被迫站在他们一边。
加密货币交易所和其他企业透露,他们会将 BCH 代码归因于排名靠前的区块链。一些矿池将他们所有的资源转移到哈希战争中,比特币现金 ABC 最终拥有大部分哈希率并抵御任何 51% 的攻击企图。它后来在交易所和其他服务上声称使用 BCH 代码,而另一个网络选择 BSV 作为其代码。