复制成功

分享至

主页 > 数字货币 >

解读Starknet智能合约模型与原生AA:特立独行的技术巨匠

2024.03.11

作者:Shew & Faust,极客web3

解读Starknet智能合约模型与原生AA:特立独行的技术巨匠

摘要

Starknet最主要的几大技术特性,包括利于ZK证明生成的Cairo语言、原生级别的AA、业务逻辑与状态存储相独立的智能合约模型。

Cairo是一种通用的ZK语言,既可以在Starknet上实现智能合约,也可以用于开发偏传统的应用,其编译流程中引入Sierra作为中间语言,使得Cairo可以频繁迭代,但又不必变更最底层的字节码,只需要把变化传导至中间语言身上;在Cairo的标准库内,还纳入了账户抽象所需要的许多基本数据结构。

Starknet智能合约将业务逻辑与状态数据分开来存储,不同于EVM链,Cairo合约部署包含“编译、声明、部署”三阶段,业务逻辑被声明在Contract class中,包含状态数据的Contract实例可以与class建立关联,并调用后者所包含的代码;

解读Starknet智能合约模型与原生AA:特立独行的技术巨匠

Starknet的上述智能合约模型利于代码复用、合约状态复用、存储分层、检测垃圾合约,也利于存储租赁制和交易并行化的实现。虽然后两者目前暂未落地,但Cairo智能合约的架构,还是为其创造了“必要条件”。

Starknet链上只有智能合约账户,没有EOA账户,从一开始就支持原生级别的AA账户抽象。其AA方案一定程度吸收了ERC-4337的思路,允许用户选择高度定制化的交易处理方案。为了防止潜在的攻击场景,Starknet做出了诸多反制措施,为AA生态做出了重要的探索。

解读Starknet智能合约模型与原生AA:特立独行的技术巨匠

继Starknet发行代币之后,STRK逐渐成为以太坊观察者眼中不可或缺的要素之一。这个向来以“特立独行”“不重视用户体验”而闻名的以太坊Layer2明星,就像一个与世无争的隐士,在EVM兼容大行其道的Layer2生态里默默的开辟自己的一亩三分地。

由于太过忽视用户,甚至公开在Discord开设“电子乞丐”频道,Starknet一度遭到撸毛党的抨击,在遭喷“不近人情”的同时,技术上的深厚造诣瞬间变得“一文不值”,似乎只有UX和造富效应才是一切。《金阁寺》中那句“不被人理解成了我唯一的自豪”,简直就是Starknet的自我写照。

但抛开这些江湖琐事,单纯从代码极客们的“技术品味”出发,作为ZK Rollup先驱之一的Starknet和StarkEx,几乎就是Cairo爱好者眼中的瑰宝,在某些全链游戏开发者心中,Starknet和Cairo简直就是web3的一切,无论是Solidity还是Move都无法与之相提并论。现如今横亘在“技术极客”和“用户”之间的最大代沟,其实更多归因于人们对Starknet的认知欠缺。

抱着对区块链技术的兴趣与探索欲,以及对Starknet的价值发现,本文作者从Starknet的智能合约模型与原生AA出发,为大家简单梳理其技术方案与机制设计,在为更多人展示Starknet技术特性的同时,也希望让人们了解这个“不被人所理解的独行侠”。

Cairo语言极简科普

下文中我们将重点讨论Starknet的智能合约模型与原生账户抽象,说明Starknet是如何实现原生AA的。读完此文,大家也可以理解为什么Starknet中不同钱包的助记词不能混用。

但在介绍原生账户抽象前,让我们先了解下Starknet独创的Cairo语言。在Cairo的发展历程中,出现了名为Cairo0的早期版本,以及后来的的现代版。Cairo的现代版本整体语法类似于Rust,实际上是一门通用的ZK语言,除了可以在Starknet上编写智能合约,也可以用于通用应用的开发。

比如我们可以用Cairo语言开发ZK身份验证系统,这段程序可以在自己搭建的服务器上运行,不必依赖于StarkNet网络。可以说,任何需要可验证计算属性的程序都可以用Cairo语言来实现。而Cairo可能是目前最利于生成ZK证明的编程语言。

解读Starknet智能合约模型与原生AA:特立独行的技术巨匠

从编译流程来看,Cairo使用了基于中间语言的编译方法,如下图所示。图中的Sierra是Cairo语言编译过程中的一道中间形态(IR),而Sierra会再被编译为更底层的二进制代码形式,名为CASM,在Starknet节点设备上直接运行。

解读Starknet智能合约模型与原生AA:特立独行的技术巨匠

引入Sierra作为中间形态,便于Cairo语言增加新特性,许多时候只要在Sierra这道中间语言上做手脚,不必直接变更底层的CASM代码,这就省去了很多麻烦事,Starknet的节点客户端就不必频繁更新。这样就可以在不变更StarkNet底层逻辑的情况下,实现Cairo语言的频繁迭代。而在Cairo的标准库内,还纳入了账户抽象所需要的许多基本数据结构。

免责声明:数字资产交易涉及重大风险,本资料不应作为投资决策依据,亦不应被解释为从事投资交易的建议。请确保充分了解所涉及的风险并谨慎投资。OKEx学院仅提供信息参考,不构成任何投资建议,用户一切投资行为与本站无关。

加⼊OKEx全球社群

和全球数字资产投资者交流讨论

扫码加入OKEx社群

相关推荐

industry-frontier