一览比特币众分叉(二)
比特币核心
比特币核心是比特币最广泛的实施。
比特币核心用来决定哪个区块链包含有效交易。 比特币核心用户只认可该区块链中的交易。
比特币核心的客户端包含用于完全验证区块链的全节点软件以及比特币钱包。
块大小的讨论中,比特币核心支持Segwit。 理由是Segwit是软分叉。
Segwit利用侧链存储比特币主链的签名数据。
侧链的概念已经在比特币圈飘了有段时间。 顾名思义,就是一条与比特币主链并行的链,两条链之间有个双向挂钩(two way peg)。
Blockstream是这么理解比特币区块链和侧链的:
Image courtesy: Bitcoin MagazinePeter Wiulle考虑给侧链加个这么个功能,说把全部交易签名数据从主链分开。
就是Segwit了。
Segwit后的区块长这样:
因此,从交易中移除签名数据后,首先腾出部分区块空间,且交易延展性增强。但是Segwit只能通过硬分叉激活,于是开发者又开始找寻软分叉方案,然后,还真有。
Segwit 软分叉
要将Segwit作软分叉,需要开发者在两方面着重创新一下:
• 在侧链中以Merkle树的形式排列签名数据。
• 在区块中新找个地方,保存部分签名数据。
执行此Segwit软分叉的同时也提升了区块大小限制。不过依旧众口难调,后边直接分叉出比特币现金。
先看一些早期的比特币分叉。
Bitcoin XT
比特币XT是比特币协议的首个分叉,一时名声鹊起。 分叉源于2014年底提出的比特币改进提案(BIP 64),要求添加一个小的P2P协议扩展,在给定一组外点的情况下执行UTXO查找。
简言之,就是想把比特币的交易处理数量从7笔/秒增加到24笔/秒,计划这么干:
• 块大小从1 mb增加到8 mb。
• 块大小每两年自动增加一倍。
75%的矿工同意后,可激活分叉。
开始的时候XT形势看上去不错,2015年夏末时,已经有1000多个节点运行了新软件,后来就开始青黄不接,2016年初,未达到75%的门槛。
Image: Number of Active Bitcoin XT nodes via Coin Dance.比特币经典
比特币XT算是没成功,但是不影响部分社区始终认为改变块大小才是正道。比特币经典应运而生,主张2mb块大小。
势头的话,经典比XT猛,2000多个节点,后来也没躲开XT后劲不足的老路。
Image: Number of Active Bitcoin Classic nodes via Coin Dance.2017年11月10日,比特币经典停止运行,临了不忘助威比特币现金,说“现在比特币扩容的唯一希望就落在比特币现金身上了。”
比特币无限(BU)
比特币无限,跟XT和经典类似,也是比特币核心的一个分叉。但是,比特币无限是无限的,意思是块大小方面不硬性设限,由用户决定,也就是说在网络中得到多数共识的块大小是什么那比特币无限的块大小就是什么。
反正,比特币无限也是得到了一撮知名人士、矿池、媒体等的支持。我们看下coin.dance上活跃比特币无限节点的数量走势。
如图所思,有些活跃节点数量陡降的地方,正是比特币无限问题比较严重的时候。
BU中的一处Bug导致Bitcoin.com在2017年2月2日挖出了无效区块。
• 2017年3月14日,发现Bug后,BU节点被攻击,随后节点数量从780降至370。
• 2017年4月24日,内存泄漏导致70%的BU节点崩溃。
• 2017年5月8日, 70%的BU节点再次离线。 据开发人员称,是因为Xthin协议。
比特币无限开发者继续在比特币现金上保着自己的软件“BU Cash”。
比特币XT、比特币经典和比特币无限都是比特币核心软件的分叉。
那么,接下来,请出比特币加密货币本尊的硬分叉。
比特币黄金 (BTG)
2017年10月24日,比特币第491407号块发生硬分叉,产生比特币黄金。导火索是比特币挖矿过集化。
比特币遵循工作量证明协议,允许ASIC挖矿。 因此,有经济实力购置高性能矿机的个人或组织,就强了。
然后,就是算力集中这种事了。下面有请一张著名的算力分布饼图:
得出著名的结论:三大矿池撑起比特币整体算力半边天。
这个结论直接导致著名的比特币黄金硬分叉。 为应对算力过集,黄金抛弃了比特币的SHA-256,将工作量证明算法改为著名的内存依赖equihash。 然后黄金就抗矿机了,但是可以GPU挖矿。
Bitcoin Private(BTCP)
Bitcoin Private是2018年2月28日在第511346个块发生的硬分叉。
BTCP是ZClassic与比特币的合体。 ZClassic本身是ZCash的一个分叉。
BTCP在两方面与比特币差别很大:
• 首先,为达到抗ASIC,采用了ZClassic的equihash算法。
• 其次,允许用户生成公共或私有地址。 后者使用zk-SNARKs。
Zk-Snarks代表“零知识简洁非交互式知识论证”,在现代区块链技术中广泛应用。
零知识证明其实就是验证人与证明人间在不具体揭露某知识的前提下,做出的证明及验证互动。
零知识证明起作用,需要满足特定参数:
• 完整性:若陈述为真,则诚实的证明人可以说服诚实的验证人。
• 健全性:若证明人不诚实,谎言不足以说服验证人陈述的健全性。
• 零知识:若陈述为真,则验证人不应该知晓陈述具体为何。
比特币现金
比特币现金应该是最成功的比特币分叉。
比特币现金是这么定义自己的体系的:“无需中央银行或信任第三方运行的完全去中心化互联网点对点电子现金体系。” 比特币现金(BCH)与比特币非常类似,但有一些显着差异:
• 块大小为8 MB。
• 无Segwit。
• 无“替换费用”功能。
• 设重播和擦除保护。
• PoW难度调整间隔小于比特币。
注:比特币中每2016块调整一次PoW算法难度。
有鉴于BCH是一个硬分叉,拥有BTC的人也拥有相同数额的BCH,前提是持有的BTC在分叉时由自己的私钥保管,内些分叉时存放在交易所中的BTC不作数。。
比特币现金如何预防重放攻击?
比特币现金的最大特点之一就是消除加密货币分叉前都会面临的重放攻击。
何为重放攻击?
重放攻击指恶意重复或延迟数据传送。 区块链背景下的重放攻击指在一条链中恶意重复其他链上的旧交易。
好比Alice给Bob发送了5BTC,那么重放攻击下,Alice又给Bob发了5BCH。
那么,比特币现金是如何防止重播攻击的呢?
• 使用重新定义的sighash算法。 此算法仅在sighash标志设置为bit 6时使用。 这些交易在非UAHF链上无效,因为不同的sighash算法会导致交易无效。
• 使用OP_RETURN输出,其中包含字符串“Bitcoin:A Peer-to-Peer Electronic Cash System”作为数据。 比特币现金节点视任何包含这个字符串的交易为无效,直到第53万块。 意思是说,53万块之前,可以使用OP_RETURN输出在非UAHF链上进行交易来分叉币, 然后在UAHF链上继续交易。
Bitcoin Forks: Fully Comprehensive Blockgeeks Guideblockgeeks.com