一:BCH分叉的背景与分叉方案
本次BCH分叉有两个竞争版本,分别是:ABC团队主导的bitcoin ABC 0.18.2;Bitcoin Unlimited以及CSW(Craig Wright, 俗称澳本聪)主导的bitcoin SV 0.1。
·bitcoin ABC 0.18.2方案的主要变化:
1)将区块中的交易排序由拓扑排序变更为规范排序;
2)增加两个OPCode(操作码):OP_CheckDataSig和OP_CheckDataSigVerify。
·bitcoin SV 0.1方案的主要变化:
1)将区块容量上限由目前的32M提高到128M;
2)删除每个脚本201个OPCode的限制;
3)增加比特币早期使用的四个OPCode:OP_MUL、OP_LSHIFT、OP_RSHIFT、OP_INVERT。
ABC方案
BCH的开发者社区中有几个比较重要地位的团队,例如ABC、nChain、bitcoin Unlimited、BXT、Parity、bitPrim等。但在这些团队中,地位最高、对BCH社区具有最实际控制力还是ABC团队。在去年6月份BCH从BTC分叉的时候,就是由ABC团队主导发布了UAHF版扩容方案(主要内容是区块扩容至8M、取消SegWit2x),随后在以比特大陆为首的矿工团体的支持下公布分叉预案,并在8月份成功实施硬分叉。众所周知,BCH是以比特大陆系矿池为代表的矿工团体主导的分叉,而非开发者和用户主导的分叉(事实上基于比特币的POW机制,开发者和用户主导权远小于矿工),因此市场上也有声音认为ABC团队得到了来自比特大陆系矿工团体很强的支持。
ABC这个团队的风格相对来讲是比较激进的,而且比较有野心,并且得益于他们获得的背后的支持,他们有很强的扩张「BCH帝国」的动力。ABC一直想要把BCH打造成一个具有完整的、图灵完备的平台,并且同时也非常积极地引入一些其他技术更新去提高BCH系统的效能。比如说BCH之前搞的虫洞协议(WHC)就是基于ABC的协议升级。
虫洞协议是一个Layer 2协议,旨在赋予BCH智能合约平台功能的作用,所以大家可以看出来ABC的整个思路和布局是怎样的。
这次的升级在我们看来也是符合ABC一向来的想法。
先说第一个升级,将拓扑排序改为规范排序。这里先解释下,因为比特币是用UTXO模型,UTXO之间是有一个拓扑结构的,就是一环扣一环,例如第一笔交易消费了之前一笔的输出、然后下一笔交易再消费这一笔的输出,但是需要注意的是对于没有逻辑联系的、在相似时间段内发生的交易,UTXO就没有那么严格的一个时序的概念。原有的拓扑结构排序(TTOR)也是比特币一直使用的交易排序结构,它的好处在于可以保留交易的依赖关系,但是TTOR是会给节点带来负担的,因为节点要去计算有效的排序,这个对于性能可能是一种阻碍。而ABC团队想要推进的规范交易排序(CTOR),其实就是把所有交易的排序方式在出块时就固定下来,即使是相近时间发生的、没有逻辑关系的交易,也会有一个明确的先后顺序,这会给后续的验证带来简化。
我们觉得,CTOR在性能上确实是有一定好处的,因为CTOR更简洁,很有利于后续处理交易的计算工作,而且在CTOR下交易的时序会更加清晰。从实际的效果来看,CTOR主要带来两个好处,一个是长远来说可以提高扩容的性能(当然目前来说意义还不大);另外就是比较有利于在BCH链上做的DAPP,因为交易顺序规范化了,状态确定性(State Finality)会变强、中间状态会变少。所以要说这个CTOR是不是比TTOR好,从某种意义上我们觉得是的,它的技术风险比较小,可以说改动确实符合ABC一贯的思路;但是反过来说,即使不改问题也不大,所以这就是体现出路线争议的地方了。
另外一个改动就是增加了两个OPCode(操作码),分别是OP_CheckDataSig和OP_CheckDataSigVerify.大家不要看到操作码就一头雾水,其实道理很简单,比特币协议中有很多这样的操作码,比如有一个非常接近的就是OP_CheckSig,即检验签名。对于比特币基本原理有一定了解的读者,就知道这个就是验证交易中交易发起者给出的签名的一个指令,它用来保证交易的签名是由发起方地址的私钥持有人正确地给出的。而ABC方案新添加的CheckDataSig,其实是专门针对交易中包含的「外部信息」签名的检验;所谓外部信息,你可以理解为某些数据并不属于交易必须的数据本身,而是作为一种信息载体被附在交易上,然后交易的发起者专门针对这种附带的外部信息进行签名。这个功能的设置,很明显是针对BCH上未来可能携带的各种Layer 2应用服务的,能够协助实现很多Layer 2的功能。所以新增的操作码对于BCH上建生态、各类DAPP功能的实现,能够起到比较基础的支持作用。
BSV方案
BSV方案相对来说可能更容易理解。我们首先看推动BSV的团队,CSW本人及其团队,是一个什么样的人,倡导什么样的观点,基本上就知道他想干什么了。CSW本人是一个比特币的「原教旨主义者」,可以认为CSW一直在倡导BCH要做真正的比特币,那么必须要符合比特币协议最原始的那些精神观念。CSW期望BCH是一个比较稳定的、保守进化的系统,所以在BCH内部CSW就是「保守派」的代表人物。进而,CSW所倡导和提出的协议更新方案,整体就是较为保守、非常比特币原教旨主义的。最为明显的一点就是,BSV这个名字本身就代表Bitcoin Satoshi Version(意为:中本聪版本的比特币)。
首先BSV方案反对CTOR的改进,原因是这一改进在目前来看是「过于超前、没什么用」的,他们认为BCH的协议更新应该更加稳步渐进,不要想着放很多现在用不到的功能。当然这只是表面的一个原因,深层次的矛盾是BSV非常不希望把BCH打造成一个通用型的DAPP平台,不要往协议里加各种应用、影响协议的稳定性。
除了反对CTOR以外,BSV强调了要把现有的32M区块容量上限直接提高到128M,原因是希望借此直接打消外界对于BCH容量与网络吞吐能力的顾虑、让BCH更容易被商用情景所接受。按照CSW的原话,「当我们向大银行和百货公司推荐使用BCH时,这些大公司都觉得BCH容量限制太小,无法满足他们的需求」。
此外,BSV删除了OPCode使用数量的限制,并且恢复了过去比特币使用的四个OPCode,可以认为是在协议稳定性与协议性能中做了一定的妥协,一边配合容量上限的提高,一遍放开部分OPCode给你用;但总体来讲,这还是在向初始的比特币协议靠拢的信号。
二:如何理解和评价两个分叉方案
千方基金在研究层面上觉得,BCH的分叉是社区内以ABC为首的全能激进派和以CSW为首的原教旨主义保守派矛盾激化的必然结果。但本次分叉是形成了以ABC为攻势强压、BSV被动作守势的对峙局面。
我们前面已经仔细分析过ABC方案背后的含义和思维,应该是比较清晰了,ABC现在的提议确实是在贯彻他们一直坚持的方针,就是积极引入技术改进,提高网络效能和功能,打造具有智能合约能力的网络生态这个方向在走。本次更新是在技术层面上稳步推进,对原有的协议稳定性影响其实并不算很大。
而BSV的方案是比较值得玩味的,目前争论非常大的就是把区块上限提高到128M的做法,因为这里面主要有两点问题:一是目前BCH的区块常规实际容量只有30-200KB左右,远远还未到达32M的当前上限,为何要直接提出扩容到128M呢?未免也太超前了一点,完全可以到BCH用户生态进一步繁荣、网络吞吐量增大以后再做。第二是比特币作为去中心化的协议,去中心化程度是一个比较重要的指标,而过大的区块是会影响一个去中心化网络运行的,之前就有实验表明,超过20M的区块就可能给网络同步带来相当大的压力,未来BCH如果真的用到了很大的区块,那么去中心化未必是能够得到充分保证的(按照BCH部分开发者的观点,随着互联网基础设施性能的提高,未来支持32M区块和现在支持比特币的1M区块将会同样地轻而易举,这个技术问题我们不予评论)。
所以我们可以看到一个比较有趣的事实,就是BSV在反击ABC提出的方案,或者说BSV是在看到ABC一直把BCH这艘巨轮在往ABC想要的方向开动的时候,不得不做出一个明确的表达:「我就是要做最初比特币应该做到的样子,我要走大区块、简功能的路线,所以我要在BSV中强调这一路线,并且让你们看的很清楚。」可见这是比较被动的,是一个BSV在公开强化自身观点的行为,所以观众会觉得BSV的方案在和理性上有一点点站不住脚;但是这个真的不重要,因为眼下不是比哪个方案本身更合理,而是路线选择上社区存在的巨大分歧的表现。
三:分叉的准备情况以及潜在问题
现在进入比较实际的一块,即各类基础设施在分叉前需要作出的准备,以及其中可能出现的问题,需要大家特别注意。
用户需要关注的第一个问题是交易所对于分叉后的BCH的支持情况。由于分叉后原有的BCH资产会同时在BCH(ABC)以及BSV的主链上被确认,因此交易所需要对BCH的资产状况进行快照,并在此前后停止存取款服务。快照完成后,交易所按照其所支持的分叉,帮助客户确认在分叉主链上的资产。在此用户必须格外留意,您使用的交易所对BCH分叉的支持状况,以免受到损失。
其次,用户还需关心钱包、矿池对BCH分叉币的支持状况。分叉前后BCH算力可能发生异常波动,分叉出的两条主链都有可能面临算力突变,甚至算力大规模逃离导致分叉后主链失败的状况。钱包与矿池服务提供商有可能保持中立,也有可能支持其中一方;如果发生算力突变、主链运行失败的极端状况,这些钱包和矿池服务提供商可能会进一步变更确认服务对象。部分服务商可能在分叉稳定之前暂停相关服务,但也有部分服务商会保持开放状态,这将给用户带来未知风险,例如交易的重放攻击;因此我们建议使用钱包与矿池服务提供商的用户关注所使用服务商的公告,并在分叉前后暂停BCH交易。
BCH此次分叉的一个重要技术风险是交易的重放攻击(Replay Attack)。此次分叉的协议双方都没有设置重放防护。重放攻击是指,用户在发起BCH交易时,所发起的交易可能在两条主链上都有效(即得到确认、上链);但是一旦某一条主链使用了变更后的OPCode,那么此链上「有效」的交易将因OPCode不兼容而无法被花费,导致用户资产损失。尤其需要注意的是,对于P2SH类交易以及涉及P2SH的地址,由于交易仅支持记录脚本的哈希,而不关注脚本本身的内容以及包含的OPCode,因此在确认交易时会被重放、且节点完全无法识别重放的风险;在后续解锁此类交易、赎回脚本时,一旦脚本包含的OPCode不被新的主链所兼容,此交易也将不能被花费。因此请用户特别留意P2SH类交易以及涉及P2SH的地址,不要支付到P2SH的地址(3开头)。
一些建议:
1)请确保在分叉时,先在钱包内确认BCH币的分离。
2)在没有确保分离BCH币前,不进行任何交易,尤其是涉及P2SH的交易。
3)在交易所内暂停使用P2SH(3开头)地址的充值。
声明:本内容为作者独立观点,不代表 CoinVoice 立场,且不构成投资建议,请谨慎对待,如需报道或加入交流群,请联系微信:VOICE-V。
简介:专注服务区块链和金融科技.新科技创造新商业
评论0条