教程网

您现在的位置是: 首页 > 独家

什么是区块链硬分叉与软分叉?

什么是区块链硬分叉与软分叉?
什么是区块链硬分叉与软分叉?任何软件都需要不断更新以解决问题或提高性能。 在加密货币领域,这些更新被称为“分叉”。由于加密货币是去中心化的网络,因此网络中的所有参与者(

什么是区块链硬分叉与软分叉?任何软件都需要不断更新以解决问题或提高性能。 在加密货币领域,这些更新被称为“分叉”。由于加密货币是去中心化的网络,因此网络中的所有参与者(被称为节点)都需要遵循相同的规则才能正确地协同工作。 这套规则被称为“协议”。

一份协议中的典型规则包括区块链中每个区块的大小,矿工挖到每个新区块所得的奖励等等,加密货币领域中有两种类型的分叉,软分叉和硬分叉,但这两种分叉都从根本上改变了加密货币协议的工作方式。

软分叉

软分叉是一种向后兼容的加密货币协议的更新。 这意味着,只要它们不破坏新的协议规则,未更新的节点仍然能够处理交易并将新的区块广播到区块链。

让我们想象一个软分叉,它制定了一个新的规则,将区块大小从3mb降低到2mb。 旧的节点仍然可以处理交易并将2mb或更小的新区块上链,然而如果旧节点尝试将大于2mb的区块广播到网络中,新的节点则会因为该区块违反了新规则而将它拒绝。这样的话,旧节点会被激励以更新协议,因为旧的节点不如更新的节点高效。

硬分叉

硬分叉是与先前版本不兼容的加密货币协议的更新,意味着未更新到新版本的节点将无法处理交易或将新区块广播到区块链。 硬分叉可用于变更或改进现有协议,甚至可用于创建新的独立协议和区块链。

让我们想象一下一个将区块大小从2mb增加到4mb的协议更新(硬分叉)。 如果一个更新的节点尝试将一个3mb的区块上链,则旧的未更新节点不会将该区块视为有效而将它拒绝。

视情况而不同,硬分叉可以是计划好的或是有争议的。

在一个计划好的分叉中,参与者会自愿升级他们的软件以遵循新规则而抛弃旧版本。未更新的参与者则会留在几乎无人使用旧链上进行挖矿。

但是如果分叉是有争议的,也就是说社区内有关于此升级的分歧,协议通常被分叉为两个不兼容的区块链——两种不同的加密货币。 两个区块链都会有自己的社区,而开发人员沿着他们认为最正确的道路上开发。

由于分叉基于原来的区块链,因此原版区块链中的所有交易也会被复制到新的分叉中。 举例来说,如果你有100个叫做Coin A的加密货币,并且一个基于该加密货币的硬分叉创建了一个名为Coin B的新加密货币,你还将获得100个Coin B。

由于加密货币的开源特性,随着越来越多具有不同目标的个人和组织进入该领域,分叉将继续作为加密货币发展不可或缺的一部分。

什么是软分叉和硬分叉?每次提到数字加密货币,有两个词不得不提:硬分叉和软分叉。尤其是最近几个月,比特币世界里面里充斥着“劈腿”的声音,那么接下来小编就要来给大家介绍介绍什么是软分叉和硬分叉?

比特币是一套软件,对软件代码进行修改升级就经常会涉及到两个概念,一个叫硬分叉,一个叫软分叉。这到底是什么意思呢?社区里最常见的定义说是对共识的修改。但“共识”具体指的是什么,很难理解。我们还是多实际的修改代码层面来看下它们的定义吧。

比特币的交易格式和交易历史记录

在理解什么是硬分叉和软分叉之前,我们先要知道这两者要修改的东西是什么。

比特币交易在汉语中有双重意思,这是硬分叉和软分叉经常被误解的一个关键。

比特币交易其中一个含义指的是我们发送比特币统一使用的数据结构,这是一套规则,我们所有人发送比特币,不论你使用什么钱包软件都得遵守这一套规则。它被定义成一个数据结构,其中的每一个字段代表着什么意思。所有钱包软件都能理解这个意思。

比特币交易的另一个含义是指使用比特币的人相互之间发送比特币的事件。就比如我发了0.12345BTC给你,这是一次交易。所有这些发送比特币的事件,构成了比特币交易历史记录,这就是目前组成比特币完整节点的80多G的数据的主要内容。所有这些记录都可以在区块链浏览器上可以查的到,你只要在区块链浏览器上键入你的比特币地址就可以查到你所有的交易记录。

做个比喻来说明。交易格式就类似于我们去银行给别人汇款填写的那张汇款单,汇款单上明确定义了汇款人的姓名、身份证、手机号、账号、金额、收款人姓名、账号……等信息。比特币的交易格式也规定了汇款人的信息和收款人的信息,不过这些信息与人的身份信息无关,比特币交易规定的要填写的具体信息请看下一章。

硬分叉和软分叉的“官方”定义

硬分叉和软分叉在bitcoin.org上都有定义,但定义其实很模糊,为了防止我胡说(质疑bitcoin.org上的定义,确实让我诚惶诚恐。),我摘录原文:

硬分叉被定义成这样:

A permanent divergence in the the block chain, commonly occurs when non-upgraded nodes can't validate blocks created by upgraded nodes that follow newer consensus rules.

https://bitcoin.org/en/glossary/hard-fork

区块链发生永久性分歧,在新共识规则发布后,部分没有升级的节点无法验证已经升级的节点生产的区块,通常硬分叉就会发生。

软分叉的定义是这样的:

A temporary fork in the block chain which commonly occurs when miners using non-upgraded nodes violate a new consensus rule their nodes don't know about.

https://bitcoin.org/en/glossary/soft-fork

当新共识规则发布后,没有升级的节点会因为不知道新共识规则下,而生产不合法的区块,就会产生临时性分叉。

社区对区块扩容是该执行硬分叉还是软分叉的争议,我猜bitcoin.org上的这两个模糊的定义应该负主要责任。最大的责任是原文中的“consensus rules(共识规则)”定义不清晰,如果我们在去bitcoin.org上寻找“consensus rules(共识规则)”是什么意思,原文是这样的:

The block validation rules that full nodes follow to stay in consensus with other nodes.

https://bitcoin.org/en/glossary/consensus-rules

完整节点为了和其他节点维持共识而遵循的区块验证规则。

这个对共识的定义,在逻辑上就犯了循环认证的谬误,这个定义就是说“共识就是为了维持共识的规则”。这和许三多说的话是一样的:“有意义就是好好活。”“那什么是好好活呢?”“好好活就是做有意义的事情。”其实他根本就没有回答什么是好好活,以及什么是有意义。

另外这两个定义中把硬分叉定义为“permanent divergence(永久性分叉)”,和把软分叉定义为“temporary fork(临时性分叉)”,这种几乎是文字游戏的定义法,让社区很多人害怕硬分叉。认为硬分叉是一个非常可怕的事。

什么是软分叉和硬分叉?此外,今年将迎来比特币疯狂产子。随着比特币自动分叉网站投入运营,懂点编程皮毛的就能发行自己的分叉币,总之大家在投资过程中一定要小心谨慎。

什么是软分叉和硬分叉?如果比特币社区无法达成一致,区块链很可能形成分叉。简单来讲,分叉是指区块链在升级时发生了意见分歧,从而导致区块链分叉。根据分叉后的区块链是否兼容旧区块,将分叉分为硬分叉和软分叉。下面就来详细介绍下。

最简单的解释是:如果你遇到一个硬分叉,它意味着某种数字货币——比如比特币——的新版本软件和旧版本无法兼容,彼此看不顺眼,必须各走各路。而软分叉则不同,新版本要求更为严苛,不同意旧版本的一些规则;但旧版本比较憨厚,还能接受新版本软件。所以对于软分叉而言,新旧版本并非你死我活。

这么说仍然比较抽象,我们可以用一个具体的例子打比方。

对于软分叉,运行旧版本软件就好比出门坐地铁,而运行新版本就像是坐飞机。在地铁站安检的时候 (旧版本),拿着打火机,可以进站,可以上车,按照日常规程,基本没人拦你。而在机场安检时 (新版本),你的打火机只能贡献给倒卖打火机的大爷大妈了。换句话说,有些在地铁上能做的事情,在飞机上就不能做 (旧版本支持的事情,新版本不支持)。反过来看,因为坐飞机的安检更为严格,所以如果你满足了坐飞机的要求,坐地铁自然没有任何问题 (新版本支持的事情,旧版本也支持)。

对于硬分叉,我们也可以用 “地铁和飞机” 形象化。硬分叉中的旧版本软件就好比开地铁,而新版本则是开飞机。显然,能开地铁,不代表你能开飞机 (旧版本支持,新版本则不支持);反过来,即使你有飞机驾驶证,也不能拿着它直接坐进地铁驾驶室里把车开走 (新版本没问题,旧版本却不支持)。

如果非要用一句话来总结,数字加密货币的硬分叉意味着新旧版本软件互不兼容,必须分道扬镳,分成两条不同的区块链;软分叉则相对柔和,旧版本兼容新版本,只是新版本不兼容旧版本而已,因此虽然会有轻微分叉,但仍可共存在同一条区块链下。

最近在比特币网络中,最引人关注的软分叉和硬分叉当数8月份成功启动的 Segwit,和可能会在11月启动的 Segwit2x。二者的目的相似,都是为比特币的区块扩容。我们可以套用上面对于软硬分叉的解释,来理解这两个扩容方案的区别。

之所以说 Segwit 是软分叉,是因为在这一方案中,首先,旧版比特币软件 “区块不能大于 1MB” 的硬性要求,被新版突破了——区块大小最高可达 2MB。启用了 Segwit 的比特币软件中,每笔交易都会激活 Segwit 指令。正是因为这一指令存在而且会被激活,这些交易形成的区块才可以突破 1MB 的上限,达到 2MB。

其次,新版本软件产生的交易,仍然可以被旧版本接受、确认——即旧版本仍然支持新版本。这正是 Segwit 的巧妙之处:新版本软件产生的交易,在旧版本上不会触发 Segwit 指令——旧版本软件并没有接到 “你需要把区块大小改为 2MB哦” 的要求。所以,在旧版本看来,这仍然是一笔跟以往一样的交易。我可以确认它。

换句话说,在 Segwit 模式下,区块可以小于 1MB,跟往常一样,也可以处在 1 - 2MB之间。这就是 Segwit 属于软分叉的根本原因,求同存异嘛,大家一起过。

广为诟病的 Segwit2x 则不同。这个方案属于硬分叉,因为它要求 “新产生的区块至少达到 2MB,最多可达 8MB”。显然,这是一个 “你死我活” 的方案;这样一来,新旧版本均无法跟对方兼容。旧版要求区块不超过 1MB;即使是加入了 Segwit 的中间版本,区块也不能超过 2MB。在这样的条件下,Segwit2x “不低于 2MB” 的要求跟任何一个旧版本都没有交集。

在比特币网络中,由于分散共识机制,基于开源公有链的本质,硬分叉的存在不可避免。而且由于比特币软件去中心化的运行模式,任何一个矿工、用户或者网络节点,以及那些拥有网络节点和算力的交易所、矿池,都可以根据自己的需求选择支持分叉的任意一方。因此,避免过于激进的硬分叉,在分叉前充分做好预防网络攻击的准备,充分考虑各方的需要,就变成了必须要完成的功课。

软分叉和硬分叉都"向后兼容",这样才能保证新节点可以从头验证区块链。向后兼容是指新软件接受由旧软件所产生的数据或者代码,比如说Windows 10可以运行Windows XP的应用。

正所谓:道不同,不相与谋。这句话正可以用来解释区块链中的分叉现象。这两年,区块链作为一个高级和热门的词汇,频频见诸报端,然而,因为其专业性太强,不懂的人真的一下子很难理解。区块链分叉的产生正是因为社区意见不一致,产生分歧导致的。而分叉又可以分为软分叉与硬分叉,二者之间的区别是什么呢?下面将为大家一一揭晓。

区块链中的分叉就像我们平时走路一样,本来只有一条路的,到了一个路口就被分成了两条,这个是分叉的最基础概念。那么为什么会产生分叉呢?我们就拿最成功的区块链应用——比特币来进行举例吧。

我们都知道BTC的价格这一两年涨得跟疯了一样,比特币网络的用户数越大,交易转账也开始频繁起来,整个比特币网络也开始拥堵、交易费用也开始上升,小额交易可能永远不会被打包。在区块链网络中,产生一个区块的时间间隔大约为10分钟,一笔交易所占的大小为250B,一个区块的大小为1M,我们来简单做一个计算: 1MB=1024*1024=1048576B1048576/250=4194.3笔10*60=600秒4194.3/600=6.99笔/秒, 我们通过上面的计算公式可以看得到比特币网络每秒能处理的交易笔数大约为7笔左右,这个速度对于支付网络来说是异常慢的。为了提升交易拥堵的问题,开发者们提出了扩容的概念。玩过iPhone手机的都知道,升级一个应用是十分简单的,直接在APP Store中直接升级就行,这是中心化的升级,但是在去中心化的系统中升级就没有这么容易了。

比特币网络每次代码升级都要获得比特币社区的一致认同,如果社区无法达成一致,这有可能会形成分叉,简单一句话来讲分叉就是指在升级的时候发生了冲突,从而导致区块链分叉。根据分叉后的区块链是否兼容旧区块,将分叉分为硬分叉和软分叉。

软分叉是指区块链网络系统版本或者协议进行升级之后,旧的区块并不知道比特币网络以及升级了,并且继续接受由新节点创造的区块,新老节点还是在同一条链上工作。而硬分叉就是指升级之后,未升级的节点拒绝验证已经升级的节点产生的块,然后大家各自延续自己认为正确的链,被分成了两条链。 需要注意的是,软分叉和硬分叉都“向后兼容”,什么是“向后兼容”呢?“向后兼容”指的是新软件接受由旧软件产生的数据,举一个最简单的例子:Windows 10可以运行Windows XP的软件。而注意到软分叉还可以“向前兼容”,“向前兼容”就是指旧软件接受由新软件产生的数据,如用word2013保存的兼容版本文档可以由word2010打开。

 1/3    1 2 3 下一页 尾页