Maxlion Profile picture
Dec 4 41 tweets 10 min read
费时三周,作为一个小菜鸟🤡,终于完成了对 StarkNet 整体技术的系统盘点🧐。

StarkNet 有很多有趣的东西🤯(😍)

在这篇文章/长推中,我将从 ZKR 设计、EVM 兼容、STARK 证明系统、Cairo 语言和虚拟机等方面论述 StarkNet 🚀技术优越性。

#STARK #StarkNet #Cairo

mirror.xyz/zhunianpan.eth…
一、ZKR 设计
在以太坊上,每提交一笔交易都需要所有节点检查、验证并执行交易来验证计算正确性,并将计算后的状态变化在网络中广播。
而 StarkNet 仅在链下执行计算并生成一个 ZK 证明,然后在链上验证该证明的正确性,最后把多个 L2 交易打包为以太坊上的一笔交易。

因此,StarkNet 上发生的交易成本可以被同一打包批次的其他交易所均摊,就像拼车(🚌拼多多)一样,交易越多,成本越低。
除此之外,相比以太坊让每个节点完整执行交易的方法,StarkNet 为交易生成 ZK 证明的方法可以大大提高网络运行速度、减少链上通信量、增加网络吞吐,因此 StarkNet 相比以太坊具有更高 TPS 和更低 Gas。
工作流程方面的优越性结论可能需要等待其他 ZKR/Validity Rollup 工作流基本确定后,通过对比得出。

之前写过一篇 StarkNet 工作原理的文章~
mirror.xyz/zhunianpan.eth…
在账户抽象方面,不同于以太坊 EOA+CA 的双账户设计,StarkNet 实现了原生账户抽象,只有一种账户设计。

这对合约钱包和低成本、安全、易开发的链上可编程打开了大门,这可以推动 ECDSA 以外的签名验证方式、多签管理、社会恢复、交易限制、隐私保护、gas 代付、应用聚合、自动收益等各个方面的发展。
下图为 StarkNet 交易流程图(仍然借鉴了4337的设计思路):

图片来源:community.starknet.io/t/starknet-acc…
而且 StarkNet 已经实现了“手机硬钱包”。
1.以太坊仅支持 Secp 椭圆曲线上的签名方案 ECDSA

2.许多手机都不支持以太坊椭圆曲线

3.而 StarkNet 原生账户抽象,支持多种椭圆曲线,签名验证高度可编程,因此基于 StarkNet/Cairo 的手机钱包完全可以变成硬钱包。
StarkNet 上原子化 NFT 协议 Briq 的开发者 @sylvechv 在博客中也写到,在实现了原生账户抽象的 StarkNet 上,可以授权一个 mobile_key 签署一定数额的交易,和/或只为某些合同,和/或只为某些功能(例如没有transfer()而只有play())。

用户甚至可以在一定时间后撤销它。

hackmd.io/@s0lness/BJUb1…
Cairo 已经有一个nistp256(用于智能手机Secure Enlave)的实现。

github.com/spartucus/nist…
二、🏕EVM兼容

StarkNet 网络本身不兼容 EVM,而设计了另外一套 ZK 友好的 Cairo VM。

StarkNet 没有针对以太坊操作码做 ZK 电路,而是自己做了一套更加 ZK 友好的汇编语言、AIR(代数中间表示) 以及高级语言 Cairo。
不兼容 EVM 的弊端在于无法继承以太坊代码和工具链,因此,以太坊应用生态没有大规模移植到 StarkNet 的基础。

且 Cairo 语言对开发者存在一定学习门槛,Cairo 语言和 STARK 证明系统相关工具链和库也处于起步阶段。
但独立设计 VM 的好处在于,StarkNet 的 Cairo VM 更 ZK 友好,电路执行效率更高(代码更少),在未来将表现为 TPS 更高,Gas 更低。

抛弃 EVM 设计后还能实现许多以太坊不能完成的应用创新,如原生账户抽象的合约钱包。
StarkNet 属于 Vitalik 定义的 type 4 级别——语言兼容的 zkEVM(StarkNet由于定制了虚拟机严格来讲属于zkVM)。
尽管 StarkNet 本身不兼容 EVM,但 StarkNet 仍然可以通过其他方式兼容以太坊。

1. Warp 是一个 Solidity-Cairo 转译器。它可以把 Solidity 代码转译为 Cairo,但转译后的 Cairo 程序往往需要修改并增添 Cairo 特性(如调用内置函数,优化内存等)才能最大化执行效率。
github.com/NethermindEth/…
2、Kakarot 是一个用 Cairo 语言编写的 zkEVM。

是一个字节码等效 EVM 的 zkEVM,目前处于测试阶段。以太坊应用可以通过部署到 Kakarot (L3)的方式移植到 StarkNet。

此前以太坊联创 Vitalik 和 StarkWare 联创 Eli Ben-Sasson 参与了 Kakarot 举办的 Twitter Space。
三、🧬STARK证明系统
目前有许多不同的证明系统(生成和验证证明) ,如 Halo、PLONK、Groth16、Plonky2 等,它们都属于 SNARK 证明系统。

而不同的 ZK 项目几乎都会使用不同的证明系统,StarkNet 使用的 STARK 某种意义上属于一种特别的 SNARK 。
SNARK 全称 Succinct Non -interactive Argument of Knowledge(零知识简洁非交互论证),STARK 全称 Scalable Transparent Argument of Knowledge(零知识可扩展透明知识论证)。

SATRK 作为一种创新的 SNARK,S 的含义从简洁(Succinct)变为可扩展(Scalable),T 代表透明,取代了非交互属性。
STARK 相比 SNARK 有更多创新。它不需要和 SNARK 一样依赖“可信设置”。

它还带有更简单的密码学假设,避免了对椭圆曲线、配对和指数知识假设的需要,纯粹依赖哈希和信息论,因此抗量子攻击。

总体来讲 STARK 比 SNARK 更安全。
在扩展性方面,STARK 的扩展性更强。证明生成速度具备线性扩展性,验证时间和证明大小具备对数扩展性。

但缺点在于生成的证明尺寸更大。但随着证明规模增加,验证成本将会边际递减——这意味证明越大,总成本越低。
research.thetie.io/zero-knowledge…
3.2.1证明时间线性扩展:证明人花费的时间与哈希调用的数量呈近似线性关系。

在 80 比特的安全级,STARK 每 12288 次哈希调用的证明者执行时间为 1 秒,得 12288次/S;而每 98304 次哈希调用需要 10 秒,得 9830次/S,因此,我们可以知道 STARK 的证明时间和哈希调用基本呈近似线性关系。如下图所示
3.2.2验证和证明大小对数扩展:验证时间-证明大小与哈希调用呈对数关系

哈希调用从 3072 加到 49152,验证时间从 40 ms 加到 60 ms。当哈希调用从 49152 增加到 786432,验证时间仅从 60 ms 加到 80 ms。 证明大小同理。

因此,哈希调用次数越多,平均验证时间越短,平均证明大小也会更小。
3.2.3递归证明

任何通用的、简洁的知识系统的证明/论证(特别是STARKs) 都可以用来递增地验证计算。

这意味着一个计算可以产生一个证明,以证明该计算的前一个实例的正确性,这个概念被非正式地称为 "递归证明组合"或者"递归STARKs"。
换句话说,一个递归 STARK 证明者可为一个陈述生成一个证明,即系统的状态可以从 a 移到 a+1。

因为证明者已经验证了一个证实 a 的计算完整性的(递归)证明,并且忠实地执行了状态 a 的计算,达到了新的状态 a+1。

简而言之,你可以理解该过程将 a 和 a+1 两个证明合并为了一个证明。如下图所示:
递归证明也为 L3 的发展奠定技术基础。

类似于 StarkNet 作为 L2 在 L1(以太坊)上工作的方式——StarkNet 将计算证明交给以太坊上用 Solidity 编写的验证者合约验证证明。

L3 可以在 StarkNet 上部署一个用 Cairo 编写的验证者合约以验证 L3 中的递归证明。
StarkWare 在 2020 年 8 月 31 日发布的文章中提到,能够将 30 万笔交易在 6 分 3 秒内聚合为一个证明。

medium.com/starkware/hell…
StarkWare 联合创始人 Eli Ben-Sasson 2022 年 8 月 8 日在韩国首尔会议表示,其新的递归有效性证明理论上可以将以太坊区块链上多达 6000 万笔交易汇总为以太坊上的一笔交易。
cointelegraph.com/news/60-millio…
四、🐺Cairo虚拟机和语言

Cairo VM 是一个是一个采用冯诺依曼架构的 CPU VM,其编程语言也叫 Cairo。整个 Cairo VM 以及 Cairo 语言基于 STARK 设计。

Cairo 是 CPU Algebraic Intermediate Representation (代数中间表达)的首字母缩写。
Cairo 语言的编程体验偏汇编(C和Rust,经常会用到指针🎃),它具有以下特性:内存、函数调用、递归和分支条件。它还使用证明者一侧的“提示”(hints)来创建快捷方式并启用某些计算。
Cairo VM 和 Cairo 让我有一种 Unix 和 C 语言的感觉🤪。

(AMM代码片段)

cairo-lang.org/docs/hello_cai…
接下来将介绍 Cairo 的一些强大特性。
4.2启动加载:从哈希加载程序

程序可以将另一个程序字节码写入内存,并让 Program Counter 指向该内存段,然后运行该程序。

一个从哈希启动加载的用例是,一个被称为启动加载器的程序计算并输出另一个程序的字节码,然后像之前一样开始执行它。
这样验证者只需要知道程序的哈希而非完整字节码。
这有两个好处:

可扩展性,验证时间和程序大小呈现对数关系,正如 STARK 部分提到的。

隐私性,验证者可以验证程序是否正确执行而无需知道计算。
4.3在同一个证明中运行不同程序
正如前文,启动加载器可做扩展。如执行好几个程序。输出每一个程序的字节码hash和程序输出。而程序可以描述完全不同的计算。

因为proof的大小和验证时间都和计算的大小呈亚线性关系,因此可以使用一个加载器执行多个程序,然后生成一个证明来确保所有程序的有效性。
验证的成本在这些程序之间被摊销了。随着更多程序加入批处理,最终的摊销验证成本将越来越接近于0。参考 STARK 部分的“验证和证明大小对数扩展”。
4.6其他重要优势
内置函数

开发者直接调用内置函数可以减少计算开销,而不需要代码转换。相当于 ASIC 芯片写好的电路或者数学中给定的、验证过的公式。
图灵完备

支持计算(或者验证,因为Cairo VM本身不执行计算,仅验证计算正确性,计算在链下)一切可计算的问题。

因此理论上能够复刻其他虚拟机,比如前面提到的用 Cairo 编写的 zkEVM,理论上也可以复刻其他在未来可能开源的 zkEVM/zkVM 如 Scroll、Hermerz、zkSync、Miden、Zero 等。
CPU 架构

更加灵活,可以通过软件编程的方式无限接近 AISC 的性能(所以Cairo会做CPU?)。

提示:关于 CPU 架构、内存、Cairo 语法等方面的更多特性我还在挖掘中(C语言没跑了)……
I completed a systematic 🇨🇳Chinese introduction to StarkNet technology.

Including StarkNet's🚀 ZKR design, account abstraction, EVM compatibility, STARK proof system, Cairo virtual machine and language.

@odin_free @0xNurstar @Starknet_edu @dimahledba
@GuthL @bitsplaining
@fishkiller 刘老师来康康😍

除了技术架构,
StarkNet 全链游戏,合约钱包,链上 AI 也很有意思🤓
@StarkWareLtd @Starknet_edu

I completed a systematic 🇨🇳Chinese introduction to StarkNet technology.

So we can better understand StarkNet's ZKR design, account abstraction, EVM compatibility, STARK certification system, Cairo virtual machine and language.
@henrlihenrli

I completed a systematic 🇨🇳Chinese introduction to StarkNet technology. 😁

So we can better understand StarkNet's ZKR design, account abstraction, EVM compatibility, STARK 🚀certification system, Cairo virtual machine and language.👽

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Maxlion

Maxlion Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @Real_Maxlion

Dec 1
StarkNet 背后团队 @StarkWareLtd 在 11 月 29 日官宣了 StarkNet 性能路线图。

我写了一篇文章来解读路线图中即将推进的三件事:排序器并行、Cairo VM 的 Rust 实现、排序器的 Rust 实现;并将解释 StarkNet 的性能瓶颈。

mirror.xyz/zhunianpan.eth…
1. 排序器并行
排序器在 StarkNet 中扮演一个链下执行交易的角色,类似以太坊上的矿工。

排序器引入并行交易执行的意义在于,排序器可以同时执行多笔交易,从而提高整个网络的交易处理量/TPS。 Image
StarkNet 即将引入的并行执行将借鉴 Aptos 开发的 BLOCK-STM,将乐观并行引入到排序器。

简单来讲,排序器将会乐观地假设所有交易都是可并行执行的,并将直接并行运行事务,最后会在发现冲突时再重新执行。

malkhi.com/posts/2022/04/…
Read 12 tweets
Dec 1
从没用过硬钱包的小白,第一次收到了 @CCH_YAO 送来的 @imKeyOfficial 硬钱包😍

我写了一个老实人开箱评测。

省流:外包装很轻,内包装很白;钱包比想象中要小,小巧の不像实力派(😎),闻着很香(想嗦一口😂)。

目前我的交互还不够多,累计到一定次数后会追评。

mirror.xyz/zhunianpan.eth…
非常小巧,便于藏匿,实乃携款潜逃😂/浪迹天涯😍的好宝贝。

不知道安检查不查得到。
外包装盒和内包装盒没贴紧,拿快递的时候会有摇晃声,感觉分量不是很重,和我想象中的硬钱包不是很符合。 Image
Read 5 tweets
Nov 28
🎓介绍下 StarkNet 工作原理🚀

在这条长推中我将向你解释 StarkNet 为什么比以太坊更有效率?它如何工作?有哪些组成部分?工作流是如何的?

强烈推荐 StarkNet 开发者 @barretodavid 的文章。

david-barreto.com/starknets-arch…
首先来看看以太坊是如何工作的。

以太坊验证交易正确性需要所有节点检查、验证并执行交易来验证计算正确性,并将计算后的状态变化在网络中广播。 Image
而 StarkNet 仅在链下执行计算并生成一个证明,然后在链上验证该证明的正确性,最后把多个 L2 交易打包为以太坊上的一笔交易。

因此,StarkNet 可以大大提高网络运行速度、减少链上通信量、增加网络吞吐,因此相比以太坊具有更高 TPS 和更低 Gas。
Read 10 tweets
Nov 5
耗时三周,终于完成了对 EIP-4337 的系统学习(为了专心完成它还从Odaily跑路了hh)。

本文盘点了以太坊账户、账户抽象、合约钱包、EIP-4337 工作原理和优缺点。

它作为一个账户抽象方案,可以让钱包免助记词、代付gas,验证和执行逻辑也高度定制化,有巨大的想象空间。

mirror.xyz/zhunianpan.eth…
符合 4337 标准的钱包理论上可以实现如 ECDSA 以外的签名验证方式、多签管理、社会恢复、聚合签名、交易限制、隐私保护、gas 优化、gas 代付、异币 gas、应用聚合、自动收益等多种功能(很牛吧),而且这一切都是去中心的。
长远来看,不仅有利于降低 Web3 进入门槛,也可以让链上行为更加可编程。
这个是 EIP-4337 的工作流程。
EIP-4337 没有改变以太坊共识,而是引入了一个伪事务对象,称为 UserOperation。用户将 UserOperation 对象发送到单独的内存池中。Bundler 将这些对象打包成一个交易,对一个叫做 Entry Point 的合约进行 handleOps 调用,然后该交易就被纳入一个区块中。
Read 9 tweets
Nov 3
Review the first EIP that implements account abstraction more completely - EIP-2938.

Account abstraction is to allow EOA (understood as metamask) and Contract Account (understood as a dapp) to do things that only the other could do before.

eips.ethereum.org/EIPS/eip-2938
Account abstraction can drive these innovations: multi-signature management, social recovery, aggregated signatures, transaction restrictions, privacy protection, gas optimization, gas payment, automatic revenue, application aggregation, Eth Lightning Network, wallet chain.
And EIP-2938 is a relatively complete account abstraction proposal for the first consensus layer.
It allows CA to directly pay gas and actively issue coins by introducing a new AA transaction type (AA_TX_TYPE) and 2 new opcodes NONCE (0x48) PAYGAS (0x49). Image
Read 6 tweets
Nov 3
复习第一个较完整地实现了账户抽象的 EIP——EIP-2938。

首先回顾账户抽象,账户抽象就是让 EOA(理解为metamask) 和 Contract Account(理解为dapp)可以做只有对方可以做的事,要么让 EOA 可以实现 CA 功能,要么反过来。

eips.ethereum.org/EIPS/eip-2938
账户抽象可以推动以下领域的发展:多签管理、社会恢复、聚合签名、交易限制、隐私保护、gas 优化、gas 代付、异币 gas、自动收益、应用聚合、以太坊闪电网络、钱包链。

而 EIP-2938 是第一个共识层的较为完整的账户抽象提案。 Image
它通过引入一个新的 AA 交易类型(A new EIP-2718 transaction with type AA_TX_TYPE )和 2 个新的操作码NONCE (0x48) PAYGAS (0x49),以及一系列保证安全的限制条件来让 CA 可以直接支付 Gas 和主动发币。直接让 CA 可以做以前只有 EOA 能做的事。
Read 5 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(