Cairo 或将取代 Solidity 的原因_ARK:STA

在这篇文章中,我将论证Cairo可以影响即将到来的可证明计算的浪潮,就像Solidity支持可组合计算一样。Cairo是StarkNet的原生编程语言,StarkNet是一种用于扩展以太坊的L2网络。

当我们把智能合约仅仅看作是金融的延伸(DeFi)或网络的泛化(web3)时,这是令人遗憾的。智能合约网络实际上是可组合计算的平台。

以太坊嵌入了一些允许其计算机程序互操作的标准:

透明字节码(没有隐藏的Web API)

标准化API结构(称为ABI)

保证正常运行时间(每个应用都托管在多台机器上,每个应用程序拒绝服务是不经济的)

零知识证明技术开发公司StarkWare推出第一个公开版本Cairo 1.0:1月6日消息,零知识证明技术开发公司 StarkWare 宣布推出第一个公开版本的 Cairo 1.0,Cairo 于 2020 年作为图灵完备的编程语言首次推出,用于高效编写 STARK 可证明的程序。Cairo 1.0 中最重要的变化之一是语法,新版本的 Cairo 允许编写更安全的代码。Cairo 1.0 还引入了 Sierra,这是一种新的中间表示,可确保每次 Cairo 运行都可以得到证明。StarkWare 表示,预计在接下来的几周内,提供与旧版本相同的 Cairo 1.0 功能,对 StarkNet 合约的支持将在即将到来的 StarkNet Alpha 版本中加入。[2023/1/6 10:24:18]

内置支付基础设施(不依赖于Stripe等第三方)

Starkware开源Cairo编程语言的最新版本:金色财经报道,区块链开发公司 Starkware 开源了其编程语言 Cairo 的新版本,Cairo 支持 Starkware 的Layer 2网络 StarkNet 和 StarkEx。根据一份声明,这是该语言自创建以来的第一个主要版本,新版本将很快被引入 StarkNet。[2022/11/25 8:06:15]

完整的部署和交易沿袭

不同应用程序层(治理、所有权等)之间无摩擦的合约

这些限制可能会降低开发人员的生产力,但也会以前所未有的规模激励有状态应用程序的组合和重用。

Immutable X发布与其兼容的Cairo智能合约以帮助在StarkNet上的项目开发:金色财经消息,NFT二层扩展解决方案Immutable X宣布将发布一组Cairo智能合约,以帮助在StarkNet上进行NFT相关项目的开发。目前发布的合约包括ERC-20、ERC-721、版税,其中ERC-721合约在Open Zeppelin推出的合约基础上进行了扩展;版税则选择了EIP2981标准。Immutable X表示,未来将构建更多的StarkNet合约并添加至该集合中,包括即将推出的Layer1与Layer2之间的ERC-721代币跨链桥。[2022/5/26 3:42:35]

Solidity被创建为一种与上述标准兼容的简单语言。它提供了:

声音 | Caitlin Long:比特币并不一定要被视为法币才能获得成功:怀俄明州区块链联盟联合创始人Caitlin Long近期在播客节目中表示,比特币并不一定要被特别视为合法货币才能获得成功。Long称,根据美国宪法,政府有权告知每个人在其境内哪些货币是必须接受的。就在不久前,怀俄明州还明确了数字资产的法律地位,主张虚拟货币必须得到与货币同等的待遇。Long就此表示,这并不是说它(比特币)是法币,但出于某些目的,它在法律上与法币是被同等对待的。Long还评论了与比特币和其他加密货币崛起相关的“恐惧”心理。尽管近期比特币受欢迎程度大大提升,但她表示,央行不一定要担心包括稳定币在内的加密货币。(AMBCrypto)[2020/2/24]

基本状态机功能(状态、访问、更新等)

无法访问不可组合的原语(例如,外部数据馈送)

合约对合约交互的接口(组合方式)

用于交易费用的内置gas计量

对底层虚拟机(程序集)的高性能访问

虽然现有的编程语言可以适应可组合计算,但它们需要扩展(为组合添加接口)和限制(消除所有形式的非确定性和外部访问)的组合,这很难合并。此外,在优化上其是与优化 Solidity 代码(gas 成本)完全不同的性能指标(执行足迹),这些语言的编译器就是这么被定义的。

StarkNet的可扩展性工具ZK-Rollups启用了一种被称为可证明计算的新范式。在这个范例中,我们保留了可组合计算的所有优点,但也允许程序证明它们已被执行,而无需重新运行。

这个简单想法允许我们从一个需要重新运行交易的网络(以太坊)转移到一个更好的网络(StarkNet),在这个网络中,通过验证交易已以特定结果执行的证明来验证交易,这是一个更经济的操作。

因为这个范式是如此不同,它也需要一个不同的计算模型,有效地将程序转换成数值理论方程,而不是在机器上执行它们。

我们可以用什么编程语言来实现呢?

考虑Solidity是很自然的。首先,它已经支持组合(调用其他智能合约),并被广泛采用。第二,在Solidity上部署了一系列应用程序,可以很容易地迁移到其他Layer 2解决方案(包括支持可证明计算的zkSync)。第三,Solidity有一个维护良好的多层编译器,可以适应不同的用例。

但是Solidity并不是可证明计算的固有特性。任何接受惯用的Solidity代码并将其转换为证明的编译器都会遇到以下问题:

依赖于低效的数据结构,如`uint256

语言层面的可变性

缺乏高效的内置插件

没有底层访问

技术细节:在实践中,有两种不同的技术来证明通用程序(SNARK和STARK)。SNARK青睐的指令集更适合作为Solidity等语言的编译目标。STARK提供了更多的可伸展性,同时具有不太自然的指令集。当我们说“Solidity 不是可证明计算的有效语言时,我们实际上是指两件事:1) Solidity 可以有效地编码为 SNARK,但它们不像 STARK 那样可扩展 2)Solidity不是编译到STARK的最佳语言,因为在 Solidity 中常见的构造对于 STARK 来说是“昂贵的”。

Cairo有上述所有解决方案:

一个称为felt的底层字段整数数据类型是可用的(与uint256类型一起)

Cairo语言习惯上只编写一次(类似于函数式编程语言)

正在为常见计算开发越来越多的内置非确定性提示

Cairo提供了对底层原语的完全底层访问

Cairo编程更具挑战性,生态系统工具仍在不断成熟。但扩展以太坊的全部意义在于超越现有的限制,构建更好的可组合应用。如果是这样,为什么止步于Solidity?

Source:https://medium.com/yagi-fi/provable-vs-composable-computation-or-why-cairo-will-supersede-solidity-6b00e69bfc9e

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

水星链

[0:62ms0-1:204ms