StarkNet 性能路线图

news2024/9/21 9:00:05

目录

前言

区块限制:Validity Rollups vs L1

为什么 L1 吞吐量有限?

为什么相同的障碍不影响validity rollups?

Sequencer 并行化

Cairo-VM 的新 Rust 实现

Rust 对 sequencer重新实现

Provers呢?

Summary

参考


前言

StarkNet将一年前在主网推出,对StarkNet的构建主要集中在功能层面。现在,将注意力转移到网络性能改善上,目标是通过一些列的功能改进来改善StarkNet的使用体验。

区块限制:Validity Rollups vs L1

提高区块链可扩展性和 TPS 的一种潜在方法是解除区块限制(在gas/size方面),同时保持区块时间不变。这将需要区块生产者(L1 上的validators,L2 上的sequencers)付出更多努力,因此需要更有效地实施这些组件。为此,现在将重点转移到 StarkNet sequencer optimizations上,以下部分中是更详细的描述。

这里自然会出现一个问题。为什么 sequencer 优化仅限于validity rollups,也就是说,为什么我们不能在 L1 上实现相同的改进并完全避免validity rollups的复杂性?在下一节中,将会说明两者之间存在根本区别,可以广泛在L2 进行的优化并不能在L1进行。

为什么 L1 吞吐量有限?

不幸的是,解除对 L1 的区块限制会遇到一个重大陷阱。通过提高链的增长率,我们也增加了全节点的需求,他们试图跟上最新的状态。由于 L1 全节点必须重新执行所有历史记录,块大小的大幅增加(就gas而言)会给它们带来巨大压力,再次导致较弱的机器退出系统并保留运行全节点的能力仅限于足够大的实体。结果,用户将无法自己验证状态并无信任地参与网络。

这让我们明白 L1 吞吐量应该受到限制,以维护一个真正去中心化和安全的系统。

为什么相同的障碍不影响validity rollups?

只有从全节点的角度考虑,我们才能看到有效性汇总所提供的真正力量。 L1 全节点需要重新执行整个历史以确保当前状态的正确性。 StarkNet 节点只需要验证 STARK 证明,而这种验证所占用的计算资源量呈指数级下降。特别是,从头开始同步不一定涉及执行;一个节点可能会从其对等节点接收到当前状态的转储,并且只能通过 STARK 证明来验证该状态是否有效。这使我们能够在不增加全节点要求的情况下增加网络的吞吐量。

因此,我们得出结论,L2 sequencer受到整个优化范围的影响,这在 L1 上是不可能的。

Sequencer 并行化

那么“事务并行化”是什么意思呢?老实说,并行执行一个交易块是不可能的,因为不同的交易可能是相互依赖的。这在以下示例中进行了说明。考虑一个包含来自同一用户的三笔交易的区块:

Tx A:将USDC换成ETH
Tx B:为 NFT 支付 ETH
Tx C:USDT换BTC

显然,Tx A 必须在 Tx B 之前发生,但 Tx C 完全独立于两者并且可以并行执行。如果每笔交易需要 1 秒来执行,那么通过引入并行化,出块时间可以从 3 秒减少到 2 秒。

问题的症结在于,事先并不知道交易的依赖关系。实际上,只有当从示例中执行Tx B 时,才能看到它依赖于Tx A 所做的更改。更正式地说,这种依赖性源于Tx B 从Tx A 写入的存储单元中读取这一事实。可以将Tx视为一个依赖图,其中存在从Tx A 到Tx B 的一条边,当且仅当 A 写入一个由 B 读取的存储单元,因此必须在 B 之前执行。下图显示了一个这种依赖图的示例:

在上面的示例中,每一列都可以并行执行,这是最佳调度(事实上,会按顺序执行事务 1-9)。 

为了克服事先不知道依赖图的事实,考虑参考 Aptos Labs 开发的 BLOCK-STM 的理念,将乐观并行化引入到 StarkNet sequencer中。在这种范式下,我们乐观地尝试并行运行事务并在发现冲突时重新执行。例如,我们可以并行执行图 1 中的Tx 1-4,之后才发现 Tx 4 依赖于 Tx1。因此,它的执行是无用的(。在这种情况下,我们将重新执行 Tx4。

值得注意的是,可以在乐观并行化之上添加许多优化。例如,与其天真地等待每次执行结束,可以在发现使它无效的依赖项时中止执行。

另一个例子是优化重新执行哪些交易的选择。假设包含图 1 中所有事务的块被送入具有五个 CPU 内核的定序器。首先,尝试并行执行交易 1-5。如果完成的顺序是Tx2,Tx3,Tx4,Tx1,最后是Tx5,那么只有在Tx4已经执行完之后,我们才会发现依赖Tx1→Tx4——说明应该重新执行。实际上,可能也想重新执行 Tx5,因为考虑到 Tx4 的新执行,它的行为可能会有所不同。然而,可以遍历由执行已经终止的交易构建的依赖图,只重新执行依赖于 Tx4 的交易,而不是仅仅重新执行现在无效的 Tx4 之后的所有交易。

Cairo-VM 的新 Rust 实现

StarkNet 中的智能合约是用 Cairo 编写的,并在 Cairo-VM 中执行,该规范出现在 Cairo 论文中。目前,sequencer正在使用 Cairo-VM 的 python 实现。为了优化 VM 实现性能,我们发起了用 Rust 重写 VM 的工作。感谢 Lambdaclass 的出色工作,他们现在是 StarkNet 生态系统中一个非常宝贵的团队,这项工作很快就会取得成果。

VM 的 Rust 实现 cairo-rs 现在可以执行原生 Cairo 代码。下一步是处理智能合约的执行和与 pythonic sequencer的集成。一旦与 cairo-rs 集成,音序器的性能有望显着提高。

Rust 对 sequencer重新实现

我们从 python 到 rust 以提高性能的转变不仅限于 Cairo VM。除了上述改进之外,我们还计划用 Rust 从头开始​​重写sequencer。除了 Rust 的内部优势之外,这还为sequencer的其他优化提供了机会。举几个例子,可以采用 cairo-rs 的好处,而无需 python-rust 通信的开销,可以完全重新设计状态的存储和访问方式(今天是基于 Patricia-Trie 结构)。

Provers呢?

在整篇文章中,我们都没有提到有效性汇总中最重要的元素——prover。可以想象,作为可以说是架构中最复杂的组件,它应该是瓶颈,因此也是优化的重点。有趣的是,现在 StarkNet 的瓶颈是更“标准”的组件。今天,特别是对于递归证明,可以将比测试网/主网上的当前流量更多的交易放入证明中。事实上,今天,StarkNet 区块与 StarkEx 交易一起得到证明,后者有时会产生数十万 NFT 铸造。

Summary

并行化、Rust 等——为即将到来的 StarkNet 版本中改进的 TPS 做好准备。

参考

https://starkware.medium.com/starknet-performance-roadmap-bb7aae14c7de

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/57918.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

详解设计模式:迭代器模式

迭代器模式(Iterator Pattern)也被称为游标模式(Cursor Pattern),是在 GoF 23 种设计模式中定义了的行为型模式。是一种最简单也最常见的设计模式。 迭代器模式 可以让用户透过特定的接口巡访容器中的每一个元素而不用…

HTML5期末大作业:美食网页主题网站设计与实现——HTML+CSS+JavaScript月饼美食食品企业网站html模板9页面

👨‍🎓静态网站的编写主要是用HTML DIVCSS JS等来完成页面的排版设计👩‍🎓,常用的网页设计软件有Dreamweaver、EditPlus、HBuilderX、VScode 、Webstorm、Animate等等,用的最多的还是DW,当然不同软件写出的…

[附源码]计算机毕业设计校园运动会管理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Linux基本工具——vim

Linux编辑器vim什么是vimvim的三种常用模式vim的基本操作命令模式插入模式底行模式搭配vim环境sudo怎么才能让普通用户使用什么是vim vim是linux下一款功能强大,多模式的编辑器。 现阶段有13种模式。 这就是进入vim的方式。 vim的三种常用模式 命令模式 我们第一…

CentOS7 编译安装最新的Linux Kernel 6.0 rc3

哪个男孩不想手动编译一份自己的内核呢?安装编译环境 CentOS7安装必要的包 yum groupinstall "Development Tools" -y && yum install openssl-devel -y && yum install rpm-build redhat-rpm-config asciidoc hmaccalc perl-ExtUtils-…

Java核心技术卷Ⅰ-第四章对象和类

重点 1.使用预定义类 2.方法参数 3.对象构造 4.包 5.类设计技巧 1.使用预定义类 一个源文件只能有一个公共类,可以有任意数目的非公共类可以使用通配符调用Java编译器:javac Test*.java使用var声明局部变量就不用担心0、0L和0.0之间的区别,因…

找出链表中间结点的三种解法

初阶链表刷题注意!!!学习的是解题的思维! 找出链表的中间结点(链接在末尾) 解题思路 数组解法 由于链表不能通过下标访问对应的结点,所以我们将所有的结点存储在数组中,这样就可以通…

测试开发怎么学?

随着互联网行业的高速发展,快速高质量的产品版本迭代成为企业始终立于不败之地的迫切需求,而在短期迭代的快节奏中.传统测试工作面对更大压力,无法持续提供高效率高质量的人力支撑,所以越来越多的企业需要技术更为全面的测试开发工程师。 测试开发本质上属于测试,区…

【数据结构】二叉树链式结构的实现

👑作者主页:进击的安度因 🏠学习社区:进击的安度因(个人社区) 📖专栏链接:数据结构 文章目录一、二叉树的链式存储二、二叉树链式结构的实现结构设计手动构建二叉树前序遍历中序遍历…

游戏思考26:游戏服务器压力测试文档(最近在忙这个,这个会更新频繁,12/03未完待续)

文章目录一、压力测试关注点二、计算最耗时的加载操作1)从数据库读取数据,对加载的类型进一步划分各种类型,计算最耗时操作2)查看CPU随着在线人数的变化所占百分比3)查看内存变化4)备注一、压力测试关注点 …

【C语言字符串】一道题检验你的字符串学习情况

作者:匿名者Unit 目录 一.字符串引言1.字符串基础二.洛谷P5734详解1.字符串相关库函数(1) strcpy函数 (2) strcat函数 (3)strstr函数 2.题目讲解一.字符串引言 1.字符串基础 字符串通常以\0作为…

008. 子集

1.题目链接: 78. 子集 2.解题思路: 2.1.题目要求: 给一个元素各不相同的数组 nums,返回各种可能的子集(子集不能重复) 比如: 输入:nums [1,2,3] 输出:[[],[1],[2],[…

做了8年前端,感谢那些优秀的后端,陪伴我工作,教会我成长

☆ 前段时间由于一时的头脑发热,写了一篇《做了8年前端,细说那些曾经让你浴霸不能的后端》的博客,虽然每个细节也都属实吧,但始终是一些负能量的东西,建议大家不要去看了,今年互联网情况已经这样了&#xf…

安卓APP源码和设计报告——体育馆预约系统

项目名称:体育馆体育场预约系统专业:班级:学号:姓名: 目 录 一、项目功能介绍3 二、项目运行环境3 1、开发环境3 2、运行环境3 3、是否需要联网3 三、项目配置文件及工程结构4 1、工程配置文件4 2、工程结构目…

磨金石教育摄影技能干货分享|上海随手拍——叶落满街,秋意未尽

步入十二月以来,气温也随之骤降,这时候才明显感到初冬已至。冬天的寒风就是最好的脱叶剂,走在街道上,抬眼望去两旁的树木多数已经稀疏。只有残留的绿意还在迎着微微的寒风摇动。 我最喜欢的是秋天,因为秋天的草木最有色…

基于keras与tensorflow手工实现ResNet50网络

前言 在文章 基于tensorflow的ResNet50V2网络识别动物,我们使用了keras已经提供的神经网络,完成了图像分类的。这个时候,小明同学就问了,那么我怎么自己去写一个神经网络来进行训练呢? 本文就基于tensorflow&#xff…

Redis原理篇——五种基本数据类型

一、Redis底层数据结构 1. SDS 获取字符串长度耗时: 由于Redis底层是C语言编写的,C语言中没有字符串这个概念,本质上都是字符数组,获取字符串长度就是遍历数组获取长度(遍历到 \0结束标识结束 )时间复杂度…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java高校毕业生信息采集系统05hj2

大四计算机专业的同学们即将面临大学4年的最后一次考验--毕业设计。通过完成毕业设计来对过去4年的大学学习生活做一个总结,也是检验我们学习成果的一种方式,毕业设计作品也是我们将来面试找工作的一个敲门砖。 选题前先看看自己掌握哪些技术点、擅长哪…

数据库常用的数据类型和约束条件

文章目录一. 数据库常用的数据类型1. 数字类型1.1 整数类型:INT(m)和BIGINT(m)1.2 浮点类型:DOUBLE(m,n)2. 字符类型2.1 定长字符:CHAR(n)2.2 变长字符:VARCHAR(n)2.3 变长字符:TEXT(n)3. 日期类型3.1 语法格式:3.2 注意事项二. 约束条件1.主键约束(PRIMARY KEY)1.1 注意事项1.…

[附源码]Python计算机毕业设计Django美发店会员管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…