1. 侧链的定义
侧链,是对于某个主链的一个相对概念。英文为sidechains。侧链协议是一种实现双向锚定(Two-way Peg)的协议,通过侧链协议实现资产在主链 和其它链之间互相转换,或是以独立的、隔离系统的形式,降低核心区块链上发生交易 的次数。侧链是以融合的方式实现加密货币金融生态的目标,而不是像其它加密货币一样排斥现有的系统。利用侧链,我们可以轻松的建立各种智能化的金融合约,股票、期货、衍生品等等。
2. 跨链的定义
跨链技术是实现区块链之间互联互通的技术,若对标互联网则可理解为“去中心化网络 的结合”,区块链技术的特性使得跨链技术的落地,以及对于链外信息的获取都非常困 难,早期跨链技术包括以 Interledger Protocal 和 BTC Relay 为代表,更多是关注资产 的转移;现有跨链技术以 Aion、Kyber Network、Bletchley、Polkadot、Cosmos 主要 着重的是跨链基础设施。“如果说共识机制是区块链的灵魂核心,那么对于区块链特别是联盟链及私链来看,跨链技术就是实现价值网络的关键,它是把联盟链从分散单独的 孤岛中拯救出来的良药。
我们用换汇来理解就方便了。人民币是一个独立的货币,美元是另一个独立的货币。人民币无法直接变成美元,美元也无法直接变成人民币。因此,美元无法直接进入人民币账本,人民币也无法直接进入美元账本。需要有人愿意买入人民币/美元,卖出美元/人民币,才能完成货币的兑换,实现价值的跨账本流动。
Alice有100美元,她来到了中国,需要使用人民币进行交易。于是她必须找到愿意和她兑换外币的人,例如Bob,Alice将100美元卖给Bob,Bob收到了Alice给他的100美元,按照当时的汇率,给了Alice 657人民币。
从账本上看,整个外币兑换的过程是这样子的。
首先Alice在美元的账本上有100美元,Bob在美元的账本上有0美元;
Alice在人民币账本上有0元,Bob在人民币账本上有657元。然后Alice在美元的账本上转账给Bob 100美元,
Bob在人民币的账本上转账给Alice 657元人民币。于是,Alice原本在美元账本上的账户中的100美元的价值就转移到了Alice在人民币账本上的账户中,体现为657元人民币。
在这个过程中,Bob在人民币账本上的的657元人民币的价值就转移到了Bob在美元账本上的账户中,体现为了100美元。
整个兑换过程中,在两个账本上同时发生了转账交易。
在整个兑换的过程中,人民币账本上的人民币总数没有变化,仍是657元;美元账本上的美元总数也没有变化,仍是100美元。变化的是两个账本上货币的持有人。
转账前:
转账后:
跨链本质上和货币兑换是一样的。跨链并没有改变每个区块链上的价值总额,只是不同的持有人之间进行了一个兑换而已。
综上,跨链技术的核心要素之一是:帮助一条链上的用户Alice找到另一条链上的愿意进行兑换的用户Bob。从业务角度看,跨链技术就是一个交易所,让用户能够到交易所里进行跨链交易。
交易所开展的不同类型数字货币之间的兑换,就是一种跨链价值转移的实现。严格来说,币币交易所就是一个跨链技术的实现。
3. 侧链和跨链的区别
跨链和侧链到底有什么区别?跨链除了增强了可拓展性,还提高了可操作性。比如,我们把比特币从比特币公链利用跨链协议转移到以太坊上后,便可以用以太坊的智能合约来编程了。
侧链背后的技术
侧链的诞生,源于应对比特币的低TPS挑战。当年,每秒只能处理7笔交易的比特币可拓展性太差,导致许多高级应用无发建立。于是,大家通过增加侧链,来辅助比特币主链,从而让比特币可以自由、安全、更快地“跑”起来。
那么,侧链与主链如何“沟通”呢?
侧链与主链沟通的过程被称为成为“双向锚定”(也称“双向挂钩”,2WP)。“锚定”一词在经济学中较为常见,指双方交易中一方要以另一方的行动为基准。
在区块链中,由于比特币实际上不是简单的“转移”,而是暂时将其在比特币区块链上锁定,之后将等量等值的代币在侧链上释放。当等量等值的代币在侧链上被锁定时,比特币区块链上的原始比特币就可以被释放了。因此,“双向锚定”实际上就是一方是否解锁,要以另一方是否已经有投币行为为基准。
这个主意听起来不错,但是却有不少挑战。比如,谁应该来管理锁定的账户?谁来解锁?锁定的资产如何被安全释放?可以说,侧链的管理和监督一直以来都是难点。
针对双向锚定中的资产管理问题,对于以比特币为主链的侧链,目前有两种管理模式。单一托管人模式与联盟托管模式。
单一托管人模式:顾名思义,是一个由可信任的第三方机构来锁定、监管双方资产的模式。托管人可以手动操作,也可以使用软件。最常见的单一托管人就是交易所了。举个例子,小张想把主链上的比特币放到侧链上。那么,只需要把小张的钱包,和侧链拥有代币的钱包共同交给交易所管理就可以了。到时候,交易所可以来验证、监督两条链是否投在钱包里投入的等值的币,锁定币,继续验证,然后再释放。
联盟托管模式:相对于单一托管人模式的过度中心化问题,联盟托管模式则显得更加公平、公正。这种模式很像“人民代表大会”。每位人大代表都有一次投票权,当代表们接受到解锁请求时,每位代表要独自验证交易并投票。只有当投票数大于一定的数值时(比如半数),才能将资产解锁。
但是,假如多个代表串通一气怎么办呢?目前来看,还没有好的解决方法。唯一能做的就是尽量在一开始就严格筛查出声誉好的代表。
4. 从侧链到跨链
不同于侧链,跨链中,链与链的关系是对等的。用户可以通过“双向锚定” 来“转移”比特币。同时,跨链还可以实现汇率兑换、智能合约交互等功能状态的转移、交换。
和侧链技术一样,跨链技术也需要解决资产的锁定与管理问题。
除了我们在侧链部分已经提到的的单一托管人模式和联盟托管模式,对于被跨的链中包含以太坊的情况来说,智能合约管理模式可以派得上用场。这个管理模式的关键就在于这个智能合约中需要包含双方区块链的区块头,从而验证双方的线上交易。
举个例子来看。假如我想把我的比特币转到以太坊上,我首先要把比特币在比特币区块链上转移到特定的锁定地址中。并把我在以太坊的地址附加在交易中。在此交易被矿工确定后,他们向以太坊的锚定智能合约(Peg Contract )发送 SPV 验证。验证时,我在以太坊的地址就会被提取出来。最后,交易验证成功且满足最终确定性要求时,锚定智能合约就会自动从锁定地址中转账对等的资产到我的以太坊地址。
在这里,我们要解释两个名词:**SPV 和“最终确定性” **。
侧链协议中,用SPV (“简单支付验证”,Simplified Payment Verification ),来证明一个交易确实已经在区块链中发生过,称为 SPV 证明(SPV Proof)。一个 SPV 证明包括两部分内容:一组区块头的列表,表示工作量证明;一个特定输出(output)确实存在于某个区块中的密码学证明。
中本聪设计的SPV 能够让用户以较小的代价判断某个支付交易是否已经被验证过(存在于区块链中),以及得到了多少算力保护。SPV 客户端只需要下载所有区块的区块头,并进行简单的定位和计算工作就可以作出判断。
在交易的最后一步中,“最终确定性” ( Finality )非常关键。原来,当区块链使用POW (工作性证明)的共识算法时,在足够大的算力下交易是可以被撤销的。在跨链交易中,从我们刚刚举的例子来看,每一步,每一个环节,如果不能被确认,那么交易就会停止。因此,我们需要一些方法去确定上一步的交易已经成功或被撤销。
目前,有两种常见方法来解决跨链交易的最终确定性问题。
最简单也最常见的方法就是等待足够多的确认区块数。因为POW共识算法中,当确认的区块足够多时,撤销的可能性就会变得很低。然而很多人并不想将时间白白浪费在等待上。
于是,也就有了第二种方法:利用区块纠缠。
这首先需要将两个链之间的区块建立一种依赖关系。假如其中一笔交易被撤销,那么交易所在的区块回滚,同时依赖于这一区块的另一条链上的区块也会回滚,其交易也会被撤销。因此,我们只需要看一个区块有没有回滚,就可以知道交易确定了与否。
在以上的部分中,我们介绍了如何通过侧链、跨链技术管理两条链上的资产。
在跨链中,可能会出现多条链共同交易的情况。比如下面这张繁乱如麻的图:
每2个区块链之间都需要1个跨链协议。那么,如何将这么多的区块链管理得井井有条呢?
解决这个问题的关键是添加一个特殊区块链作为“中枢”。我们可以把这个特殊区块链作为“太阳”,让其居中,联结其他区块链间的交易,其他所有的区块链都要围绕着它“转”。这个“太阳”就被称为中继链。中继是链与链之间的通道,如果通道本身是区块链,那就是中继链。 它具体的应用我们会在下面的项目解析中进一步提到。中继链的引入让跨链网络的复杂性大大降低。
侧链、跨链的管理模式总结起来一共有四种:
- 单一托管人模式
- 联盟托管模式
- 智能合约管理模式
- 加入中继链
5. 侧链、跨链典型项目(闪电网络,)
目前主流的跨链技术包括公证人机制,中继,哈希锁定,和分布式私钥控制四种技术。这四种技术的各自特点与代表项目见下图。我们会在项目介绍中,具体来看其中有代表性的技术。
下面,我们就着重讲一下BTC Relay和闪电网络这两个侧链项目,以及Polkadot和Cosmos这两个具有代表性的跨链项目。
5.1 闪电网络(Lighting Network ) - “不是所有的交易都需要记录在区块链上”
在之前硅谷密探介绍公链的文章中,我们已经提到了闪电网络这个侧链项目。由于比特币网络可拓展性过低,交易速度慢,交易量又小,导致资源浪费严重。为了解决这一问题,比特币闪电网络在2015年被提出。这个项目最为巧妙之处就是它在比特币之上建立了一个结算层,也就是侧链。由此使得比特币主网压力减轻,资源浪费变少。
闪电网络底层运用了HTLC 技术和RSMC 技术,构建了一个个链下支付通道。这些通道合在一起成为一个网络。交易双方的数目比较小的微支付可以通过一系列的链下协议完成,从而拓展比特币的性能。
什么是HTLC 哈希时间锁技术?举个例子。A与B达成这样一个协议:协议将锁定A的1个比特币,在T时刻到来之前,如果B能够告诉A一个正确的“暗号”R, 使得R的哈希值等于约定的值(R),B就能获得者一个比特币。如果B在T时刻到来时不能提供正确的“暗号”R,那么这一个比特币自动解锁,回归A所有。
“不需要记录在区块链上”的闪电网络还应用了RSMC(可撤销的顺序成熟度协约)技术。具体来看,假设A与B之间有一个支付通道。二人共同存入一定资金。必须当二人都签名时才能动用这些资金。每次交易时,都要共同确认资金分配,并达成分配合约。当新的分配合约生效后,旧的分配合约失效。一旦有人,比如A仍然使用旧的合约来动用资金,作为惩罚这笔钱必须退还给B作为补偿。
RSMC实现了双向支付通道。双方的支付协议通过可撤销的资产分配合约的形式表达出来。由于协议不需要上链,于是支付请求可以在链下处理,直到最终双方决定清算时才需要在链上执行。
基于这两项技术协议的闪电网络比主链比特币网络具有速度更快, 可以达到百万级到十亿万级TPS。其不仅具有安全、匿名的优点,还做到了跨链原子交换,也就是允许加密货币在不同区块链上点对点的转移。
闪电网络的成长历程
自从2017年12月闪电网络发布了1.0 RC版本,并成功在比特币主网进行了测试,闪电网络就一直不断发展。
今年5月,MIT实验室发现,智能合约与闪电网络的结合不仅能够实现数百万级的交易吞吐量,并且大幅提高整个系统的复杂性。难道传说中的“比特币智能合约” 就要来了?还有媒体报道称微软公司也开始考虑用比特币闪电网络来建立身份认证系统。
今年8月,首个基于闪电网络的加密货币交易所SparkSwap成立。用户可以在数秒内完成比特币与其他加密货币的交易,同时还不需要在第三方存入资产。
同时,今年8月,闪电网络节点数量正式突破3000个,网络容量达到近100个比特币(约64万美金)。而在刚刚过去的7月,网络容量为97个比特币(约62.8万美金)。与六月的网络容量相比增长了38%。
虽然,闪电网络看起来前途一片大好,但是世人对它的诟病一直没有停止。Bitcoin.com附属公司的负责人David Shares公开表示闪电网络中心化。还有人认为闪电网络作为一种通道网络,其支付路线过于复杂,交易时未知因素太大。并且,当前版本通道容量有上限,可能会导致一些用户不能进行稍微大额的交易等问题。
5.2 侧链技术:BTC Relay - “给比特币网路与以太坊搭座桥”
BTC Relay是在以太坊基金会支持之下,由ConsenSys团队推出并成长起来的项目。它被认为是区块链上的第一个侧链。其实质是以太坊的一个智能合约。
BTC Relay把以太坊网络与比特币网络通过使用以太坊的智能合约连接起来,可以使用户在以太坊上验证比特币交易。侧链机制不仅允许用户将交易发送到其他的地址或账户,还可以发送到其他的区块链。
简而言之,BTC-Relay的功能包括 验证比特币的交易,传递比特币交易到以太坊智能合约 ,存储比特币区块头部,检查智能合约内部最新的比特币信息。
那么在创新模式上BTC Relay与其他的侧链项目有什么不同呢?
我们知道BTC-Relay是由带有比特币SPV钱包功能的以太坊智能合约, 以及Relayers(BTC Relay的社区成员)共同组成。Relayers为BTC Relay提供新的比特币区块头,当交易在区块链进行验证或者区块头被检索的时候,Relayer会获得一笔手续费作为奖励,Relayer提交区块头的这种循环——然后处理比特币支付和奖励Relayer手续费的应用程序——使系统能够自立和自治。而不同于其他利用类似双向锚定原理的侧链。
那么BTC Relay有怎样的使用场景呢?举例来说。首先,A和B同意使用BTCSwap合约来进行交易。A要买B的以太币,B把他的以太币发送到BTCSwap合约上。 随后,A向B发送比特币,并希望BTCSwap这个合约能知道这件事以便BTCSwap合约可以释放B之前的以太币。 于是,A通过比特币的交易信息以及BTCSwap合约地址来调用btcrelay.relayTx , BTC Relay 验证这笔交易通过后就触发BTCSwap合约里面的交易。 之后,BTCSwap合约在被触发后确认这个BTC Relay地址是一个合法地址,然后释放之前B的以太币。由此,交易完成。
BTC Relay作为“第一个吃螃蟹的”进行了跨区块链通信的有意义的尝试,打开了不同区块链交流的通道。但是它仍然存在几个问题。比如智能合约需要获取比特币网络数据,这还比较难实现去中心化。同时,奖励Relayers的机制固然好,但是这样一来维护合约的成本会变得比较高,而Relayers活跃度却仍然比较低。路漫漫其修远兮,BTC Relay需要改进的地方还有不少。
5.3 Cosmos - “让你看到跨链的真正意义”
Cosmos是Interchain Foundation的跨链开源项目。Cosmos是专注于解决跨链资产转移的区块链网络,其核心开发团队也是 Cosmos 所采用的Tendermint共识引擎发明者。Tendermint是一个类似实用拜占庭容错共识引擎,具有高性能、一致性等特点。
作为最早研发,目前发展最成熟的跨链项目,Cosmos 的核心开发团队早在2014年就提出了“一区块最终确认”(One Block Finality)。前文中我们说到了最终确认性的问题,Cosmos的这一技术研发可谓对跨链的发展帮助极大。
Cosmos网络主要由两部分组成: Hub (枢纽)和若干个Zone (分区)。每个Zone和Hub 都是独立的区块链。Zone 是解决特定应用需求的区块链,HUB专注于处理Zone间的跨链交易。Zone和Hub都有自己独立的状态共识。
Hub通过去中心化的验证人组来保证安全性,验证人组有罚金托管机制,它是多资产的分布式账本,也就是一种多资产权益证明加密货币网络,并负责保证各类资产在不同Zone转移的同时,资产总量不变。
还记得我们在前面提到的多链如何管理中被称为中继链的“太阳”吗?Hub就是中继链。Zone之间的跨链通信主要是通过与Hub之间的IBC协议来实现。
什么是IBC(区块链间通信)协议?该协议用于Cosmos 网络的枢纽及各个分区的沟通。 代币可以安全快速地从一个Zone传递到另一个Zone,两者之间无需体现汇兑流动性。枢纽会将每个Zone与其他故障Zone隔离开。当有新的分区产生时,在线治理社区的投票会决定新的分区是否可以连接到Cosmos枢纽。所以,Cosmos也可以支持未来新的安全高价值区块链接入。
具体来看:当Zone1向Zone2发出跨链消息时,Zone1先生成消息包,并将其证明发布在Hub上,接下来Hub会生成Zone1的跨链消息包已在Hub上的存在证明的证明发布于Zone2,接下来Zone2收好消息包,并给出证明发布于Hub上,最后,Hub再给出Zone2的收妥证明的证明发布于Zone2,完成整个跨链消息传递。
而Cosmos因为可扩展性的优越性与以太坊的关系可谓“情深意长”。目前Cosmos最经典的一个案例就是作为以太坊的二级扩容。我们知道,以太坊自己的团队用Casper做了一级扩容。而很多年前,Cosmos就为以太坊做了一个EVM 兼容但底层已经是用高效的POS 协议tendermint的区块链叫 ethermint。2017年,以太坊创始人Vitalik 代表太坊生态基金会ECF (Ethereum Community Foundation) 与Cosmos合作,Cosmos 将为以太坊的二级扩容开发而做贡献。
可以想象,如果以太坊自身因为扩容不够而导致其上面的应用跑不动了。那么就可以通过Cosmos这样一个Hub,把以太币转到Cosmos的Ethermint Zone是上去,为以太坊开发出N多个它的Ethermint Zone。一个最简单的例子就是2017年时“加密猫”突然流行导致以太坊拥堵不堪。而如今就可以将这些猫们转到Cosmos的新的Zone里跑。如果跑完了想回到以太坊,还可以随时再回来。Cosmos的扩容的功能听起来更像侧链,但是却是比侧链更具有灵活性的跨链应用。
如果从Cosmos反观跨链的意义,我们就可以真正看到跨链不仅仅可以扩容,更可以提高可操作性。有了Cosmos,我们如果想对比特币做一个智能合约的编程,我们就可以把比特币直接借助Cosmos的Hub转到以太坊进行编程。同时,如果我们想让我们的比特币私密性更强,我们就可以把比特币直接借助Cosmos的Hub转到门罗币的网络。
目前Cosmos发展到什么阶段了呢?2017年项目提出了为以太坊做二级扩容的技术方案,今年一直在开发中的Cosmos, 估计今年年底有望完成。
同时,由于 Cosmos 的自身架构支持多Hub, 今年有许多区块链项目都选择用Cosmos作为跨链技术之一 来搭建自己的项目平台。IRISnet 项目将为开发者提供一个更友好的应用开发接口,并同时提供面向服务的跨链基础设施。
开发者可以在这上面使用已有的程序模块进行组合创造,开发自己的分布式应用链。IRISnet的创始人Harriet Cao 在采访中表示之所以选用Cosmos 体系,看中的原因就是Cosmos的清晰的分层架构,其高效的POS引擎和开放的去中心化结构。IRISnet的就是用Cosmos SDK 开发出来了更方面的面向服务的开发接口,并创新性地对IBC协议进行了扩展,这样不仅代币能跨链,数据服务和复杂计算也能跨链被调用并消费。
5.4 Polkadot - “期待中的跨链项目”
Polkadot是由原以太坊主要核心开发者推出的跨链项目。旨在解决可拓展性以及隔离性的问题。那么,同样作为跨链项目的Polkadot与Cosmos相比有什么技术相通性和与众不同的特点呢?
在介绍Cosmos时,我们再一次提到了中继链。而Polkadot也是通过中继链技术能够将原有链上的代币转入原链地址中,对其进行暂时锁定。还记得我们前文提到过的 RSMC(可撤销的顺序成熟度协约)技术吗?其中多重签名控制的机制在Polkadot 也有同样的应用。在中继链上的交易结果将由这些签名人投票决定其是否生效。通过Polkadot可以将比特币、以太币等都链接到Polkadot上,从而实现跨链通信。
与Cosmos相比,PolKadot 也有许多技术、模式的创新点。在Polkadot看来,其它区块链都是平行链。
平行链:也叫可并化的链,是更加简单的区块链形式。其关键特征就是他们执行的计算本质上是异构独立的。对于一般的智能合约系统,它们无法确定哪些交易是互相冲突的,所以那些本可以并行化的交易通常也只能按顺序执行,浪给了大量计算时间。而在平行链间划分明确的分界线,就可以立即执行所有交易,而不用担心产生冲突。
从激励和监督机制的角度看,Polkadot的网络中有四种基本角色:验证人、提名人、收集人和钓鱼人。其中,验证人是参与记账共识,并验证平行链上的数据。提名人:为验证人提供押金而背书。收集人:采集平行链上的数据并且提交给验证人。钓鱼人:作为赏金猎人,监督其它参与者的恶意企图。
Polkadot的原理如下图所示:
Polkadot已经发展到什么阶段呢?
目前,Polkadot还是以以太坊为主,主要实现以太坊与私链的互连。Polkadot的目标是, 升级到让以太坊可以与其它公链也进行通讯,并最终让以太坊能够直接与任何链进行通讯。
在Polkadot的Poc-1版本上线两个月后的2018年7月,又推出了PoC-2版本。 Polkadot团队在这一重要里程碑里为最终版本提供了许多新功能,包括平行链,权益分红和惩罚,Libp2p实现等等。PoC-2是对2019年第三季度发布Polkadot来说重要一步。
随着PoC-2的发布,第一个平行链现在可以连接到中继链。 它们具有基本的平行链状态转换和校验函数,以及基本的平行链共识机制。Polkadot团队将在PoC-2阶段部署第一个平行链。Polkadot 1.0 有望在2019年第三季度发布。
讲了这么多关于侧链、跨链的技术知识和项目介绍,不知道大家理解了多少?有什么问题欢迎留言讨论!
6. 分叉链,硬分叉,软分叉
区块链圈里第一个有影响力的分叉应该是以太坊的分叉事件。以太坊上一个著名的项目The DAO由于其自身漏洞,导致黑客窃取了当时价值约6000万美元的以太币。2016年7月,以太坊开发团队通过修改以太坊软件的代码,在第1920000个区块强行把The DAO及其子DAO的所有资金全部转到一个特定的退款合约地址,从而“夺回”黑客所控制的DAO合约币。由于一部分矿工并不认同这个修改,于是形成两条链,一条为以太坊(ETH),一条为以太坊经典(ETC),各自代表不同的社区共识以及价值观。当以太坊发生了这次硬分叉后,产生了两条区块链。由于这两条链在发生分叉之前的数据都是一样的,一个非常有意思的现象出现了:原本持有以太币(ETH)的人,发现自己除了持有原有的ETH外,又有了相同数量的ETC。
2017年8月1日,由ViaBTC领导的矿工团体创建一个比特币分叉——Bitcoin Cash(简称BCC或BCH)。这次分叉,让大量的比特币持有者凭空的增加了一种新的数字货币(BCH)。
硬分叉这种创造货币的方式和ICO非常类似,于是一个新的名词诞生了——IFO(Initial Fork Offerings)。矿工团队在创造分叉的同时,可以在分叉发生的区块中,利用自己的特权,分配一些货币给自己或其他人(直接写成CoinBase交易即可),然后再开放让所有人都可以参与挖矿。
分叉链简单理解就是软件升级导致产生双链现象,又分为硬分叉和软分叉。
硬分叉:当系统中出现了新版本的软件(或称协议),并且和前版本软件不能兼容,老节点无法接受新节点挖出的全部或部分区块(认为不合法),导致同时出现两条链。尽管新节点算力较大,比如99%的算力为新节点,1%的老节点依然会维护着不同的一条链,因为新节点产生的区块老节点实在是无法接受(尽管它知道网络上99%的节点都接受了),这称为硬分叉。
注意:以上情况基于新节点算力>50%。
当必须硬分叉时,我们需要要求所有节点同时升级软件,未升级的节点将不能正常工作。如果有较多老节点不愿意升级,他们将工作在另外一条完全不一样的链上(这就是我们的ETC)。
软分叉:当系统中出现了新版本的软件(或称协议),并且和前版本软件不能兼容,新节点无法接受老节点挖出的全部或部分区块(认为不合法)。因为新节点算力较大,老节点挖出的区块将没有机会得到认可,新老双方从始至终都工作在同一条链上,这称为软分叉。
注意:以上情况基于新节点算力>50%。
从上面的定义可以看出软硬分叉有各自的优缺点,首先软分叉和硬分叉相比拥有下面的优点:
- 软分叉总是只有一条链,没有分成两条链的风险;
- 软分叉不要求所有节点同一时间升级,允许逐步升级,且并不影响软分叉过程中的系统稳定性和有效性;
但软分叉也有缺点:
- 软分叉的前提是老的节点总是能够接受新节点的区块,这就要求把系统设计成向前兼容(forward compatible);
- 软分叉总是建立在对老节点进行欺骗的基础上,它让老节点没有察觉实际上已经发生的变化,某种程度上违背了单点完整验证的原则;
7. 主链 / 子链
子链指的是在主链的平台来派生出来的具有其他功能的区块链。这些子链不能单独存在,必须通过主链提供的基础设施才能运行,并且免费获得主链的全部用户。
子链是基于用户需求不同,而派发出来的区块链,但是它又不能独立存在于主链之外,必须基于主链才能运行,同时也可以获得主链的全部用户,以降低其宣传难度,提高用户量。
下面以墨客链(MOAC)子链为例,说明子链技术具有哪些独特的技术与优势。
第一,子链可以定义自己的共识方式和执行模块。
由于墨客链(MOAC)研发的时间比以太坊晚,所以其扩充了子链的概念。墨客的子链一个显著的不同点是子链可以定义自己的共识方式和执行模块。子链的共识方式与主链POW共识方式又不同,其可以是PBFT、POS,甚至还可以根据自己的喜爱与功能的不同,自定义共识方式,完全的坚持以人为本的思想。
自定义子链的运行是怎么样的呢?这个时候要引入一个SCS(Smart Contract Server)节点的概念。SCS节点通过提供运算能力来维持自定义的运行,同时还可以获得收入。既保障了子链的正常工作,还可以收获“红包”。“红包”收入主要是通过安装一些插件参与用户自定义的共识过程,以达到自定义挖矿来获得。实际上最终结果还是子链可以自定义挖矿。
第二,各个子链之间拥有灵活的交互功能。
一个子链可以使用另外一个子链提供的资源(比如分布式文件系统),也就是说我要实现某一个功能,我自己设计的子链不具备这个功能,但是通过子链的交互,我最终还是能够实现这个功能。