首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >区块链公司谈的硬分叉和软分叉是什么

区块链公司谈的硬分叉和软分叉是什么

原创
作者头像
用户2181597
发布2018-06-30 16:57:51
8190
发布2018-06-30 16:57:51
举报

编程术语中的“fork”是一个开源代码修改。通常,分叉代码与原始代码相似,但有重要的修改,并且两个“叉”舒适地共存。有时使用分支来测试流程,但使用加密货币时,它通常用于执行根本性更改,或创建与原始特征具有相似(但不相同)特征的新资产。

并非所有的叉子都是故意的。在广泛分布的开源代码库中,当并非所有节点都复制相同的信息时,叉会偶然发生。然而,通常会识别并解决这些叉子,并且大多数加密货币叉是由于对嵌入特征的分歧。

有一点要紧记的是,他们有一个“共同的历史”。在拆分之前,每个链(旧的和新的)上的交易记录是相同的,weixin:xiandakeji。

硬叉子

有两种主要类型的编程叉:硬和软。

硬分叉是对旧版本无效的协议的更改。如果旧版本继续运行,它们将以不同于新版本的协议和数据结束。这可能会导致严重的混淆和可能的错误。

使用比特币,需要硬分叉来改变定义参数,例如块大小,需要解决的密码难题的难度,限制可以添加的额外信息等。对这些规则中的任何一个的改变将会导致块被新协议接受但被旧版本拒绝并可能导致严重问题 - 甚至可能导致资金损失。

例如,如果块大小限制从1MB增加到4MB,运行新版本的节点将接受2MB块,但被运行旧版本的节点拒绝。

假设这个2MB区块由一个更新的节点验证并添加到区块链中。如果下一个块被运行旧版本协议的节点验证,该怎么办?它会尝试将其块添加到区块链中,但它会检测到最新的块无效。因此,它将忽略该块并将其新验证附加到前一个块。突然之间,你有两个区块链,一个包含较旧和较新版本的块,另一个包含较旧版本块。哪个链增长更快将取决于哪些节点获得验证的下一个块,并且最终可能会有额外的分裂。两条(或更多条)链可以无限平行地增长是可行的。

这是一个艰难的分支,它可能是混乱的。这也是有风险的,因为有可能比特币花费在一个新的区块上,然后再花在旧区块上(因为商家,钱包和运行以前代码的用户不会检测到他们认为无效的新代码的花费)。

唯一的解决办法是放弃一个分支来支持另一个分支,这会导致一些矿工流失(交易本身不会丢失,他们只会被重新分配)。或者,所有节点都需要同时切换到较新版本,这在分散的,广泛传播的系统中很难实现。

或者,比特币分裂,已经发生(你好,比特币现金)。

数字货币交易所场内场外上币落地app项目白皮书区块链浏览器对接主流交易所跨境支付主链开发基金会发起海内外数字货币牌照等一整套技术解决方案,131-6131-9707。

软叉子

软叉仍然可以使用旧版本。

例如,如果一个协议被改变的方式是收紧规则,实现一个外观变化或者添加一个不会以任何方式影响结构的函数,那么新版本块将被旧版本节点接受。不过相反,更新的“更严格”版本会拒绝旧版本块。

在比特币中,理想的老版本矿工会意识到他们的块被拒绝,并且会升级。随着越来越多的矿工升级,以新块为主的链条变得最长,这将进一步孤立旧版块,这将导致更多的矿工升级,并且系统自我修正。由于旧版本和升级版本都可以接受新版本块,因此新版块最终会获胜。

例如,社区决定将块大小从目前的1MB限制减少到0.5MB。新版本节点会拒绝1MB块,并且会在前一个块上构建(如果它是用更新版本的代码挖掘的),这会导致临时分叉。

这是一个软叉,它已经发生了好几次。最初,比特币没有块大小限制。引入1MB的限制是通过软分叉完成的,因为新规则比旧规则“严格”。还通过软分叉成功添加了pay-to-script-hash函数,该函数在不改变结构的情况下增强了代码。这种修正通常只需要大多数矿工进行升级,这使得它更具可行性和更少的破坏性。

软叉不会承担困扰叉车的双重花费风险,因为运行旧节点的商家和用户将同时读取新版本和旧版本块。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档