什么是比特币区块链分叉的分叉

主题信息(必填)
主题描述(最多限制在50个字符)
申请人信息(必填)
申请信息已提交审核,请注意查收邮件,我们会尽快给您反馈。
如有疑问,请联系
人生得意须尽欢,莫使金樽空对月。
一只文艺范的软件攻城狮,Keep Learn,Always.
本人热爱编程,有着很强的兴趣,做事认真
技术内容,也要有态度。
比特币社区正在用软分叉(soft-fork)的方式升级隔离见证(SegWit),目前存在着很多争议,一方面是隔离见证本身存在的争议,另一方面是软分叉而引起的争议(一部分人认为该用硬分叉的方式升级隔离见证),到底谁是谁非,今天我们就从技术视角全面剖析一下它。软硬分叉涉及到的问题是去中心的化的节点软件、协议、版本升级的问题。是一个非常重要且值得讨论的问题。一开始,所有的节点运行同样的软件,遵循着同样的共识协议,维护着同样的一条链(blockchain)。这时,一部分节点升级到了新版本的软件,拥有了新的共识协议,这时会出现下面四种情况:
新节点认为老节点发出的区块/交易合法;
新节点认为老节点发出的区块/交易不合法;
老节点认为新节点发出的区块/交易合法(没察觉变化);
老节点认为新节点发出的区块/交易不合法(察觉出了变化);
注意:不合法会分为所有交易都不合法和部分交易不合法。这里为了简化模型,把有部分交易不合法的都归为交易不合法。实际情况是上面4种情况的组合,除此以外,我们还要增加一个维度,就是新节点和老节点的算力比,又分为下面两种类型:
新节点算力&50%;
新节点算力&50%;注意,我们目前在网站上看到的各种关于软硬分叉的资料,都是基于新节点算力&50%的情况下讨论的。这里我们也只讨论新节点算力&50%。要注意,另一种情况下,即新节点算力&50%,情况会完全不一样。软分叉是一个后来才出现的词,之前并没有。我们首先来讲一下什么是硬分叉(hard-fork)。什么是硬分叉?硬分叉是指:当系统中出现了新版本的软件(或称协议),并且和前版本软件不能兼容,老节点无法接受新节点挖出的全部或部分区块(认为不合法),导致同时出现两条链。尽管新节点算力较大,比如99%的算力为新节点,1%的老节点依然会维护着不同的一条链,因为新节点产生的区块老节点实在是无法接受(尽管它知道网络上99%的节点都接受了),这称为硬分叉。注意:以上情况基于新节点算力&50%。当必须硬分叉时,我们需要要求所有节点同时升级软件,未升级的节点将不能正常工作。如果有较多老节点不愿意升级,他们将工作在另外一条完全不一样的链上(这就是我们的ETC)。下面这幅图说明了硬分叉产生的原因:新的节点要求比老的节点要宽松很多。什么是软分叉?软分叉是指:当系统中出现了新版本的软件(或称协议),并且和前版本软件不能兼容,新节点无法接受老节点挖出的全部或部分区块(认为不合法)。因为新节点算力较大,老节点挖出的区块将没有机会得到认可,新老双方从始至终都工作在同一条链上,这称为软分叉。注意:以上情况基于新节点算力&50%。下面这幅图说明了软分叉产生的原因:新的节点要求比老的节点要严格很多。软硬分叉的优缺点从上面的定义可以看出软硬分叉有各自的优缺点,首先软分叉和硬分叉相比拥有下面的优点:
软分叉总是只有一条链,没有分成两条链的风险;
软分叉不要求所有节点同一时间升级,允许逐步升级,且并不影响软分叉过程中的系统稳定性和有效性;
但软分叉也有缺点:
软分叉的前提是老的节点总是能够接受新节点的区块,这就要求把系统设计成向前兼容(forward compatible);
软分叉总是建立在对老节点进行欺骗的基础上,它让老节点没有察觉实际上已经发生的变化,某种程度上违背了单点完整验证的原则;
向前兼容(forward compatible)向前兼容是非常有意思的术语,它不同于我们通常说的软件设计中向后兼容(backward compatible)的方式。它要求对于新可能出现的区块形态、共识机制有个预先的判断,并在老的系统中留有余地或后门。当新的节点被部署时,老的节点能够接受新节点所产生的区块。那么,比特币里是如何实现向前兼容的?答案是:非标准交易(non-standard transaction)。比特币中设定了如下规则:
将所有交易分类为:标准交易、非标准交易和非法(invalid)三种;
如果发现非法交易,一律拒绝,如果该非法交易在某个区块中,则拒绝整个区块;
在标准配置下,所有节点对非标准交易采取以下态度:
对于已经进入区块的非标准交易采取以下态度:
接受该区块;
对区块中的所有交易,包含该非标准交易按既有规则进行验证;
下面我们用两个例子说明比特币如何使用非标准交易进行软分叉升级。1、P2SH软分叉升级P2SH包含在BIP16中,通过软分叉进行升级比特币系统,让比特币在支持P2PKH基础上,再支持一种叫P2SH的标准交易类型。在此之前,比特币已经支持如下的脚本:”OP_HASH160 [20-byte-hash-value] OP_EQUAL”。要花费这样的脚本你只需要把hash值的原数据(preimage)推到(push data)栈上即可。P2SH是对以上条件的一种更严格限制,在P2SH模式(新节点)下,你不但需要提供该hash值的原数据,还要保证:
该原数据是一个可执行的脚本;
该脚本执行结果返回:true;
该脚本中不能含有”push data”的操作;
以及其它的一些限制;
当支持P2SH的新节点被部署时,新节点的算力&50%(P2SH升级时要求&=55%),系统将处于下面的运行状态中:
P2SH交易被转发到老节点时,会被老节点认定为非标准交易(有了新的,或不能理解的OP_CODE),老节点不接受、不打包、不转发;
当包含有P2SH交易的区块广播到老节点时,老节点接受区块,并按原有规则验证该P2SH交易,结果通过,因为老的规则只要验证原数据的hash是否相等(显然是相等的);
老的节点创建了一个原数据为:123456的脚本输出,并花费该输出。老节点们能够接受。但是广播到新节点时,按新规则(必须是脚本…)则不通过,新节点拒绝接受,认定为非法,不会打包该交易。即使该交易被老节点打包,也会被新节点拒绝。因为新节点控制多数算力,这样的交易将永远无法生效;
系统同时维护一条链。
P2SH的升级细节:
要求支持P2SH的矿工在其coinbase交易里包含“/P2SH/” 字样;
日检查之前1个星期内的所有区块(约1000个),如果超过550个包含(约55%)则激活P2SH。
2、SegWit软分叉升级SegWit主要包含在BIP141-144中,通过软分叉进行升级比特币系统,让比特币支持一系列SegWit的功能集。关于隔离见证的具体内容详见《谈谈区块连(21):比特币之隔离见证》。通过软分叉升级需要让老的节点认定新的交易为非标准交易,但同时是合法的。隔离见证是如何做到的呢?答案是:anyone-can-spend的输出交易。anyone-can-spend:下面是一个anyone-can-spend的例子:
scriptPubKey: (empty)
要花费这样的输出,你只需要提供这样的签名脚本:
scriptSig: OP_TRUE
隔离见证中将脚本版本(script versioning)和anyone-can-spend完美结合。一个标准的P2WPKH的输出如下:
scriptPubKey: 0 &20-byte-key-hash&
(0x0014{20-byte-key-hash})
这开头的0在新节点中将是脚本的版本号,在老节点中是一个anyone-can-spend的输出。当支持SegWit的新节点被部署时,新节点的算力&50%(SegWit升级时要求&=95%),系统将处于下面的运行状态中:
SegWit交易被转发到老节点时,会被老节点认定为非标准交易(anyone-can-spend),老节点不接受、不打包、不转发;
当包含有SegWit交易的区块广播到老节点时,老节点接受区块,并按原有规则验证该SegWit交易,结果通过(因为它是谁都可以花费的);
老的节点尝试花费SegWit交易,因为它是谁都可以花费的。老节点们能够接受。但是广播到新节点时,按新规则(隔离见证的验证规则)则不通过,新节点拒绝接受,认定为非法,不会打包该交易。即使该交易被老节点打包,也会被新节点拒绝。因为新节点控制多数算力,这样的交易将永远无法生效;
系统同时维护一条链。
SegWit的升级细节:
升级到core 0.13.1及以上的支持SegWit;
2017年11月如果95%算力支持,则激活SegWit。
1MB限制的问题:超过1MB大小的区块,对于老节点来说不是非标准交易,而是非法交易。为了解决这一问题,SegWit将欺骗老节点的伎俩发挥到了极致。它将整个Witness的部分放在原来整个block的外面。对于老节点来说它并不知道它接收的整个block后面还有一个witness的结构。结束语去中心化的、分布式的系统升级将是未来的主要挑战之一。软硬分叉都将扮演重要角色。软分叉的方案更加的聪明,能有效防止区块链的分叉。但却依赖于软件的向前兼容、依赖于欺骗老节点、依赖于老系统里预留的手段或后门。有时,为了实施软分叉,必须要将本可简单设计的功能设计得更加复杂,增加了bug的风险,得不偿失!尽管如此,软分叉相比硬分叉还是具有巨大优势,允许缓和升级,降低社区分裂的分险!至于SegWit是该软分叉还是硬分叉的争论,我相信你已经也有了自己的看法。欢迎微信公众号里回复作者交流观点!
作者:谈国鹏 比特宝()创始人,现任**集团区块链研发负责人。
文章选自作者微信公众号《谈谈区块链》中的一篇,作者已授权转载发布。比特币分叉及扩容科普|比特币|分叉|扩容_新浪财经_新浪网
基金经理老鼠仓,说好保本变巨亏,买基金被坑请到【】!信用卡无故遭盗刷,银行存款变保险,理财被骗请猛戳【】!
  分叉及扩容科普
  来源:火币网
  扩容:
  火币区块链研究中心表示:随着比特币的不断发展,使用比特币的人数和区块链上的交易越来越多,1M区块大小成为比特币发展瓶颈,导致了比特币网络拥堵问题日益严重,制约了比特币的发展。为了比特币更好的发展,比特币社区开始讨论修改比特币的代码,突破比特币的1M区块上限。
  BIP141:
  火币区块链研究中心表示:BIP141是Bitcoin Core团队提出的隔离见证方案,是当前公认的隔离见证激活方案。具体激活条件是:在日前的任意一个难度周期(约两周)内,如果有95%的算力发出准备就绪信号的话,隔离见证将被激活。但是这个条件很难实现,所以有人提出其它激活方案,比如UASF和SegWit2x,用这种方式帮助实现BIP141,激活隔离见证。
  UASF(user activated soft fork,由用户激活的软分叉):
  火币区块链研究中心表示:UASF采用BIP148来激活隔离验证。在8月1日这天,比特币BIP148软件会拒绝不包含bit1信号的区块。也就是说如果大多数矿工运行这个软件,他们会拒绝那些少数没有运行这个软件的矿工挖出的区块。因此,这些矿工会拥有最长的链,并在该最长链上激活BIP141的隔离见证条件。最终运行BIP141的节点会在链上看到超过95%的区块包含bit1,从而触发隔离见证。
  SegWit2x:
  火币区块链研究中心表示:SegWit2x是由一些比特币公司和80%的矿工在Consensus2017会议上签署的协议,通过BIP91来激活隔离验证。BIP91做法如下:当连续两天内有80%的算力发出支持BIP91的信号的话,所有的BIP91节点将拒绝所有不含BIP141准备信号的区块,因此,这些矿工会拥有最长的链,并在该最长链上激活隔离见证。在激活隔离见证之后,今年年底或者明年年初,SegWit2x将通过硬分叉把区块大小上限从当前的1MB增加至2MB,届时也可能导致新的分叉。
  分叉:
  火币区块链研究中心表示:上述扩容方案,如果有某种方案可以获得足够的算力支持,成功激活隔离见证,那么比特币网络将避免分叉的风险。如果没有任何一种方案获得足够的算力支持,比特币网络将形成分叉,届时将会产生多种比特币。原先持有比特币的人,在分叉后将拥有分叉后的每种比特币。
  重放攻击:
  火币区块链研究中心表示:如果比特币分裂为一种或多种比特币,即BTC1/BTC2/BTC3等,用户账户内同时存在对应数量的所有分裂的比特币,每条链上的地址和私钥生产算法相同,交易格式也完全相同,导致在其中一条链上的交易在另一条链上很可能是完全合法的。所以你在其中一条链上发起的交易,就可以到另一条链上去重新广播,可能也会得到确认。这就是“重放攻击”。
  简单来说,在你转账BTC1的时候,你的BTC2/BTC3也可能同时被转走。
  硬分叉:
  火币区块链研究中心表示:硬分叉是当比特币协议规则发生改变,旧节点拒绝接受由新节点创造的区块的情况,区块链将分成2条独立的链。矿工需要在2条区块链中选择一条开进行挖矿。
  软分叉:
  火币区块链研究中心表示:软分叉是当比特币协议规则发生改变,旧的节点并不会意识到规则是不同的,它们将遵循改变后的规则,继续接受由新节点创造的区块。因此软分叉不会产生2条区块链,而是在原区块链上同时存在新、旧两种节点挖的区块。类似于软件升级后,当你保存了一份Word 2013文档时,你仍然可以用Word 2011来打开它,这就是向前兼容。
  分叉对你有什么影响?
  火币区块链研究中心表示:对于普通用户,如果比特币真的分叉,最大的风险就是重放攻击。
  方法一:将自己的比特币存在钱包,在分叉尘埃落定之前,不要转账比特币。待分叉落定之后,可以将比特币分别转到自己的两个不同的地址,直到彻底完成分离,之后再进行比特币转账。此举可能需要消耗大量的时间和手续费。
  方法二:将自己的比特币充进靠谱的交易平台,如火币网,随后只需放着不动即可。火币网会为您处理好分叉过程中的各种技术问题;如果比特币分裂为一种或多种比特币,火币网将等额提供给用户分裂后的所有比特币,即用户账户内同时存在对应数量的所有分裂的比特币;如果比特币明确有分裂为多种比特币的风险时,火币网会逐步上线所有种类的比特币的交易。如果将自己的比特币存在仅支持分叉后部分比特币的交易平台,将可能面临分叉后产生的其他部分比特币无法使用的损失。
责任编辑:李坚 SF163百姓网公众号微信扫码关注百姓网小程序微信扫扫立即体验扫码下载手机客户端免费抢油卡、红包、电影票|什么货币系统提示:系统判断您来自, 推荐您可以跳转到频道看看所属类目什么货币50000元深圳源中瑞科技有限公司 龙华新区2月18日1元深圳源中瑞科技有限公司 怀柔16年9月7日1元源中瑞科技 滨江16年11月22日 源中瑞科技 黄浦6月21日1元源中瑞科技 晋安1月3日999999元深圳源中瑞科技有限公司 朝阳2月6日 源中瑞科技 宝安7月8日88888元深圳源中瑞科技有限公司 宝安4月25日999999元深圳源中瑞科技有限公司 朝阳16年11月28日88888元深圳源中瑞科技有限公司 罗湖7月3日400000元数字货币开发 宝安5月4日 深圳源中瑞科技有限公司 龙岗16年12月12日565元 南山7月27日 深圳源中瑞科技有限公司 福田2月14日 深圳源中瑞科技有限公司 龙岗1月11日 深圳源中瑞科技有限公司 龙岗16年9月20日 深圳源中瑞科技有限公司 龙华新区7月25日99元 福田2月15日 源中瑞科技 奉贤4月6日 源中瑞科技 宝安6月21日88888元深圳源中瑞科技有限公司 朝阳16年11月26日 源中瑞科技 徐汇7月8日1元深圳源中瑞科技有限公司 龙华新区16年10月26日 深圳源中瑞科技有限公司 龙岗2月18日 深圳源中瑞科技有限公司 龙华新区16年11月22日 深圳源中瑞科技有限公司 福田5月19日888888元深圳源中瑞科技有限公司 朝阳1月20日300000元深圳源中瑞科技有限公司 宝安4月10日 深圳源中瑞科技有限公司 福田5月26日1元深圳源中瑞 宝安16年7月20日 深圳源中瑞科技有限公司 龙岗16年11月28日1元源中瑞 平潭16年11月22日1元深圳源中瑞科技有限公司 宝安16年12月9日|||||||||沪公网安备16号0&G:23&GM:156
描述:请填写描述手机号:请填写手机号请填写手机号上传图片:打开微信,扫一扫右侧二维码,即可完成绑定 -->绑定后,您可以:1. 立即在手机上收到用户给您的留言2. 使用手机快速完成付费推广的续费动作3. 第一时间了解到百姓网付费推广最新的促销活动,以及享受微信端独特的促销活动4. 更快速地将信息通过微信分享给好友、同事、朋友圈5. 如果您是招聘类目用户,还能够第一时间接收到新简历通知

我要回帖

更多关于 比特币和区块链 的文章

 

随机推荐