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

编程术语中的“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 条评论
登录 后参与评论

相关文章

来自专栏JAVA烂猪皮

基于 Docker 的微服务架构实践

基于 Docker 的容器技术是在2015年的时候开始接触的,两年多的时间,作为一名 Docker 的 DevOps,也见证了 Docker 的技术体系的快速发...

852
来自专栏数据和云

守得云开见月明:一次ASM存储高可用故障解决过程分析

作者 | 姜劲松,云和恩墨专家支持部Oracle技术专家,Oracle OCP,MySQL OCP,RHCE等认证专家。长期服务移动运营商行业客户,精通 ora...

993
来自专栏杨建荣的学习笔记

多套Oracle 10g整合迁移到11g的方案

在数据迁移中,除了跨平台,全量,增量数据迁移之外,还有一类会把已有的难度升级,那就是整合式迁移,比如原来有两个数据,迁移后是一个,类似这样的需求,如果再加...

3113
来自专栏沃趣科技

容器化 RDS:借助 CSI 扩展 Kubernetes 存储能力

RDS 并不是新生事物,新鲜的是通过容器技术和容器编排技术构建 RDS。对金融客户而言,他们有强烈拥抱 Docker 和 Kubernetes 的愿望,但可用性...

1743
来自专栏睿哥杂货铺

基于Kafka构建事件溯源模式的微服务

微服务本身并不算什么新概念,它要解决的问题在软件工程历史中早已经有人提出:解耦、扩展性、灵活性,解决“烂架构”膨胀后带来的复杂度问题。

4707
来自专栏区块链大本营

“危机四伏”的以太转账操作|以太转账安全风险——漏洞分析连载之八期

Solidity语言的默认存储规则和引用未初始化变量带来的特殊性共同导致了未初始化变量将原有状态变量覆盖,占用了状态变量在Storage中的位置,重演了最近“高...

812
来自专栏Spark学习技巧

云HBase小组成功抢救某公司自建HBase集群,挽救30+T数据

813
来自专栏Albert陈凯

2018-05-17 架构师技能图谱,搞懂这些找工作无敌数据结构常用算法并发操作系统设计模式运维 & 统计 & 技术支持中间件网络数据库搜索引擎性能大数据安全常用开源框架分布式设计设计思想 & 开发模

2142
来自专栏SAP最佳业务实践

SAP最佳业务实践:重复制造(149)-4发料

1、MF60备料 在此活动中,您为生产备料。如果在生产存储地点有充足的库存可用,将不生成行项目。 必须有库存。 角色:车间主任 后勤- 生产-重复制造 -备料-...

3758
来自专栏SAP最佳业务实践

SAP最佳业务实践:SD–按计划协议的销售(231)-3发货

一、VL10E交货到期清单 在此活动中,可以处理交货到期清单,以便创建交货凭证。 角色仓库文员 后勤 → 后勤执行 → 外向处理→外向交货的发货→ 外向交货→ ...

3856

扫码关注云+社区