Starknet 量子跃迁:性能提升,飞的体验

原文Starknet Quantum Leap: Major Throughput Improvements are Here!
翻译及校对
「Starknet 中文社区」

Starknet 即将突破 TPS 屏障

精选速览

  • Starknet alpha V0.12.0 版本已在测试网上部署

  • Starknet 通过在 Rust 中实现排序器 (Sequencer),吞吐量显着提高了 10 倍。这是 StarkWare 和 LambdaClass 密切合作的结晶

  • PENDING(待处理)交易状态移除,用户体验更加顺畅

  • 引入新的系统调用,可以轻松检索历史区块哈希值

  • Starknet alpha V0.12.0 版本支持全新 Cairo 语法,以安全性为重心

  • 该版本网络升级将经过社区投票决议,确保社区广泛参与和投入

简介

我们很高兴地宣布 Starknet Alpha V0.12.0 版本发布。该版本是 Starknet 的重要里程碑,标志着超强性能和可扩展性方面实现重大飞跃的开始。这个版本是 Starknet 扩展以太坊之旅的又一大步,重点是解决吞吐量和延迟问题。为了应对这些挑战,我们聚焦于 Starknet 的排序器 (Sequencer),因为吞吐量为性能所限。

Starknet Alpha V0.12.0 版本的开发很大程度上是 LambdaClass 和 StarkWare 一年多富有成效且愉快的合作结晶。我们很自豪能够与 LambdaClass 团队一起构建 Starknet。

该版本作为主要版本,将由社区投票决定。我们邀请社区参与塑造 Starknet 的未来。

性能 — 吞吐量显著提升!

该版本专注于性能,特别是吞吐量的提高,显著提高十倍。吞吐量从 v0.11.0 版本的平均每秒三万 Cairo 步 (CSPS) 飙升至最新版本的 22 万 CSPS,令人大为惊叹。这一非凡的成就得益于有针对性的优化,这些优化是 Starknet 排序器实现效率的基础,正如我们之前在性能路线图中所分享的那样。 Starknet 性能提升的三个关键因素:Cairo-rs、Blockifier 和 Papyrus,它们都受益于 Rust 的强大功能。

排序器的第一个改进是集成了 Cairo-rs,这是一个由 LambdaClass 开发、用 Rust 编写的高效 Cairo 运行器。通过利用 Rust 的强大功能,Cairo-rs 增强了 Cairo 合约的执行,为用户带来了更加精简的体验。

此外,基于 Rust 的块执行逻辑 Blockifier 的引入对于提高吞吐量也起到了至关重要的作用。通过优化交易执行时间,该实施方案有效减少了等待时间并缓解了网络拥堵。本地存储解决方案 Papyrus 的加入有助于排序器本地状态的高效管理。这一增强进一步优化了系统的整体性能和响应能力。

这仅仅是第一步

此版本中的排序器优化还远远不是性能改进之路的终点。

cairo_native

Starknet 将集成 LambdaClass 的 cairo_native 编译器,这将使 Cairo 合约以更高效的方式执行。通过允许合约在 Rust 等「原生代码 」中运行,而不是在 Cairo 环境中执行,我们预计 Starknet 会获得更高的效率和性能提升。

并行化

Starknet 之前的 Python 版本排序器引入了交易并行化,性能显著提升。然而,值得注意的是,V0.12.0 版本中包含的 Rust 中的排序器初始实现尚未实现并行化交易。持续的开发工作重点是本着 block-STM 的精神,在区块内并行执行交易。借鉴 Python 实现的成功演示,这种优化将进一步提高 Starknet 的吞吐量,使其能够有效处理增加的交易量。

不再有待处理的交易

在以前的版本中,PENDING 状态表示已由排序器执行但尚未满的有效区块,仍可以添加额外交易。然而,在这个最新版本中 PENDING 状态已替换为 ACCEPTED_ON_L2,反映了交易的最终状态。这一变化简化了交易确认流程,让用户体验更流畅。

get_block_hash 系统调用

Starknet Alpha V0.12.0 版本中的另一个新增功能是引入了 get_block_hash系统调用。这个新的系统调用允许开发者在 [first_v0_12_0_block, current_block-10] 范围内检索特定 Starknet 区块的哈希值。该系统调用的签名是 fn get_block_hash(u64 block_number) -> felt252

与此场景相关的错误消息是:「区块编号超出范围。」

为了实现这一更改,操作系统将在每个区块的开头写入一个映射,该映射位于 address = 0x1 下,其中 current_block — 10 为键,以其对应的哈希值为值。

通过 get_block_hash 系统调用,开发者可以方便地检索区块哈希,这是构建和验证存储证明的重要组成部分。这些证明可以实现高效的跨链数据访问,并增强区块链数据的可信度,甚至无需依赖第三方预言机。通过此系统调用获取区块哈希值,开发者可以准确引用特定区块的状态、交易或区块头中提交的任何其他信息。

Cairo — 改进的合约语法

在此版本中,我们对智能合约语法进行了重大改进。新语法注重安全性,并为可扩展性奠定基础。在这种情况下,安全意味着对合约的面向外部的组件(接口/存储/事件)更加明确,这使开发者可以更好地了解与合约交互时会发生什么。

可扩展性将在后续版本中最终确定,允许合约使用外部库中的组件。这是任何智能合约语言的一个关键特性,并将解决 Starknet 开发社区中的一个重大问题。要详细了解语法改进动机和语法变更内容,请参阅 Cairo 路线图博客文章社区论坛文章

虽然新的编译器版本有重大变更,但您可以继续使用旧的编译器版本 (v1.1.0) ,并在接下来的 6 个月里将生成的合约部署在 Starknet 上。这体现了我们新的编译器升级协议的重大变化:随着新的编译器版本推出,由旧编译器版本编译的合约可以继续使用六个月以上,以便社区进行调整。当然,一旦在 Starknet 上声明了 Cairo 合约(不是 Cairo 0),就可以持续可供部署和交互。

下一步的计划是什么?

短期目标:0.12.1 版本

短期来看,Starknet 的重点是增强用户体验和交易可靠性。下一个版本 0.12.1 将引入另一个重大改进:将失败的交易纳入区块。到目前为止,失败的交易并未包含在区块中,因此排序器无法收取费,并增加 nonce。这给开发者带来了用户体验问题。开发者不能靠 nonce 序列,这迫使他们在发送新交易之前不断监控交易状态。这一更改还可以保护排序器,防止有人在没有付款的情况下用失败的交易向系统发送垃圾交易。本次更新旨在为用户在与 Starknet 交互时提供更流畅、更无缝的体验。

长期愿景:吞吐量、延迟和成本

展望未来,Starknet 的总体愿景是在规模和成本方面实现大幅可扩展性。路线图中下一个优先事项是大幅降低交易成本。

通过降低成本,Starknet 旨在使交易变得更加经济实惠和更具包容性,从而实现更广泛的用例,并赋能开发者和用户。对降低成本的承诺与 Starknet 的使命相一致,即为去中心化应用程序提供可扩展、灵活且经济高效的基础设施。

Starknet Alpha V0.12.0 版本投票

Starknet 治理第一阶段的重点主要是 Starknet 协议升级。

每个主要的 Starknet 版本升级都会首先部署在测试网上,为 Starknet 社区提供几天的时间来检查和测试升级版本。在此审查期间,将开放快照提案,让社区投票决定是否批准升级版本用于主网部署。

如果该提案在投票期间获得大多数 YES 票,则该提案获得通过,Starknet 主网将进行相应升级。

Starknet Alpha V0.12.0 投票现已上线!

欢迎每个人在 Starknet Snapshot 空间上注册通知服务。查看代表简介线程(Delegate Profile Thread)代表发现(Delegation discovery),从而成为代表或选择代表,并在社区论坛上讨论 Starknet alpha v0.12.0 版本提案

总结

Starknet Alpha V0.12.0 版本专注于增强性能和用户体验。新版本引入了基于 Rust 的排序器实现,吞吐量提升十倍,并降低交易延迟。其他功能包括新的编译器版本、删除待处理交易状态,并添加区块哈希系统调用。

Starknet 开发者有权编写具有影响力的解决方案。开始您的 Cairo 开发之旅,阅读 Cairo 文档,注册 Cairo Basecamp或浏览教程。想了解所有版本的更新信息?订阅我们的 Starknet 开发者 Newsletter


关于 LambdaClass

LambdaClass 是一家以工程为中心的公司,在分布式系统、编译器、机器学习和网络安全领域拥有十年的行业经验。纵观其历史,他们一直支持那些带来技术挑战并改变世界的项目,主要根据与创建者或创始人的共同目标和方法来选择项目和合作伙伴。

Subscribe to Starknet 中文
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.