波卡平行链与ETH 2.0

昨晚,波卡生态链项目 Moonbeam 和 Ownbit 进行了技术交流,期望未来 Ownbit 对波卡生态链进行更好地支持(包括对 Moonbeam 的支持) 。Moonbeam 也将竞争成为第一批波卡平行链。借着交流的机会,我对波卡平行链也有了更深的理解,遂成此文。

ETH 2.0 和波卡平行链是未来的两个重要技术,他们虽分属于两个不同的重量级项目,但在设计上却有惊人的相似。

波卡平行链

在波卡(Polkadot)的设计里,有两个重要的概念,一个是波卡平行链(Parachain),另一个是波卡平行线程(Parathreads)。理解这两个概念是理解整个波卡生态的重要环节。

波卡平行链,故名思议,是与波卡主链平行的其他链。要成为平行链,需要占用波卡系统的一个插槽(slot)。波卡系统的插槽数量是有限的(版本1可能支持100个插槽)。波卡设计出了一套插槽拍卖的系统,通过出价(DOT)拍卖获得一个插槽有限的使用权(2年每次)。

因此每次插槽的占有都是有限时间内,到期后要重新进行插槽竞拍。用于竞拍的 DOT 将在插槽使用到期后归还,因此使用插槽,只是占用金额,而不花费资金。

为什么要成为波卡平行链?

成为波卡平行链主要获得两个好处:链本身更加安全,以及拥有和其他平行链的互操作性。

为了更好理解链更加安全这个概念,我们可以把波卡系统想象成可以容纳多条平行链的容器。每个平行链会有自己的共识机制,以及产生区块的方式。容器定时将所有平行链产生的区块收集起来,形成容器层面的区块。该容器在波卡中被称为:中继链(Relay Chain)。被中继链打包对于平行链而言,称为区块的 finalize。

波卡中继链对平行连区块的最终确认(finalize)让平行链更加安全。这样每个平行链可以得益于波卡系统的强大共识,而不用担心本链可能存在各种共识层面的攻击或问题。

波卡平行链和其他平行链的互操作性是另一个优点。波卡在系统层面设计了一套消息传递系统(Cross-chain Message Passing),可以让各平行链之间相互传递消息、执行指令、转移 token 等等。各平行链根据 XCMP 定义自己可以接收处理的消息类型,便可以让自己拥有和其他平行链的互操作性。

如果把平行链比喻成操作系统里的进程,那么 XCMP 可以理解为进程间通信机制 IPC (InterProcess Communication) 。

平行链资源是有限的。

因为平行链资源有限,大部分链可能无法竞拍到平行链插槽。这时,波卡官方给出的方案是,使用测试网络 KUSAMA,或者平行线程(Parathreads)。

平行线程和平行链之间的区别仅在于一点:平行链永久占用中继链资源,而平行线程只在需要时占用。平行线程需要中继链对其区块进行确认(finalize)时,便提出请求,并给予一定的费用。因为同时会有多个平行线程提出确认需求,中继链会按照给予的费用高低进行优先选择。如下图所示:

比起平行链而言,使用平行线程,无需参与插槽竞拍,因此无需大额的启动资金。对于一些不需要频繁确认的应用(例如平均几分钟、甚至每小时才生成一个区块的应用),使用平行线程更加适合。

ETH 2.0

ETH 2.0 的线路图按照分片技术(Sharding)在前进。分片技术最早出现在数据库技术中。为了让数据库拥有更大的执行查询或插入的能力,将一个数据库(中的同一张表)拆分成多个数据库,并且部署到多个机器上,让执行能力成倍地提升。

ETH 2.0 将以太坊网络拆分成多片(可支持 1024 片),将以太坊的执行能力提升相应的倍数。每个分片就是一个子网络(相当于波卡平行链)。处理 ETH 2.0 共识,以及系统各个子分片之间通信的模块被成为:Beacon Chain,这相当于波卡网络里的中继链(Relay Chain)。ETH 2.0 分片示意图如下:

可以看出,在大的架构方面,ETH 2.0 和波卡有着惊人的相似。但在细节和理念层面又有很多的不同。

波卡平行链 VS ETH 2. 0

从设计目的而言,波卡平行链主要是为了跨链目的,通过平行链水平扩张,进而解决性能吞吐问题。而 ETH 2.0 的设计完全是为了解决性能吞吐问题。

波卡和 ETH 2.0 都有状态确认的功能(finalize)。ETH 2.0 每一个时代(epoch)finalize 一次,一个时代定义为 64 个区块,所以 6 -12 分钟 finalize 一次。而波卡网络的 finalize 时间则更短,一般1分钟以内。

从共识机制而言,ETH 2.0 和波卡也有明显的区别。ETH 2.0 采用 PoS 机制。质押 32 ETH 可以成为验证者。每个分片至少需要 256 个验证者才能进行 finalize 操作。以 64 个分片计算,ETH 2.0 需验证者 16,384 名。而波卡采用提名者PoS(Nominated Proof of Stake)机制,所需验证者数量远小于 ETH 2.0,大约每个平行链需 10个验证者,以整个系统 100 个平行链计算,共需 1000 个验证者。

另外一个不同点在于,波卡是不同系统(平行链)间互联的框架。而 ETH 2.0 是同一套系统(每个分片)间互联的框架。

波卡更关注其他链,而 ETH 2.0 只是更关注本身,这也反应出它们对未来不同的展望。波卡打造的是多链并存、互联互通的场景。而 ETH 2.0 则打造的强大统一的底层区块链系统,上层繁荣的 DApp 则通过应用接口(ABI)彼此互通的场景。

跨链

波卡对于平行链之间,天然具有跨链优势。而 ETH 2.0 不具有跨链能力。但这并不意味这波卡比在跨链方面 ETH 2.0 强大很多。

例如对于跨链比特币网络而言,波卡需要使用比特币桥(bitcoin-bridge)才能完成跨链。而这点,跟以太坊跨链比特币方案是一致的。因此,对于跨链而言,波卡只是对于未来部署在波卡网络上的平行链之间才具有优势。

结语

目前波卡生态的平行链项目正如火如荼地进行。它们是否会在未来占有非常重要的地位,将是区块链最大的看点之一。

从时间而言,波卡主网的上线时间较迟,错过了以太坊发展的这几年黄金时间。然而,ETH 2.0 上线又将是2年以后的事情,而波卡平行链项目有望在今年年底或明年初上线波卡主网。这也给波卡留下了更多追赶以太坊的时间。所以未来波卡网络能否像以太坊那样大放异彩,非常值得我们关注!