聚焦去中心计算:在可信平台,如何保证执行一致性的问题?

7月17日,Patract 团队参加了在杭州举办的夏季黑客松的 Workshop ,围绕「去中心计算时代的到来」的主题进行了深度的讨论。他们分别是:Patract CTO-AtenzCloak 创始人-张晓Crust CTO-ZikunPhala 联合创始人-尹航

以下是摘自 Aten 的发言内容,以下是摘自 Aten 的发言内容,完整视频请点击:https://mp.weixin.qq.com/s/5R4CdjqP0cx2asLkY1MteQ。

大家好,我叫 Aten,Patract 的 CTO,知乎名是金晓。我们 Patract 是为 Parity Wasm 合约生态的开发者服务的团队。今天的圆桌主题是去中心计算,一定程度上来说,区块链整个体系的运转都是去中心计算,而且我们 Patract 的发力点是在 Wasm 合约上,所以今天我就会和大家分享关于在 Wsm 合约的去中心计算上的一些新观点。


Q1:“什么是计算:在您的领域中,去中心计算相比于中心化的计算,有哪些不一样的特点以及它带来的意义?


Aten:我们今天的主题讲的是去中心计算。大家首先要明白一点,大家做的区块链,其实它只是所谓去中心计算这个大框架下的一种实验品,或者叫作业务产品。当前去中心计算是个很广阔的领域,我们至少可以从业务产品上分成以下至少三种类别:

第一类,计算这件事发生在大家手上的终端或者服务器上,也就是计算的过程放在终端而不是中心中,像边缘计算就是这类。比方说,苹果开发出了新的芯片,可以把机器学习跑到自己的手机终端上,而不把你的数据汇报到中心,这就是把计算分散到终端的去中心计算,这个就是保护隐私的千人千面的去中心化计算。

第二类指的是,某个中心,例如某个公司有个很大的 task ,我把整个 task 分成N多个小份,然后我把这N多个小份分散到不同的计算实体上进行计算。例如机器学习需要巨量的计算资源,然后google之前搞了可以让用户把家用 GPU 贡献出来参与机器学习计算这类的服务,这样子计算产生需求方是一个中心,参与计算的实体是分散的。

第三类呢,就是大家现在从事的区块链领域的行业,通俗意义上称作可信平台。也就是说我算一份不能保证它的可信度,那么我算N份,通过N份达成的共识来保证它的可信度。与前两种不同,前两种是大家各自做的计算都是不一样的,而区块链中所有节点做的计算都是一样的。虽然大家都是分散的,但是干的事情是一样的,是依靠大家都干一样的事情然后比较一下是不是一样,来达成共识获得可信计算。

以上是我总结的三类去中心计算的概念。这里的问题在于,去中心计算领域和中心化计算的区别在哪?很显然,根据我刚总结的三种分类,它们分别会有不同的产品出现。

对于第一类和第二类场景,是原本计算放在中心会承担很大的代价,把计算的代价分散到外部的过程,就是去中心计算带来的优势。那么对于区块链这种应用场景呢,就是比较典型的原本中心化系统所不能完成的业务场景领域在去中心化计算中才做得到,因为中心化系统再怎么算,没办法保证参与到这个系统的所有人认同参与的过程是符合预期的,也就是所谓信任问题。

在目前看来,这种去中心计算会采用各种各样形式的虚拟机保证执行过程的一致性。我们 Patract 着重是以 Wasm 技术为主,所以在后面的讲解中,我会更倾向于以 Wasm 对去中心计算带来的好处或者特点等方面。


Q2:“技术难点:实现您的想法、项目和协议在落地过程中遇到了哪些已经解决或者还没能解决的技术挑战,请您分享一两个小故事或者协议层面设计的知识点?


Aten:我接着刚才的说,既然大家都是做区块链,所以我们只关注最后一类,也就是大家执行相同事情的去中心计算在这个领域的难点。很显然,既然希望大家执行的事情都可以被验证且达成一致,那么就要求所有执行相同的输入结果是一致的,这就是所有区块链去实现一个关于去中心计算中遇到的最大的问题所在。大家可以看到以太坊设计了 EVM(以太坊虚拟机),自己设计了一套指令集,可以最大尺度屏蔽不同节点之间计算的差异性,让大家达到一致性。

EVM 是 Gavin Wood 早期设计区块链的实验性产物,在往后其他区块链的发展中,系统要达到执行一致性问题的话,终究会设计出一种不管是叫“沙盒”还是叫虚拟机的一种概念层次,来抽象合约或者dapp计算的整个过程,让大家执行应用的计算达成一致性。所以问题回归到一个系统,如果需要应用级上的虚拟机,那么这个虚拟机应该怎么造?且这个虚拟机要保证大家执行计算是一致性的效果。

这个也技术的发展历史有关,现阶段 Wasm 是适合用于应用级虚拟机的技术。虽然 Wasm 一开始是设计给浏览器使用,但是它从浏览器脱胎出来了以后,开始逐步适合应用级虚拟机的场景。假设一个场景的目标是需要一个应用级虚拟机,那么你最终设计出来的结果,实际上和 Wasm 也没多大差别,显然大家都是在重复造轮子。这就是为什么大家可以看到越来越多的新式区块链采用 Wasm 虚拟机来执行合约的原因。

那么在区块链中使用 Wasm 的一个难点是,它一开始设计的目标并不是为了一致性,因此区块链要集成 Wasm虚拟机的时候,都要解决如何抛除 Wasm 虚拟机中不一致性的地方。程序员开发的话,很容易发现这个问题。大家可以看到以太坊 2.0 提出 eWasm 的解决方案,实际上是设计 Wasm 指令集的子集,把这个东西称为 eWasm,通过去除一些指令保证合约执行一致性问题。比如像本体链,它的方式是裁剪Wasm的编译器,如果把不一致指令在编译期去除。

还有一种技术是,直接在部署 Wasm 合约的时候检查指令,例如校验过程中如果发现了合约代码里面存在导致不一致指令集的时候,链就会认为你的合约是非法的。大家最终目标是一致的,用一个Wasm 虚拟机去运行计算,最后达成大家能够保证执行一致性的问题。只是大家会采用不同的方案去解决不同产品的问题。这里的技术难点就是,要抛除使用 Wasm 虚拟机可能会造成大家指令不一致的问题。

另外一个大问题是所有节点希望提升执行性能且保证一致性,那么很显然想到交易并发的场景。并发本身和 Wasm 虚拟机没有关系,它主要解决的是分布式系统的执行一致性的问题。但是 Wasm 的语义比 EVM 复杂得多,因此 Wasm 有多线程的提案满足异步的需求,所以会比 EVM 更容易实现区块链的异步并发。这是解决的第二个难点,需要把 Wasm 特性和分布式体系下的并发结合起来。第二点目前很多人都在探索过程中,我们 Patract 也准备在这方面做出贡献。


Q3:“对未来的展望:在细分的领域内,您眼里的去中心计算会以怎样的发展形式进行演进?


Aten:当年以太坊或者说 EVM 能做的事情实在太有限了,主要是数据建模和逻辑建模这两块东西它都是很受限,所以我们的展望当然是用 Wasm 技术,让数据建模和逻辑建模这两块能够得到极大发展,在区块链上也能写更复杂的业务逻辑。


写评论,请先登录