Cartesi(CTSI)去中心化应用的通用操作系统

2020-09-13 19:14:21 65
Cartesi是用于开发和部署可扩展DApps(分布式应用)的第2层平台(“位于底层链和DApp之间,通过高性能的链下计算,将Layer 1从执行合约和计算的海量工作中......

Cartesi是用于开发和部署可扩展DApps(分布式应用)的第2层平台(“位于底层链和DApp之间,通过高性能的链下计算,将Layer 1从执行合约和计算的海量工作中解放出来,专心处理token流转和计算结果存储,从而提升整体可扩展性“)。 Cartesi DApps由链上及链下两部分模块组成。链下模块在Cartesi节点内运行,代表了每个DApp用户的权益。 Cartesi节点为DApp开发者提供可重现的Cartesi Machine,可以运行大规模可信计算。这些可信计算很容易通过强大的原语集成到智能合约中,这些原语提供了更大的灵活度和复杂逻辑处理能力。更准确地说,任何因Cartesi Machine内部计算产生有争议性的结果,均可在区块链上以相当低的成本进行仲裁(“Gas费用奖善罚恶”)。Cartesi节点还允许DApp开发者运行本地代码。本地计算更可利用节点的全部处理能力,其中包括任何可用的显卡算力。无论是由节点本地执行还是在Cartesi Machines系统内执行,链下模块均会在完整的“Linux”操作系统下运行(“该操作系统提供复杂计算所需的完整生态系统”)。Cartesi使DApp开发者能够使用他们已经熟悉的所有编程语言,工具,库,软件和服务。通过将其DApps的大多数复杂逻辑移动到便捷的链下模块,开发者可以摆脱区块链所固有的限制和特性。 通过这种方式,Cartesi允许开发者能够选择最佳的运行实例环境来托管其DApp的每个部分。

简介

公共区块链是网络可以通过其在共享状态下维持分散共识的机制。 通常,除了其他数据之外,该状态还包含支付系统。在由此产生的经济中,参与者所持有的股份是他们的动机,使国家广泛地向其他国家开放,并拒绝无效的交易。在这种良性循环中,支付系统建立在分散的共识之上,而分散共识的作用只取决于支付系统本身所创造的激励机制。然后,支付系统和共识都可以用于其他目的。

随着区块链技术的新应用的设想,对底层基础设施的需求不断增加。目前,广泛采用区块链技术的两大障碍是其可扩展性差,缺乏稳固的开发环境。 Cartesi对区块链生态系统的主要贡献是克服这两个问题。

可扩展性 目前部署的共识机制基于完全冗余[Nakamoto 2009; Wood 2018]。 它们要求每个交易都永久存储,并由每个参与者进行验证。这种低效率是交易率增长,涉及的数据量以及交易内计算强度的关键限制因素。 高交易成本和增加的延迟已成为许多创新应用的障碍,否则这些应用将受益于智能合约为区块链带来的灵活性。

尝试提高区块链可扩展性可分为第1层和第2层解决方案。第1层可扩展性解决方案改变了底层的区块链基础设施本身。 示例包括区块大小,分片和委托证明(DPoS)的优化。 因为它们在基础设施层面运行,所以这些解决方案受到保持全球共识的要求的负担。国家的某些方面,例如支付系统,对所有各方都至关重要,因此需要全球共识。否则,对于区块链调解的大多数交互,将访问和验证责任限制在可能受影响的少数方面是完全安全的。然后,区块链可用于提供最终结果,并在极少数情况下保证当地达成共识。 换句话说,全球共识是一种宝贵的资源,应该节俭的加以利用。 认识到这一事实,诸如等离子,侧链,TrueBit或状态通道的第2层可扩展性解决方案尽可能多地移动数据和计算。 在第2节中深入讨论了第1层和第2层可扩展性解决方案。

计算环境 无论在链上或是在链下,每当出现影响交易结果的计算执行时,都必须由所有参与验证的角色进行验证。可重现计算模型必须是自包含的和确定的,换句话说,必须完全规定并商定计算的完整状态和对该状态的整个顺序进行修改。但可悲的是,现存真正的计算体系结构并没有考虑到这些条件,因此不可重现。区块链平台通过在处理智能合约时使用自定义虚拟机(VMs)来解决此问题,这些VM是可重现的,但只存在于一些特定情况下。一方面,它们为对智能合约有用的功能,提供了本地支持(例如,交流计数,回滚,关联存储器,认证,密码等)。另一方面,它们缺乏通用体系结构中的有价值的特性(例如,浮点运算,虚拟内存,中断等)。

在过去几十年里,全球软件行业的变革,可归结于两个关键因素。 首先是现代硬件平台处理大量数据的速度呈指数级增长。第二个同样重要的是软件开发环境不断增强的表现力。 实际上,通用计算并非计算孤岛。 相反,它更依赖于全球软件开发者的通力协作,参与共建模块相互间的组合。这些模块和服务依赖于底层操作系统(内存管理,进程管理,文件系统,网络等)托管的标准库工具。它可理解为一个“将所有内容联系在一起的操作系统”。这些设施不能通过典型区块链为智能合约开发者提供的独立编程语言和编译器提供。可重现性和可扩展性问题使得链上计算环境非常严格,所以,为了提高效率并扩大区块链开发的范围,我们需要一个支持现代操作系统的可重现计算模型。

本文介绍了Cartesi用于开发和部署可扩展DApps(分布式应用)的第2层平台。 Cartesi DApps是一种混合模式,包括链上和链下两个部分。

链下模块在Cartesi节点网络(第6节)中运行,每个节点代表DApp用户的权益。链下部分可再细分为两个模块。 本地计算直接在主机硬件中运行。尽管本地计算可以访问节点的全部处理能力(包括GPU),但计算不可重现,至少不是pri-ori。可重现计算运行在Cartesi Machine中,受Cartesi 节点控制。这是一种完整的,运行在确定性的RISC-V平台上的自包含的Linux系统(self-contained deterministic linux system),节点通过一些确定的主机接口和Cartesi Machine进行交互。

在区块链中,Cartesi DAppDApp开发者可以指定链下计算采用可重现方式,Cartesi 节点会自动根据所指定方式执行链下计算。DApp开发者可以请求节点提交结果,验证交易和辩论其他节点提交的结果。从链的角度来说,处理有争议的计算只需占用微不足道的资源。 当争议发生,争议处理成本只是存储和时间的对数复杂度,即O(logN),离线部分的Cartesi 节点计算复杂度,也只是线性开销O(n),且常数不超过2。

把计算移到链下会获得除了伸缩性之外的另外的好处。 Cartesi Machine让开发者使用其所熟练的开发语言,工具,库,软件和服务变得可能了。此外,由于Cartesi就其本质来说,计算的组织形式和底层区块链类型并无关连,那么通过把现有的复杂的合约逻辑隔离到链下进行可重现计算,开发者甚至可以使其DApp能够做到跨链交互。

本文件的重点是Cartesi的核心。 它包括Cartesi的完整规范,用于控制它的主机接口,用于指定复杂的链下计算的区块链接口,以及用于执行和验证这些计算的Cartesi 节点接口。在此核心功能之上构建的高级工具,接口和各种用例将在之后的文档[Teixeira和Nehab 2019a]中描述。Cartesi SDK [Teixeira和Nehab 2019b]将提供关于所有接口的详细文档,以及Cartesi节点和Cartesi的开发环境。

Cartesi Machine规格

Cartesi Machine是一个独立的,确定性的计算模型,可以托管现代操作系统。发生在操作系统内部有充分的理由的真实世界的计算。 开发者接受过使用工具链的培训,这些工具链可以在任何给定的工作中以尽可能高的抽象级别运行。 这些工具链将它们与不相关的硬件细节隔离开来,甚至与给定操作系统的细节隔离开来。 因此,发明一种特殊的新架构需要移植工具链和操作系统。 相反,Cartesi Machines基于经过验证的架构,其标准工具链和操作系统已经是可用的。