加密货币网络发展的这几年,以扩容为特点的项目有很多,不过能作为「标志性解决方案」的并不多,例如以太坊2.0 的同构分片,波卡构建的异构分片,Plasma 的侧链,zkSync、Optimistic、StarkWare 等的 layer2,COSMOS 的跨链结构 (用跨链扩容)。
这些项目都在不断寻找基于以太坊、比特币的区块链结构最适合的扩容方法。以太坊 2.0 的关注度是最高的,主打 PoW 切换 PoS,然后压缩交易数据(rollup),塑造分片结构(sharding,非数据分片),这种方式极为漫长,属于是加密货币网络的终极思路,但不能否认这是极为必要的长久之路。
而从本质上来看,区块链结构优势明显,天花板也极为明显。如果想创新,如果不打破区块链结构带来的天花板,业内似乎很难走向下一步,笔者认为业内的创新需要从很多成熟产业和成熟技术体系里借鉴思路。
关于打破性能天花板,就可以借鉴云计算平台的设计。
区块链的瓶颈过于明显
区块链的瓶颈来源于其最优势的地方:共识。
共识的运行过程是多方(节点设备)对同一数据(区块)进行计算的过程,例如比特币,是某一节点打包区块后广播给所有节点逐一保存。
即使以太坊 2.0 从 PoW 切换到 PoS 后,只是会加快整个共识过程,减少单次共识完成的时间,以增加单位时间内的处理数量。而在海量计算需求面前,PoS 依旧是天花板过于明显。
区块链单节点限制的示例图
这样,每一个区块链结构里,就会出现上图中的模型,所有的计算任务,是在抢占一个计算节点的计算资源,若干个任务都在抢占一个狭窄的通道。
如果在一些应用场景里要求并发量没有那么高,可以通过提高单个节点的计算能力,更换更快的共识算法,以及对拼抢资源的任务做一下「通过」时间分配,可以顺利疏通整个确认过程。
不过,可惜的是,对于很多高并发场景(区块链不能止步于金融和单一场景),一定会堵塞、慢、甚至于完全不能进行,亦或者因为堵塞引发其他问题(例如安全)。
解决这个问题,需要在任务处理时实现足够多的并行处理量,才能增加网络单位时间内任务处理的上限值。
如果借鉴云计算的扩容和并行思路,加密货币网络该如何实现呢?
云计算提供的思路,最基础的要求,是接入系统的网络资源,不是多台计算设备接入,对外输出的资源上限只是一个计算设备的上限,而是 N 台计算设备接入后,网络的处理能力,是 N 倍提升的。
这恰恰是加密货币网络需要的,每个加密货币网络都有若干个计算设备的接入,而最终的性能局限在了共识层的结构部分。
我们具体来看,传统云计算平台存在水平扩容和垂直扩容,水平扩容即并行,将任务分流分区处理。垂直扩容即增加单台设备的处理能力,这就很像:解决扩容问题的一个思路是加大区块。
云计算中并行的举例,数据生成适合并行的结构,继而利用 GPU 的性能快速处理
但加密货币网络中区块链结构无法改变的时候,实现并行的思路已经演化为 2 种。
本文中,白计划团队将以 Oasis、Phala、PlatON、Dfinity、Filecoin、IOTA 6 个加密货币项目为例阐述两种主要实现并行的思路。
(白计划注:排列顺序是根据依靠安全硬件并行和依靠改善算法并行区分的)
当这些加密货币网络在具备云化并行的能力后,将承担未来很多互联网遗留问题的解决预期。
主流的 2 种并行思路拆分
以上的项目可以分为两种思路解决扩容和并行问题。
其一是以 Oasis、Phala、PlatON 为代表,通过将可信计算硬件作为计算设备接入网络,硬件设备具备很高的计算能力和安全能力,可以将计算过程、存储过程赋予安全性。而这些单个设备(或集群)又可以独立承担独立的处理工作,这样在共识层外实现并行和安全计算,总结为独立的可信计算。
其二是以 Dfinity、IOTA、Filecoin 为代表,通过研发新的算法在共识层,改变区块交易确认的过程,实现并行验证,以提高链上的任务处理能力,然后再通过可伸缩性的塑造,增加单个计算设备的算力和空间,也就是云计算的垂直扩容。
具体拆分如下:
以可信硬件硬件实现并行的网络设计
1.先搭建一个优质的共识层。
首先,加密货币需要一个总帐本,总帐本存在于共识层,Oasis、Phala、PlatON 都将共识层和计算层做了切割,在计算设备之上有独立的共识层,即一条通过计算设备(或云)搭建的运行高速共识算法区块链网络。
不过值得注意的是,其中 Oasis、PlatON 有较为明显的分层概念,而 Phala 的分层概念不明显,其设计细节在于对链下计算设备有独立的规则。
为了保证共识层的稳定性,Oasis 的这一层选择通过具备行业信任度较高的组织和企业搭建节点,节点间通过 Tendermint 算法通信,快速形成总帐本。
PlatON 的节点同样是通过合作方搭建,并且其使用类 BFT 算法 CBFT 算法,优化了普通 BFT 算法的效率。
Phala 则是把具备 TEE 的计算节点(被称为 Gatekeeper)接入网络,Gatekeeper 的 TEE 计算区可以维护总帐本,其共识为与波卡一致的 NPOS 共识,可以快速出块。
Phala 的 Gatekeeper (中间部分)维护总帐本
共识层外,他们把计算和存储引入链下或 layer2。并行计算就在这里实现。
2.让计算层实现并行计算。
这里要先说 Oasis,其计算层称为 Paratime,可以看作是一个个独立的链,或者看作一个 runtime 集群,不过,在 Oasis 网络的建立初期,Paratime 大多还部署在云里,并没有全面替换具备 TEE 的设备作为网络基础设备。随着进度推进,Paratime 的节点会全部具备 TEE 能力,保证其安全性。
Oasis 的计算层(右侧)
Phala 的计算是在接入节点的 TEE 中完成的,每个 TEE 中会部署 Phala 的 pRuntime,pRuntime 与「共识层」(理论上)的通信是独立的,所以 pRuntime 里相互处理的交易并不冲突,这便是可以实现的并行,因为每个 TEE 的 pRuntime 就像一个个「分片」。这样的接入节点越多,网络性能越强。
PlatON 的计算,是在被标注为 layer2 的计算层完成的,PlatON 的 layer2 具备大量的计算设备,其中包含定制的可信计算设备,例如完成多方计算的可编程电路,此外,还会通过密码学以及零知识证明等技术完成隐私计算等,PlatON 也是实现隐私计算的,不过其运用技术是多方计算或零知识证明、同态加密等。
PlatON 网络的模块和分层
将计算层设计为可信计算硬件的网络,是利用计算层的并行去扩容以及实现可伸缩性。我们可能认为将计算迁移到共识层外,并不是真正意义实现了并行计算。
但具备可信计算的硬件与共识层因为具有安全紧密的联系,所以与共识层是「一体的」,理论上如果为了链下计算的安全性,会需要链下有一个总帐本概念或其他控制安全性的方式。但有可信计算硬件的帮助,就不需要这个总帐本提供链下的安全性保护。
引以对比的可以是以太坊 2.0,信标链是总帐本,如果已经部署了分片,每个分片间可以独立处理任务,只是在 Oasis、Phala、PlatON 里,是用可信硬件替代了分片的计算部分。
拆分完计算层的并行后,我们来看拆分利用算法实现并行的方式。
通过算法实现并行处理的设计
1.研发新算法。
以 Dfinity、IOTA、Filecoin 为代表,研发算法后,可以在不更改区块确认过程的情况下让任务开始并行处理,加快确认速度。
这里我们要先提及,如果在算法层面实现并行,主要实施会是改变算法计算的规则,也就改变了算法表现的功能逻辑,例如 PoW 算法如果改变,会改变 PoW 算法中计算随机数、打包、广播的逻辑。
Dfinity 对算法的更改部分是共识算法上,将传统的共识节点全部参与共识计算修改为通过计算随机数选取部分节点完成共识计算,这是加快共识验证的一个步骤。而更核心的是选中的共识节点是通过非交互式的 BSL 算法(节点确认数据签名反馈是独立进行的,不是组合进行的)确认交易,意味着不会经历 BFT 类共识的节点间反复交互的过程,而达到类似「并行」加速的效果。
Dfinity 的共识确认过程,有并行效果的是左侧签名部分
IOTA 对算法的修改比较彻底,对比区块链,IOTA 使用 Tangle 数据结构形成总帐本 Tangle 特点是每个事务都附加到两个先前的事务里,所以要完全消除了原有区块链链式结构对确认时间的依赖。这就形成了交易的无限关联确认结构,可以达到并行效果。
Tangle 算法的交易确认模型
Filecoin 在并行上的修订,是在对存储任务的并行处理,因为 Filecoin 的存储部分,会对存储数据完全进行计算,这个过程极为漫长(对比来说)。所以并行和提速非常之重要,目前,其采用的是更新后的 NSE 算法。
拆分 NSE 算法可以看到的是,当处理数据时,会对数据进行分 window (可以理解为一个单元)和分 layer 层的处理,处理完成后才会进行下一步数据存储以及后续的 Post 证明打包。采用 NSE 后,在 layer 的处理部分,layer 间没有过多依赖,所以可以形成并行处理效果,可以总结为并行提速的调整。
FilecoinNSE 算法的拆解,可以观察左侧的 layer 部分
2.配置其他部分
在算法上解决了并行问题,那接下来需要一些辅助功能。
IOTA 的 Tangle 没有普通区块结构里的时间限制,那为了达成共识,就需要交易验证器的帮助,来确认哪些交易形成共识。
Dfinity 改善了算法,与之匹配的还有子网、数据中心和容器,子网是类似一个个「分片」,而数据中心是 Dfinity 网络的底层网络部署,其要求数据中心参与,意味着网络的基础处理能力很强。在子网上,容器是建立的独立操作单元,可以类比区块链的智能合约,容器的组合交互可以实现复杂性。
Filecoin 在 NSE 算法对数据并行处理后,进行的是存储复制和时空证明的打包保存。这些部分保证了 Filecoin 总账本的一致性。而其他开发部分,是依赖官方团队和生态中提供的工具。
云化并行之后怎么办?
以上的 6 个加密货币项目,理论上以并行突破了区块链的性能限制,那留给项目接下来的是什么?
笔者认为,是如何通过对网络工具的开发让这些性能为开发者所用。加密货币网络的使用目标,最重要的是可以开发 DApp,可以开发广义的去中心化业务。
即使基础设施性能很高,没有开发者做出应用时间,基础设施也会是徒劳,开发者决定了链的应用产生量,应用产生量决定了链创造的和包含的价值。
正如传统互联网开发者,从筚路蓝缕的基础开发进入云化开发时代,云计算平台已经为开发者提供了极为优质的体验,后来的创业者,已经不像当年,还要为扩容担忧。
敢问如今的加密货币网络,是否可以以云计算平台「面向服务的架构」为榜样,形成开发浪潮。云化并行之后,加密货币只是突破了井口,你是否能继续升向天空呢?