Cartesi Rollups
2020年6月,Compound发行了代币COMP,引燃了yield-farming狂潮。 大量DeFi用户涌入以太坊网络,致使网络迅速满负荷运转,交易费用飞涨。数周以来,区块链对于大多数DApp都无法使用,这又使人们更加清楚,修复可伸缩性对于以太坊生态系统的可持续性至关重要。
同时,以太坊基金会一直努力在Serenity(Eth 2.0)上提供分片,并因此将交易吞吐量提高到更高的水平。但是,由于面临严峻的技术挑战,支持智能合约的完整分片不会短时间内出现。
由于Layer-1的可扩展性改进无法与以太坊的用户群以及DApp生态系统的蓬勃发展相匹配,因此Vitalik一直热衷于提出rollups方案,因为开发人员需要克服巨额的gas费用并提高性能。
Cartesi的核心技术依靠其虚拟机来模拟RISC-V ISA,即Cartesi Machine。它被设计为在Linux环境中离线运行计算密集型分散逻辑。Cartesi机器是独立的且可复制的。它们也是透明的,这意味着它们通过简洁的Merkle Tree证明将其状态暴露给外部检查。
Cartesi团队目前正在不断进行系统调整,并通过相反的争议解决来支持“乐观汇总”。我们的实现直接导致了智能合约可扩展性的紧迫问题,特别是通过运行链上无法运行的链外大量计算。人们可以期待百万倍的计算扩展,而不会损失以太坊的强大安全保证。
就其本身而言,这将足够有用。但是其他一些因素使Cartesi的系统引人注目。随着Cartesi汇总,智能合约可以在Cartesi机器上脱链运行。由于这些支持Linux,开发人员可以选择免除Solidity和EVM的限制,以使用众多主流软件套件,工具链,标准库,文件系统和其他OS资源创建智能合约。在确定性的Linux上运行智能合约从未像现在这样。合约的完整操作系统。
我们认为,这既对分布式应用程序的增量改进。相反,我们将其视为迈向整个区块链生态系统成熟的必要步骤。的表达能力,可以创建从简单到相当复杂的智能合约。这也意味着为从未开发过区块链程序的开发人员打开大门,因为他们将创建带有台式机或Web的编码经验的去中心化应用程序。
关于optimistic rollups的简单介绍
Rollups是一类最初建议用于扩展以太坊Layer-2的解决方案。交易在智能合约中Rollups并廉价地分批提交,而它们所涉及的所有处理均在链下进行。此类交易的结果随后在链上结算,而区块链强大的安全性几乎没有损失。
有两类Rollups。一种是,我们有基于有效性证明(ZK-Rollups)。另一种是,那些基于欺诈证明(optimistic rollups)。在本文中,我们描述了一种具有交互式争议解决功能的optimistic rollups的变体。特别是,我们将深入探讨Cartesi rollups及其支持直接在Linux环境上运行的复杂智能合约的功能。
让我们从optimistic rollups的设计概述开始。在运行时,rollups应用程序的用户最初将其加密资产存储在Layer-1(以下称为门户)的特定智能合约上,从而为他们提供初始状态和Layer-2的资金。完成后,他们可以开始向layer-2合约发送消息,从而相应地提高其状态。
有时,Layer-2状态必须在Layer-1上反映并最终确定,这通常意味着在所涉及的用户之间重新分配令牌。为此,验证者节点之一将状态声明放在链上,所有相关方都保持optimistic,希望claim是正确的。提出claim后,质询期开始,为其他任何验证节点留出足够的时间来验证它,并在出现分歧时在Layer-1上发送欺诈证明。如果没有其他验证者提出挑战,则区块链将采用最终的原始claim。
但是,如果提交了包含欺诈证明的交易,则区块链将对争议进行裁决,并确保正确的要求在链上明确claim。
Cartesi正在实施具有交互式争议解决功能optimistic rollups的变体。在这里,区块链在申领者和挑战者节点之间调解验证,直到最终揭露其中之一是欺骗性的。验证算法本身不在本文讨论范围之内,但是您可以在Cartesi的技术论文中了解该算法。
带有交互式争议的optimistic rollups可极大地提高可伸缩性,因为一组特定于应用程序的验证器可以执行繁重的计算任务。这与区块链上发生的事情相反。在区块链上,每个节点都需要模拟所有现有应用程序的状态转换。实际上,将智能合约移动到optimistic rollups上的Layer-2类似于具有特定于应用程序的第2层分片。
请注意,某些rollups实现通常会支持多应用程序分片。就Cartesi而言,在Layer-2上运行的每个智能合约都以其自身的分片进行操作,这不仅是出于性能方面的考虑,还是出于安全方面的考虑。我们将在不久的将来发布有关安全性的专门文章。
另外,无论有无互动争议,optimistic rollups的可伸缩性都是以Layer-1延迟最终确定为代价的。这种最终确定性的延迟带来了资金效率问题,因为用户需要在区块链上处理较长的结算时间,当发生争议时,结算时间可能持续数周。
请注意,Layer-1结算延迟不会损害用户与Layer-2系统进行交互时的体验。原因是诚实的验证节点尽管在Layer-1上有延迟,但可以继续推进合约状态,因为他们知道系统将在给定的时间下最终确定链上正确的状态转换。
这种设计可以极大地提高智能合约的可伸缩性。只要至少有一个验证节点是诚实的并且能够面对虚假声明进行申述,我们就可以在不破坏以太坊强大安全性的情况下获得更高数量级的计算吞吐量。
这具有深远的意义。Cartesi从Solidity的独特性和EVM的限制发布了以太坊智能合约,为DApp开发人员带来了主流生产力。
此时,重新定义术语“Layer-2合约”很有用。鉴于在EVM中,智能合约具有明确定义和广泛理解的含义,此处的“Layer-2合约”是指处理输入并创建输出的任何程序。该程序甚至可以实现为一个或多个进程,这些进程涉及在Cartesi机器上运行的多个服务器和服务。即使使用软件线程和涉及浮点的高度复杂的逻辑,由于Cartesi Machines是确定的,也可以确保程序的可重复性。
明确区分之后,让我们回到协议的工作原理。用户首先将消息发送到Layer-2合约,方法是将消息直接推到区块链上或使用聚合器服务。在任何情况下,消息都具有确定的顺序,并且在链上仍然可用。
验证程序有时会检索一批此类消息,并通过输入“闪存驱动器”将其发送到Cartesi Machine。然后,Layer-2合约会读取输入的有效负载,并根据开发人员确定的语法和语义选择对其进行解析和处理。开发人员还可以采用他们首选的API标准。例如,一组开发人员可能选择直接在HTTP请求中对消息进行编码,并交由运行在Cartesi机器中的Web服务器处理。另一组可能更喜欢将消息编码为对另一台服务器的gRPC调用。当实现这些传输机制时,两组开发人员都可以访问在Linux上运行的所有支持软件。
对每条消息的处理都会推进Layer-2的状态,并且在这些状态转换时,Layer-2合约都可以将数据写入机器的输出“闪存驱动器”。当机器批量运行所有消息时,处理结束时的机器状态和相应的输出会在Merkle Tree中汇总,并将其根哈希发送到区块链。
如上所述,在Layer-2合约处理消息时的任何状态转换中,它都可以将数据写入机器的输出“闪存驱动器”。数据可能包含日志以及Layer-1字节码。
日志与客户端应用程序相关但对链上没有任何影响。相反,Layer-1字节码就是EVM字节码,客户端应用程序或某些用户需要在将来的某个时候在链上执行。在最简单的情况下,字节码可以执行简单的资产转移,但是它们也可以调用其他Layer-1智能合约,并且可以像应用程序所要求的那样复杂。通过Layer-1字节码,Layer-2状态得以反映并最终确定在链上。
这意味着验证者本身不会在区块链上释放资金。取而代之的是,用户向Layer-2合约发送请求,Layer-2合约决定是否保证撤回,如果有,则输出相应的字节码。然后,用户将自己在以太坊上的交易发送给I / O管理器,这是Cartesi Rollup的Layer-1合约,负责执行字节码。
例如,希望将ERC20令牌提取到其钱包的用户将向I / O管理器发送一个执行令牌传输的字节码。他们还将与字节码一起发送Merkle证明,证明该字节码是由链上最终确定的输出哈希表示的Merkle Tree的一部分。
请注意,尝试执行字节码的一方必须等待区块链将输出哈希视为最终结果,否则I / O管理器将拒绝执行传输。
为了更好地了解时间轴上的整个过程,我们描述了系统如何安排不同rollups阶段。
Cartesi将Layer-2合约的执行时间表划分为几个时期。在给定的时隙 N上,涉及的验证节点将从前一个时隙的开始到当前处理时隙的所有在链上排队的输入消息分批处理。
然后,节点通过Cartesi机器处理每条消息,产生一个输出哈希,该哈希总结了整个时期的状态转换。然后,验证者之一(此后称为索赔者)将代表Layer-2合约状态的哈希值放在纪元N S(N)的末尾。
质询期结束后,如果没有争议,系统将S(N)视为最终的。否则,争执将一直持续到其输出哈希表示的正确状态声明被强制执行为止。上图显示的结算期是一个挑战期,有无争议。
为了保证每个时期的最小持续时间,rollups 协议还需要一个累积时隙。为了以太坊费用成本效益,这是在链上终结处理上施加的最小延迟,以防止将频繁的声明发送到第1层。rollups开发人员可以设置累积时隙周期,具体取决于他们希望如何平衡延迟与最终性和安全性。验证节点委员会
在更新版本中,Cartesi Rollups将允许任何数量的验证器和非许可节点,更多细节将在以后的文章中发布。
在其第一个版本中,Cartesi Rollups将允许开发人员选择验证节点委员会。他们定义自己喜欢的节点运行组织,并向每个组织付费以提供服务。然后,选定的组织实例化一个验证节点,并下载一个Cartesi Machine模板,该模板具有构成Layer-2合约的所有环境,配置和软件。验证器准备好合约并上线后,他们将积极工作以确保向其用户的正确状态转换。验证委员会提供信任保证,这意味着,只要至少一位验证者是诚实和警惕的,就可以在链上最终确定正确的状态转换和资产提取。
实际上,与最初的optimistic rollups设置相比,验证者委员会具有令人兴奋的优势。首先,基于委员会的合约可以让其所有验证者尽快主动提交其申领。一旦所有节点立即提出相同的要求,它们将使其余的挑战期变得不必要,从而消除了最终确定所需的长时间延迟和资本效率问题。
在最坏的情况下,N个验证者彼此不同意的情况下,最多会有N-1个纠纷,可能需要数周的时间才能解决。但是,出于实际目的,如果选定的节点运行者关心他们的金钱和声誉,则这种情况很少(如果有)发生。
因此,在极为罕见的情况下,合约的最终确定性受到延迟。这可能归因于技术难题,例如由于脱机节点无法及时确认申领。或恶意操作,最终将在整个争议解决协议中清除,识别并处罚不诚实的节点运行程序。
无论如何,Cartesi Rollups不依赖于主观信誉系统。系统本身总是识别恶意节点。系统提供的透明性使节点运行者对任何不良行为或不良性能负责。可以从Cartesi Explorer等前端应用程序中过滤掉错误的人。因此,由于声誉或法律风险,激励验证机构不得不恶意或疏忽行事的可能性很低。
第二个积极方面涉及隐私。政府和企业可以通过Cartesi Rollups建立许可的网络,从而从世界其他地方隐藏敏感数据,这是因为Cartesi Contracts仅向Layer-1公开了他们想要的信息。这是因为Cartesi机器可以使用加密密钥,从而使它们能够读取发送到区块链的加密输入消息。从外部,除了Layer-1的副作用外,没有其他任何泄漏。假定允许验证节点,则只有授权方才能访问Layer-2合约。
现在,我们将更详细地看到验证节点的行为如何影响结算期。最有效的设置消除了optimistic rollups设计中涉及的长定性延迟。所有验证者都主动提出其主张,并且彼此同意。这很快就会发生,所有申领都可能进入Layer-1的同一块,而不会延迟最终性。
但是,一个或多个验证节点最终可能无法及时提交申领。在这种情况下,门户需要等待足够长的时间,以收集丢失的申领或终止质询期。假设一个或多个验证节点未能提出其申领,但至少所有提交的申领均匹配。挑战期结束后,门户将做出最终决定。
但是,另一种可能性是,门户在质询期间会收集一个或多个相互冲突的申领。如果我们有N个申领,最坏的情况就是,我们将有N-1个争议要串行执行。在这种情况下,诚实的申领人将赢得针对任何其他节点的验证游戏,并在链上最终确定其申领。
抵押品和节点市场
在考虑验证人委员会时,可以通过几种方式对未正确运行其节点的机构验证人进行处罚。
首先,永久记录不良行为会使他们的声誉受损。由于此信息可在整个区块链网络上公开获得,因此在某些情况下,可以使用区块链历史跟踪作为法庭证据来采取法律行动。
此外,Cartesi Contract开发人员可以定义任意的抵押金额,在雇用节点时必须将其抵押。当节点发生争执时,无论败诉的人,其门户都会抵押其抵押品。这是可用来消除不当行为的另一种机制,鼓励开发人员使用。
Cartesi正在为节点运行者创建市场。节点运行者可以在CTSI中确定费用并收取费用,以验证计算并在每个时隙产生申领。开发人员还表示除了所需的抵押押金外,他们愿意为每个验证者支付最高金额。
我们将在另一篇文章中详细介绍完整的经济管理抵押品和验证者市场。
END
https://t.me/CartesiCN
https://twitter.com/cartesiproject
https://github.com/cartesi
https://weibo.com/u/7364709043
Cartesi允许分布式应用程序在Linux环境中运行。复杂的处理可以在链外执行,不受区块链计算能力的限制和相应费用的影响,且不会影响去中心化。Cartesi已获得SNZ,SOSV,Artesian等著名投资机构和基金的资助,并且最近与Binance结束了公开发售活动。团队的愿景是通过合并开发人员已经使用的工具,使DApp的开发变得容易,可扩展且具有成本效益。