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

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

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

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

硬叉子

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

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

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

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

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

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

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

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

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

软叉子

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

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

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

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

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

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

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏维恩的派VNPIE

vn.py发布v1.8 - WebTrader

基于Web前端的量化交易应用WebTrader终于开发完成,之前实在是跳票许久。在此首先要感谢下负责开发Web前端的社区成员cccbbbaaab(这名字,怎么说...

4705
来自专栏jouypub

Hive之行转列/列转行

场景:在hive表中,一个用户会有多个人群标签,List格式(逗号分隔如要转成List),有时我们需要统计一个人群标签下有少用户,这是就需要使用行转列了

3085
来自专栏Kurt Niu 的博客

泛微OA自动打卡签到

公司用的泛微的OA,这玩意还是我选型的,对我们唯一的用处就是打卡签到。。。 泛微的OA打卡有两种,一种是用桌面网页打卡签到,另一种是必须通过手机APP定位打卡...

7865
来自专栏AI科技大本营的专栏

Python 开源项目 Top 10 精选(平均star为1128)

翻译 | SuiSui 最近,Mybridge对250个Python开源项目进行了排名,从中精选出了Top 10。这些开源项目平均star为1128,内容包括P...

3046
来自专栏区块链大本营

技术分析!什么是以太坊无状态客户端?

现在有一个协议转换现象,从理论上来说,它可以转换成很多其他不同的协议,从数学上来看,它就像如下情况。假设我们使用状态转移,STF(S, B) -> S’,其中S...

672
来自专栏梦魇小栈

博客评论网易云跟帖评论提醒功能

多说官方宣布 17 年 6 月 1 号停止维护,一个优秀的评论系统从此倒下了,令人唏嘘不已,还是要感谢多说团队多年的付出。眼下留给博主们的选择也就畅言和网易云...

972
来自专栏北京马哥教育

【重磅】基于 Python3 的开源堡垒机 Jumpserver v1.0正式发布

Jumpserver是一款开源堡垒机产品(GPLv2 License),使用 Python3 和 Django1.11 开发。自2014年诞生以来,经历了从 v...

3607
来自专栏方俊贤的专栏

微服务架构 : 获取微服务数据, 生成报表 (五)

针对每一个微服务所拥有的数据库发生变更时所产生的事件,要如何做出相对应的动作, 以维护其所拥有的数据库或数据仓储中的数据的时效性; 这确实不是件容易的事, 本文...

5650
来自专栏Timhbw博客

关于iPhone设备被陌生人锁定!!

2016-04-1010:35:37 发表评论 2,514℃热度 遇到这种情况怎么办? 目录 最近有很多论坛,贴吧里面提到自己的苹果设备无缘无故被锁定,还被...

33610
来自专栏运维一切

容器停止后续操作 原

如果你的容器每次都是被kill -9的信号直接灭掉,可能你的数据或者系统就会有各种操蛋的事情,这里给出一个docker容器关闭时捕捉处理stop信号,更加合理处...

651

扫码关注云+社区