PlatON:高性能 Trustless 计算网络

人与人、人与物、物与物之间的关系,“涌现”般地从单向性、单线性的关系进化到多维度的复杂拓扑结构。从当下开始,直到可见的未来,数以百亿乃至万亿计的智能节点逐步加入并组成全球计算网络。“节点”们不同程度上掌握了充分甚至冗余的算力与存储,期待着与世界的链接与共识。
在农业社会,人类以“观察”获取数据;在工业社会,人类以“测量”获取数据;在信息社会,海量数据遗留在互联网上,人类以“一键记录”的方式获取数据。但数据的主权何属?隐私何归?价值何如?
节点之间正在产生难以计量的多维度的链接,多层次地定义了万事万物的价值、“链接”产生了意义,决定了某一“节点”的特定状态对其他“节点”的影响或改变,产生了新的度量衡。
这一切正在并将逐步建构真正意义上的复杂网络,呈现为高度自组织的分布式体系。这一基本事实亦将逐步解构乃至瓦解传统计算架构对于治理结构、算法、算力与数据的垄断,直至新一代的全数字化基础设施横空出世。
结构决定功能。目前几乎所有的区块链技术体系都仍局限于节点之间的“信任”与性能问题。但如果继续沿袭这样的思路,我们将仍然无法摆脱今天这个离散、孤立、无隐私保护的互联网架构,我们也将仍然无法处理各类复杂问题。
将复杂性还原为根本问题之后,全数字化世界的公共基础设施可以展开为:数据的流动性、多源异构网络的自组织与可装配的隐私保护。要实现充分的数据交换与协同计算,这一切都源于无所不在的计算。也只有依赖这一不断进化中的基础设施,我们才可以真正展望人工智能可计算的未来。
自莱布尼茨始,计算日益成为科学与哲学的基础方法论,并已经在从原子世界到比特世界中呈现出统一的威力。计算是对数据和信息的处理过程;计算是宇宙与生命存在和进化的基本方式;计算是人类认知和行为的基础范式。
PlatON 是面向未来的下一代计算架构,她的发展与完善是一次软硬件的协同进化过程。从生态治理、业务重构、网络运营到应用分发,无不涉及到计算复杂性与通讯复杂性的平衡与突破,承载了计算体系架构的新变革。
PlatON 是一次根植于基本哲学理念的践行,从技术层面展开为计算复杂性领域中各个分支的理论突破、算法进化及工程实践;从业务层面展开为全数字化世界的超级基础设施,是对各个行业传统业务治理和网络的拓扑重构;从社区生态层面将会是人类集体的科学探索与智慧融合;从网络层面 PlatON 将会逐步覆盖空天地一体,面向广域的计算节点组网,先脚踏实地,尔后仰望星空。
基于我们的信念与积累,在历经了两年之久的酝酿与反复验证之后正式推出 PlatON,我们将根据路线图逐一实现和打磨每一个细节。PlatON 是一次对于未来计算架构的展望与实践,是一次对于区块链技术和计算复杂性领域的致敬与超越,致力于为下一个世代的分布式密码经济体提供共享的、运营商级的服务,更是对人类全数字化时代公共基础设施治理服务的全面阐释,以此拥抱扑面而来的新时代。
Trustless 计算
1.Trustless 计算概述
在数字化世界,每天都会产生大量的数据,但任何单一实体永远都只能掌握数据集合的局部,而没有任意实体可以实时获取所有的全局数据。这是数字化时代面临的基本挑战——“盲人摸象”。
每个数字化世界的参与者都是“盲人”,其拥有的数据不足以反映全量数据—“大象”的特征。合作伙伴需要通过数据交换或者协同计算来共享价值、信息和资产。但是,不信任的合作伙伴倾向于使用“可信任第三方”来归集计算数据,并验证数据的有效性,可信任第三方不可避免地带来可扩展性和隐私性问题。现在方兴未艾的云计算平台就是典型的“可信任第三方”。
随着现代密码技术的发展,特别是区块链技术的发展,提出了一项新的计算范式,我们称之为 Trustless 计算,意味着无需依赖第三方就可验证计算结果的完整性。
2. Trustless 计算模型
2.1 基于共识的计算
十年前,比特币首次实现基于分布式账本的密码货币,在比特币系统中,互不信任的各参与方能安全地完成交易。以太坊继承了比特币的共识算法,并首次提出超越分布式账本的智能合约,从而实现应用程序的 Trustless 计算。然而,为了保证计算的正确性,每个计算操作都需要经过绝大多数节点的重复处理来验证计算的正确性,导致了区块链体系里效率和可信任之间的内在矛盾。虽然以太坊被称为大规模 Trustless 计算的世界计算机,但由于可扩展性差,以太坊无法满足实际的分布式商业应用。此外,缺乏隐私保护还限制了区块链用于处理私有数据,阻碍了分布式应用的进一步发展。
目前已经有几百万个中心化应用运行在云计算平台上,同样大规模 Trustless 计算也是所有去中心化应用的基础设施。有超过一百个项目致力于开发新的共识协议,为分布式应用程序开发可扩展的区块链,以便应用快速安全地运行,但这个方向被证明是极其复杂和极具挑战性的。在基于共识的计算方案中,存在以下三个主要的共同问题。
2.1.1 验证者的两难困境(The Verifier’s Dilemma)
新加坡大学的研究者在《Demystifying Incentives in the Consensus Computer》这篇文章中首次提出验证者两难的概念。由于验证者两难困境 [The Verifier’s Dilemma] 问题,复杂的计算会破坏网络的完整性,并引发恶意攻击。
区块链系统会对出块的矿工给予奖励,而验证者则没有任何收益。这对简单合约来说可以运行得非常好,因为验证者所付出的算力很有限。但是如果涉及到比较复杂的智能合约,验证者可能会花费大量的资源却没有任何奖励。结果是,许多矿工会跳过验证过程,保留他们有限的计算资源用于下一个更合适的区块,从而打开了通往严重安全漏洞的大门。
因验证者两难导致的一种典型攻击是:恶意矿工为了获得挖矿的优势,会发起一系列计算密集型交易到网络中,耗尽其他矿工的计算资源。验证者两难的另一个副作用是矿工会接受无效的交易而不去执行正规的验证流程,因而牺牲网络的完整性。
2.1.2 可扩展性的三元悖论(The Scalability Trilemma)
“三元悖论”[The Scalability Trilemma] 之于区块链可扩展性是一个巨大的挑战。其中可扩展性、去中心化以及安全性组成此三元,对于一个区块链系统,理论上不可能同时在此三个维度取得最优化,它必须以牺牲其中若干个因素去换取在另外一个领域上的提升。
比特币 (Bitcoin) 和以太坊 (Ethereum) 等区块链的设计注重去中心化和安全性。但是,这是以牺牲可扩展性为代价的,每一笔交易都要由网络中的每一个节点进行处理,这给交易吞吐量带来了根本性的限制:它不能高于单个节点的交易吞吐量。
可扩展性已被公认为是区块链的最大难题,导致区块链不能支持繁重、复杂的计算,严重制约区块链行业的发展。
2.1.3 安全性与隐私性的两难困境
链上共识也缺乏对隐私的保护,每一个节点都能够获得完整的数据备份,所有交易数据都是公开和透明的。一方面来讲,它确实保证了每笔交易的安全性。但在另一方面,它也确实对用户造成了很大的隐私性问题。由于对数据隐私的顾虑,用户不能对区块链真正开放数据,这也进一步限制了区块链上分布式应用的发展。
2.2 链下计算
鉴于链上共识既有的局限性,业界越来越倾向于达成这样的共识:链上的功能应该是“验证”而不是“计算”,因为“计算”比“验证”要慢得多。因此更合理的方案是把计算转移到链下进行,构建同时满足可扩展性、隐私性和可验证性的 Trustless 计算网络,让相互不信任的主体之间在链下而非链上进行交互计算。
现在也有一些 Trustless 计算扩容方案,如 Oasis、Truebit、Stark 等等。按照验证方式,链下 Trustless 计算可分为可信硬件、交互博弈、非交互证明,PlatON 完全基于密码算法,采用 VC 算法叠加同态加密和安全多方计算,实现可扩展的、隐私的、可验证的 Trustless 计算。
2.2.1 可信硬件(Trusted Hardware)
这类方案以可信硬件(如 Intel 的 SGX)为底层硬件,建立可信执行环境 (Trusted ExecutionEnvironment,简称 TEE),用于执行智能合约。可信硬件本身就是一个第三方,其本质上是一个存在安全边界的隔离的安全飞地,安全边界内代码和数据是解密的,这个安全边界本身就是安全隐患。有些可信硬件如 SGX 也提供远程证明协议,证明代码是运行在可信硬件上,这个证明是基于私钥签名技术。实际上,目前已经有研究者针对英特尔处理器实现了一种推测性执行攻击 [Foreshadow],宣称可以读取受 SGX 保护的内存以及提取 SGX的私有证明密钥,并且由于 SGX 的证明报告没有跟具体的 SGX 硬件关联,因此只需一台受损的 SGX 就可以侵蚀整个 SGX 生态系统。
2.2.2 交互博弈(Interactive Game)
在以太坊上,由于链上计算昂贵,复杂的程序在上面执行非常受限。Truebit 引入交互博弈协议来强制链下节点正确执行计算。解决计算任务的求解者(Solver)一旦受到挑战,必须与验证者一起进行交互验证博弈。通过几轮交互缩小到计算过程中的问题步骤,并最终以最少的计算和费用来解决链上的分歧。求解者与验证者之间的动态交互增加了 Truebit系统的不确定性并且交互机制意味着长延迟的终结。
2.2.3 非交互证明(Non-interactive Proof)
非交互的链下验证计算中,证明者无需同验证者进行信息交互,也不需要指定特定的验证者进行验证,做到公共可验证(publicly verifiable),即任何人可以本地验证计算的正确性。密码学中的可验证计算(Verifiable Computation)允许计算能力受限的客户端将函数计算外包给计算能力更为强大的一方,同时客户端可以在消耗很小资源的前提下验证计算的正确性。
SNARK 和 STARK 是目前两类 VC 最著名的实现,两者均提供零知识证明、保护证明者的隐私以及减少证明的大小和验证时间的性质,因此在某些应用中很实用。SNARK 具有非常短的证明和快速的证明验证性质,但它需要一个复杂的可信初始化过程,这是部署时最大的障碍。STARK 与 SNARK 的最大的区别在于透明性(Transparent),即不需要可信初始化过程。尽管 STARK 是一个非常令人惊艳的构造,但诸如证明生成时间、证明的大小等这些具体效率问题使得它针对实际应用时不是足够实用。
在基于 SNARK/STARK 的方案中,如果要保护数据隐私,则生成证明的过程必须由输入拥有方来执行,因为只有拥有 witness 的证明者才能生成证明。但是,SNARK/STARK 无法保证将计算委托之后输入的隐私性,因为一旦将计算委托给(可能是不可信的)另一方,这类技术只能保证执行证明过程方的隐私,而无法保证原始计算中输入的隐私。
PlatON 而是以在高效的 VC 算法之上叠加同态加密以及安全多方计算的方式,为 Trustless计算提供完备的解决方案,同时全流程保护用户数据隐私。
2.2.4 PlatON Trustless 计算模型
PlatON 实现的高效 VC 算法不需要可信的初始化过程,与之前的 VC 或 Zero-KnowledgeProof(ZKP)解决方案相比,大大减小了证据大小,并加速了证明生成和验证过程。并且PlatON 架构中,通过叠加全同态加密(FHE)和安全多方计算(MPC),实现真正的隐私计算,保证输入数据以及计算逻辑本身的隐私。与依赖第三方制造商提供的可信硬件或 TEE(例如 SGX)进行计算完整性的可信计算相比,PlatON 上的 Trustless 计算仅依赖于可证伪的密码学假设,从而在其生命周期内提供前所未有的私有数据安全性,而无需信任边界。
PlatON 计算模型独立于底层公链,不受区块链三元悖论的制约,在保证安全性、隐私性的前提下依然能获得较好的可扩展性和去中心化。PlatON 通过电路并行化的拆分,可将PlatON 的计算单元细分到电路门,并将计算单元随机分发给不同的计算节点并行计算,极大提高计算的水平扩展性和去中心化。同时,通过可验证计算,合约与计算的执行只需要进行一次,所有节点可以快速验证计算的正确性,提高单个交易的处理性能,交易吞吐量也得到相应的提升。
当将计算外包给其他节点时,传统的 zk-SNARK/STARK 技术无法解决输入隐私问题。这就是为什么我们可以使用确定性证明者/计算者过程来构建 VC,而不是使用 SNARK(zkSNARK)的完整机制。我们要强调的是,所有目前已知的 zk-SNARK 构造依赖于一些特殊的和非标准的复杂性假设,例如指数知识假设(knowledge-of-exponent assumption)的更强变体,并且它们通常很复杂且难以解释。这些新的假设是否经得起时间的考验仍是未知问题。
作为众所周知的 VC 方案,SNARK 可为任何 NP 语句生成恒定大小的证明,并具有极快的验证时间。然而,这种系统的证明者/计算者需要花费准线性时间 O(nlogn) 来生成证明。在我们的 VC 中,虽然证明稍微大一些(目标函数大小的对数,与 STARK 相比渐近复杂度一致,但具体长度更短),但它接纳更高效的计算者(线性时间内生成证明),在我们的场景中,计算者的这种较低时间复杂度是更理想的。未来,我们将探索并行化计算的可能性,并使证明生成更有效。
PlatON 技术战略
图2.1红色虚框内为 PlatON,PlatON 实现一个去中心化系统的基础设施层和一条主链。首先,PlatON 定位于给所有去中心化系统(包括区块链、分布式人工智能、科学计算等)

PlatON:高性能 Trustless 计算网络

提供基础设施(包括网络、存储、计算等)。初期目标是完全基于密码学算法构建可扩展Trustless 计算网络,从根本上解决区块链的可扩展性、隐私性和可验证性问题。
• PlatON 实现高扩展的链下可验证计算,支持繁重、复杂的计算密集型任务,同时采用可验证计算算法来实现数学可证明的计算正确性。
• PlatON 通过安全多方计算和同态加密算法实现真正的链下隐私计算,整个计算的全流程都能保证数据隐私,不存在安全边界的隐患。
• 计算可拆分到电路门的粒度,并以电路门的粒度分散到不同的计算节点,一方面可以提供更高的计算并行度,获得更高的可扩展性,另一方面也进一步将权力分散,获得更好的去中心化特性。
• PlatON 的基于电路的计算模式天然与 FPGA 的架构相匹配。通过开发基于 FPGA/ASIC 的专用计算硬件,能够极大的提高计算性能,降低功耗/成本。其次,基于底层可扩展 Trustless 计算网络,PlatON 同时也实现自己的主链。
• PlatON 以 Sharding 方式扩展多个应用链。各条链业务相互独立。
• PlatON Trustless 计算网络的去中心化的底层设计,决定了其发展将会很大程度上依赖算力提供者。PlatON 主链及应用链上的 Energon 是一种 Utility,用于算力的度量和清结算。分布式人工智能和科学计算等大型复杂的计算也能通过 PlatON 主链及应用链获取算力。
• 开发者可在 PlatON 主链及应用链上发布智能合约,并对外提供各类数据服务,Energon也用于数据服务的清结算。
PlatON 技术方案
1.PlatON 计算
1.1 可验证计算
PlatON 采用密码学中的可验证计算算法来保证链下计算的可靠性。
公共可验证计算(VC)方案允许计算资源受限的用户将对于输入为 u 的函数 F 的计算外包给计算方。然后用户可以验证返回的计算结果 F(u) 的正确性,并且只需执行比函数计算过程更少的工作。
更正式地,公共可验证计算可定义如下。

PlatON:高性能 Trustless 计算网络

PlatON:高性能 Trustless 计算网络

PlatON:高性能 Trustless 计算网络

PlatON:高性能 Trustless 计算网络

如图3.1所示,用户以合约的方式发布计算任务,合约中包含 VC 算法的所用到的必要的参数、电路拆分的方式以及其他相应的经济激励。元智能合约的剩余部分为具体的计算任务或者应用。
链上的元智能合约通过计算通道扩展到链下。通过编译器将元智能合约中的计算/应用部分编译成电路,然后在将电路按要求拆分成多个子电路,分发给多个计算节点,计算节点执行子电路,已达到并行计算的效果。为了保证计算节点计算的正确性,其在计算的同时,需要按照 VC 算法生成相应的证明。在提交计算结果后,对 VC 算法生成的证明进行密码学计算,以检查计算输出的正确性。由于 VC 的特性,验证所花费的时间和成本必须远低于原始计算,再加上 VC 研究的最新进展显著地降低了计算节点的开销,链下 VC 总体上比基于链上的计算共识更具可扩展性且消耗更少资源。
PlatON 通过合约计算化,将计算/智能合约编译为电路。对于过于复杂的计算,以电路的形式分拆成多个子任务,再结合计算合约化,通过激励机制吸引网络中的闲置算力来进行子任务的计算。通过可验证计算技术,以极小的算力代价验证异构算力提供的子任务运
算结果。可验证计算连接“合约计算化”与“计算合约化”,最终真正实现利用全球异构算力进行并行计算。
与传统的区块链技术不同,PlatON 中每个节点无需重复运行智能合约来验证交易。利用可验证计算以及电路化的智能合约,节点只需在极短的时间验证交易的合法性,即验证新的状态是否由旧的状态通过智能合约运算而来。
1.2 隐私计算
PlatON 通过安全多方计算和同态加密算法实现真正的隐私计算,实现对计算代码和数据的隐私保护。与其他基于 TEE/SGX 的方案不同,PlatON 全流程保证安全,不存在任何安全边界。
1.2.1 安全多方计算

PlatON:高性能 Trustless 计算网络

这里 H 是一个加密散列函数,并且当 g 作为散列函数的输入时,表示为一个门序列字符串。
在对电路中的所有门进行加密之后,生成器将所有加密密文和与其输入比特串相关的

PlatON:高性能 Trustless 计算网络

PlatON:高性能 Trustless 计算网络

如图3.2所示,用户以智能合约的形式广播计算任务,其中一部分合约中包含 MPC 算法的必要参数和涉及到的经济激励,另一部分包含具体的应用或者计算任务。通过计算通道将计算扩展到链下。首先通过编译器将计算/应用部分编译成电路,分发给同时执行 MPC协议的数据提供方,因此保证了数据留在本地,并且只有(加密的)结果上链。
1.2.2 同态加密
同态加密是一种允许在密文上进行计算的加密方式。除了传统加密方案的原始组件之外,还有另一种计算算法,它将目标函数 F 和加密数据作为输入。同态加密会生成一个加密的结果,当解密此结果时,获得的消息就像是在加密数据的明文上执行 F。支持密文上的任意计算的密码系统称为全同态加密(FHE)。正式地说,同态加密包括以下算法:
PlatON:高性能 Trustless 计算网络

PlatON:高性能 Trustless 计算网络

在 PlatON 中,同样提供单数据源应用的隐私保护。利用同态加密,元智能合约中的控制层和计算通道的经济数据,可达到链下真正的隐私计算。

PlatON:高性能 Trustless 计算网络

图3.3描述了 PlatON 中的同态加密流程。用户将两部分的信息写进智能合约,第一部分包含 HE 控制参数和激励机制,另一部分描述计算任务。智能合约中的信息一旦通过计算通道转移到链下,立即会被编译成电路,并和由数据提供者通过 FHE 加密后的数据一起以子电路的形式分发给多个计算节点或者单个计算节点执行。VC 协议必须在加密结果上链之前执行以确保计算正确性。
1.3 并行计算
PlatON 中,智能合约被编译成布尔电路(Boolean Circuit),布尔电路是由各种不同的门(Gate)构成的“复杂有向无环图”,可分解为细粒度的计算任务,并通过 PlatON 网络将计算任务分发到多个计算节点并行计算。
为保证计算的可靠性,避免因节点掉线或超时导致计算失败,同一个子任务会同时分发给多个计算节点,保留一定的计算冗余度。
2. PlatON 中的电路
电路是由各种不同的门(Gate)通过输入输出线构成的“复杂有向无环网络”。由逻辑门(比如:与、或、非、异或等)构成的电路称为布尔电路(Boolean Circuit);由算术门(比如加法、乘法等)构成的电路称为算术电路(Arithmetic Circuit)。
任意形式的计算都可由电路表示,电路以有限种类的门构成各类复杂的计算形态。电路因为其基本组成部分的简易性,是在密码学中被广泛使用的计算模型。
PlatON 通过电路来水平地连接各类算法和硬件。电路作为安全多方计算、零知识证明、可验证计算、全同态加密共同使用的通用计算模型,以其超强的普适性串联各类算法。电路表示的算法也天然适合专用硬件的实现。
电路是 PlatON 度量“计算”的基础。构成电路的基本单位为门,不同种类门的资源消耗不同,整个计算的度量可表示为电路中所有门的消耗的度量总和。电路为计算的度量和定价提供了理论基础。
3. 专用计算硬件
PlatON 中,智能合约的计算逻辑被编译成布尔电路进行计算,整个计算回归到与、非、异或等处理。而布尔电路的操作,天然与 FPGA 的架构相匹配,通过将智能合约转换成 FPGA的布尔电路并通过 FPGA 来执行这些逻辑单元,能够极大地提高运算效率和降低功耗/成本。
PlatON 将在适当的阶段推出基于 FPGA/ASIC 的专用计算硬件,会极大提升整个区块链平台的交易性能,真正实践下一代计算架构当中的硬件部分。
4. PlatON 主链
4.1 共识与计算解耦
如图3.4所示,PlatON 将交易执行跟区块链共识解耦,在链下构建可扩展 Trustless 计算网络。一方面将区块链权力进一步分散去中心化实现更高的安全性,另一方面这两个功能可独立升级扩容,获得更好的扩展性。

PlatON:高性能 Trustless 计算网络

PlatON 中的智能合约包含 IO 逻辑和计算逻辑,IO 逻辑负责读写链上数据,计算逻辑被编译成布尔电路(Boolean Circuit),并分拆为多个并行计算任务,分发到链下的计算节点进行计算。
PlatON 通过随机方式选择匹配的计算节点进行计算,为保证计算的可靠性,同一个子任务会同时分发给多个计算节点,保留一定的计算冗余度。
4.2 计算通道
要成为计算节点需要在链上担保一定的数字资产,担保的资产会在计算被计算通道验证正确时返还,欺诈计算发生时担保资产会被扣除。
计算通道是一个系统智能合约,可认为是计算的状态机,负责维护计算的状态,同时也是一个计算法庭,基于可验证计算算法验证计算的正确性,对正确的计算进行清结算和奖励,并对欺诈计算进行惩罚。
4.3 多链架构
PlatON 以 Sharding 方式扩展多个应用链,各链业务上相互独立,逻辑上相互平行。多个应用链上的交易并行打包,应用链的区块头在主链上达成共识。