首页 >>  正文

c++的有效标识符

来源:baiyundou.net   日期:2024-09-22

=nil; 是一个zkRollup,通过zkSharding安全地将以太坊扩展到60,000+ TPS,从而使web3开发人员能够构建可扩展、安全且可组合的应用程序

TL;DR

•=nil; 是一个分片的zkRollup——一个新的L2概念,通过跨分片的协议级并行交易执行来动态和安全扩展以太坊。

•配备zkSharding,=nil; 提供水平扩展,而不影响单一执行层的优势,即统一的流动性和经济安全性。

•=nil; 通过透明和可验证的以太坊数据访问,为应用程序提供与以太坊的完全可组合性。

•=nil; 引入了使用zkLLVM编译的Type-1 zkEVM。

•通过=nil的公开市场竞争保证快速证明生成,Proof Market-一个无需许可的证明生成市场。

zkSharding简介

如今,第2层解决方案在可扩展性和状态碎片之间权衡。我们引入了第二层(L2)设计=nil;,它在不影响统一执行环境的优势的情况下推动了以太坊可扩展性的极限。该解决方案结合了动态分片机制和对以太坊数据的可验证访问,并由零知识技术保护。关键要素包括:

•zkRollup 与Sharding:=nil; 的核心,是一种可证明的分片协议,在不影响安全性或效率的情况下实现水平可扩展性。这种方法解决了当前垂直扩展(L3、L4等)的一些限制,即数据和流动性碎片化。

•直接访问以太坊数据:从L2应用程序调用以太坊原始数据的能力允许我们重用已经部署的应用程序。从L2直接访问L1数据确保了一个更加统一和无缝的环境。

通过zkSharding =nil; 单片和模块化设计的优势包括:

1.可扩展性

没有可扩展性限制,因为执行是并行的。吞吐量估计约为每秒60k ERC-20传输,大约有400个节点。

通过证明市场的竞争性证明生成提供了最快的l1最终性和最便宜的证明生成成本。

2.统一执行环境

统一的执行环境保证没有安全/流动性碎片,因为每个分片都是整个集群的一部分。

减少从以太坊迁移流动性的需求=nil; 通过强制每个验证器维护完整的以太坊状态,作为部署的一部分,允许应用程序从=nil的zkEVM访问数据,为应用程序提供对其数据的透明访问。

3.安全

状态转换由zkEVM保护,通过zkLLVM编译。它提供了可审计的安全性(例如约束安全性),因为zkEVM电路是用高级语言从生产使用的EVM实现编译的,而不是手工编写的,因此代码很容易检查,。

从第一天开始就去中心化,这要归功于由=nil;实现的去中心化证明生成,证明市场。

4.功能性

一个Type-1 zkEVM,完全EVM字节码等效的zkEVM通过zkLLVM编译。

为对时间、内存和算法复杂性有高要求的应用程序量身定制的环境,通过提高单分片一致性和引入强制的每分片应用程序协同定位来减少延迟。例子包括去中心化交易所、证明市场、去中心化排序器/构建器、共享状态应用程序(又名自治世界等)。

动态可组合扩展

在较低的层次上,=nil; 状态被划分为主分片和几个辅助分片。主分片的作用是同步和整合来自辅助分片的数据。它使用以太坊作为其数据可用层和状态转换证明的验证器,类似于典型的zkRollups操作。

辅助分片作为“工作者”,执行用户交易。这些分片通过跨分片消息传递协议保持统一的流动性和数据,消除了它们之间的任何碎片。

每个分片都由一个验证者委员会监督。这些验证器在分片之间进行周期性的旋转。此外,对分片状态的更新使用zkEVM验证到主分片。

为了说明从用户发起到在以太坊上确认的交易流程,请考虑以下步骤:

1.用户签署交易(tx)并将其分发到网络。

2.用户钱包所在的分片S中的验证器将tx放入内存池中。

3.然后这些验证器创建一个新的区块B(1/S)

4.B的哈希值(1/S)记录在块B(1/M)内的主分片上。

5.B(1/S)的状态转移证明由区块B(2/M)中的主分片生成并验证。

6.B(2/M)的状态转换证明被发送到以太坊进行验证,并与确保数据可用性的必要数据相结合。

7.一旦这个过程完成,tx就会得到以太坊的确认。

这个大纲假设用户的交易没有激活跨分片消息传递协议。然而,在这种情况下,交易流保持不变,不同之处在于用户的交易可以触发在其他分片上创建新交易。

由于所有帐户都分布在多个分片中,这看起来可能类似于应用程序特定的rollup方法中发现的数据碎片问题。然而,关键的区别在于如何处理跨分片通信:它直接集成到整个协议中,而不是由单独的外部桥管理。

为了保证每个辅助分片的安全性,其验证者委员会有义务证明其状态转换到主分片,以确保在较小的验证者组内没有发生欺诈。除了分片维护之外,每个分片验证器委员会还有其他任务。验证器负责跟踪特定类型的事件,即“近分片”内的跨分片消息。近分片是根据分片标识符中的汉明距离确定的。

zkEVM 通过 zkLLVM:Type-1 安全、可审计且高性能 zkEVM

=nil; zkEVM是使用zkLLVM编译的Type-1 zkEVM。为了理解更传统的zkEVM和=nil的zkEVM之间的区别,我们需要讨论与zkEVM基础的电路定义过程相关的限制。zkEVM电路是一个关键部分,负责状态转换证明被认为是正确的,通常用一些自定义的zkDSL或简单的库来定义。这种电路定义方式带来了以下问题:

•安全性:由于电路的大小和EVM逻辑的手动复制而引起的问题。

•可审计性:由于所使用的zkDSL的复杂性和非明确性,限制了可审计性和有限的可检查性。

•可升级性:由于手动约束定义需求而导致的维护和可升级性复杂性。如果EVM发生任何变化-大多数zkEVM电路将需要从头开始重新完成和重新审计。

•兼容性:由于zkEVM和实际EVM行为的差异,实际字节码兼容(又名Type-1) zkEVM电路实现的复杂性常常会给应用程序带来限制。

=nil; zkEVM通过以下方式有效地解决了所有这些挑战:

•安全:应该从实际生产运行的以太坊节点中使用的相同高级代码自动生成电路,以确保不存在算法差异。

•可审计的:电路应该用高级编程语言(又名c++或Rust)表示,这种语言应该以普通开发人员易于阅读的方式编写。

•可升级:电路的定义方式应使 EVM 内的任何更改都应易于翻译/编译为 zkEVM 电路,证明/定义完全相同的行为。此类升级不需要完全重新编译或重新审核。

•字节码兼容(又名Type-1):高级语言的电路编译带来了完整的字节码和EVM行为兼容性,大大缩短了EVM应用程序的上市时间和实现这种兼容性所需的开发时间/工作量。

通过zkLLVM编译的zkEVM在设计上是安全的,利用evmone来确保与以太坊生产使用的EVM完全一致。zkLLVM (c++或Rust)自动编译到电路中,这意味着从电路定义过程中消除了人为错误。

此外,因为=nil; zkEVM是通过zkLLVM编译的,它自然比手动定义的电路更灵活(因此,面向未来),因为它易于调整并且电路生成是自动的。它也更具可审计性,这意味着它的安全性不会以添加到以太坊的最新EIP为代价。

zkRollup具有以太坊的安全性和数据可用性

由于主分片和辅助分片的专用任务不同——辅助分片专注于交易处理,而主分片专注于数据同步——它们有不同的数据可用性(DA)方法,这有助于在紧急情况下恢复状态数据。这意味着:

•主分片采用以太坊作为其DA。

•辅助分片可以选择使用以太坊,也可以选择使用不同的DA。

这种安排是通过在开始时启动两种分片来建立的:那些具有单独的外部数据处理解决方案的分片和那些没有的分片。在随后的阶段中,只能合并相同DA类别的分片。这意味着在创建帐户期间,必须将每个帐户映射到特定的DA类别。

此外,该框架可以扩展以包含其他类型的DA。

透明的以太坊数据访问

我们的主要目标之一是优化应用程序的可组合性并防止流动性碎片化,因此,如果没有对以太坊状态的无信任访问,zkSharding方法自然是不完整的。这意味着=nil;通过数据提供者模块提供完整的可组合性和与以太坊的透明集成。

数据提供者独立于分片的数据存储进行操作,将其信息与外部数据库同步,并将以太坊最后监控的数据库状态的指纹(由以太坊的块哈希表示)注入到分片的块中。该数据库的最新状态来自确认模块接收验证,该模块使用带有以太坊Casper FFG共识证明的zkBridge。

接下来是什么:

=nil; 和zkSharding是产品=nil的巅峰之作。基金会在过去的四年中不断发展。它的目标是成为第一个可组合、可扩展和通用的以太坊L2 zkRollup解决方案。我们很高兴能在接下来的几个月里分享更多的实现细节。一定要","gnid":"912b1abe33c0a5c84","img_data":[{"flag":2,"img":[{"desc":"","height":865,"title":"","url":"https://p0.ssl.img.360kuai.com/t013a302d4a8671376f.jpg","width":865},{"desc":"","height":"632","title":"","url":"https://p0.ssl.img.360kuai.com/t01385ee546e918cb4e.jpg","width":"865"},{"desc":"","height":"865","title":"","url":"https://p0.ssl.img.360kuai.com/t01f020d03e0aacefe1.jpg","width":"865"},{"desc":"","height":865,"title":"","url":"https://p0.ssl.img.360kuai.com/t01405635735f349b9e.jpg","width":865},{"desc":"","height":"865","title":"","url":"https://p0.ssl.img.360kuai.com/t010e3b876558ee81d3.jpg","width":"865"}]}],"original":0,"pat":"art_src_3,fts0,sts0","powerby":"pika","pub_time":1699500000000,"pure":"","rawurl":"http://zm.news.so.com/5c9e08ac72f25e42b0a081b7c422cb16","redirect":0,"rptid":"804549c45199c9e3","rss_ext":[],"s":"t","src":"火星财经","tag":[{"clk":"ktechnology_1:以太坊","k":"以太坊","u":""}],"title":"=nil; ——以太坊 zkSharding 介绍

骆秀宗1611c语言有哪些系统标识符 -
储供码18868802095 ______ 一、C语言的关键字共有32个,根据关键字的作用,可分其为数据类型关键字、控制语句关键字、存储类型关键字和其它关键字四类. 1 数据类型关键字(12个): (1) char :声明字符型变量或函数 (2) double :声明双精度变量或函数 (...

骆秀宗1611下列符号中,能用作C++标识符的是 -
储供码18868802095 ______ 都不能用作标识符. A char是系统关键字 B 5d 数字不能作为标识符的开头 C a!b 标识符不能包含! D 5D 这个和B一样的原因 以上回答希望能帮助到你.谢谢!

骆秀宗1611C++语言标识符.. -
储供码18868802095 ______ a 错 void 是 C++关键字 b 对 c 错 -abc 不符合 以字母或下划线开头的,由字母,数字和下划线组成 d 错 2a 不符合 以字母或下划线开头的,由字母,数字和下划线组成

骆秀宗1611C++ 以下字符串可以作为标识符的是 -
储供码18868802095 ______ _ Define cout // 注意cout已经在std命名空间中声明过了

骆秀宗1611下列符号中可用作C++标识符的是 . A. - radius B. foo~bar C. else D. 3
储供码18868802095 ______ A. _radius (1)第一个字符必须是字母(不分大小写)或下划线(_); (2)后跟字母(不分大小写)、下划线(_)或数字组成; (3)标识符中的大小写字母有区别.如,变量sum,sum,sum代表三个不同的变量; (4)不能与c编译系统已经预定义的、具有特殊用途的保留标识符(即关键字)同名.比如,不能将标识符命名为float,auto,break,case,this,try,for,while,int,char,short, unsigned,等等

骆秀宗1611C++新手问题:什么是标识符? -
储供码18868802095 ______ 所谓标识符是指常量、 变量、语句标号以及用户自定义函数的名称.C语言规定标识符只能由字母、数字、 下划线组成,并且只能由字母、下划线开头.一些标识符被赋于特定的含义就叫做保留字(或称为关键字). 由ANSI标准定义的保留字...

(编辑:自媒体)
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图 @ 白云都 2024