在这篇文章中,我将论证Cairo可以影响即将到来的可证明计算的浪潮,就像Solidity支持可组合计算一样。Cairo是StarkNet的原生编程语言,StarkNet是一种用于扩展以太坊的L2网络。
当我们把智能合约仅仅看作是金融的延伸(DeFi)或网络的泛化(web3)时,这是令人遗憾的。智能合约网络实际上是可组合计算的平台。
以太坊嵌入了一些允许其计算机程序互操作的标准:
透明字节码
标准化API结构
保证正常运行时间
内置支付基础设施
Cairo公布路线图:新合约语法将与Starknet alpha v0.12.0共同推出:6月29日消息,编程语言Cairo公布其路线图,为了社区便利性,创建公共板以描述即将推出的一些新功能;很快将推出新的合约语法,与Starknet alpha v0.12.0一起发布,需要进行一些代码更改,很大程度上丰富了智能合约语言;通过Cairo1.1.0在Starknet主网上的推出以及即将到来的v2版本,已经达到了语言成熟度的一个重要里程碑。文档、书籍和Starknet Discord等资源足够帮助用户开始并从Cairo 0迁移。
随着新合约语法的发布,Cairo现在足够稳定和丰富,足以支持复杂的应用程序,并移植现有的Cairo 0逻辑。此外,Starknet的向后兼容性保证确保即使语言发生重大变化,用户也将有足够的时间(至少六个月)来完成合约的开发或审核和部署。[2023/6/30 22:09:25]
完整的部署和交易沿袭
Open Zeppelin发布智能合约库Cairov0.2.0,改进了可扩展性模式:7月6日消息,区块链安全公司Open Zeppelin发布为StarkNet编写的智能合约库Cairov0.2.0,该版本利用Cairo命名空间迭代了可扩展性模式;实施了与以太坊兼容账户合约的第一个版本;附带了安全访问和权限管理的基本构建块Access Control库;增加免受重入攻击的实用程序Reentrancy Guard等。[2022/7/6 1:54:22]
不同应用程序层之间无摩擦的合约
这些限制可能会降低开发人员的生产力,但也会以前所未有的规模激励有状态应用程序的组合和重用。
Caitlin Long:美元贬值将使加密货币获得采用:金色财经报道,定于明年在美国推出的受监管加密银行Avanti的首席执行官Caitlin Long表示,美元将遭遇“惊人比例”的短暂挤压,加密货币是更好的选择,因为加密货币是真实资产。此外,Long称,在使用稳定币时,要注意其中很多实际是借据,USDT等据称由美元支撑。每天的加密资产交易中,超过三分之一来自借据支持的稳定币。还有25%的BTC和ETH由第三方托管,这些也都是借据。Long建议人们检查他们的资产负债表,看看哪些资产可能是别人的借据。Long称,我们“不知道”一些加密货币交易所是否有偿付能力,因为不受监管的交易所不受第三方审计。如果一些资产负债表较弱的参与者退出这个行业,让那些提供有价值服务、帮助人们采用加密技术的实力强大的资产负债表参与者脱颖而出,她会感到高兴。[2020/4/30]
Solidity是可组合计算的第一个主流语言
为迎接2018世界杯 OKEx交易送1亿个CAI:OKEx将于香港时间6月13日11:00对用户账户中持有的OKB数量进行快照,持有100个#OKB# 及以上,且在6月6日11:00至6月13日11:00期间参与CAI交易的用户,根据OKB持有量占比,瓜分1亿个CAI。[2018/6/6]
Solidity被创建为一种与上述标准兼容的简单语言。它提供了:
基本状态机功能(状态、访问、更新等)
无法访问不可组合的原语(例如,外部数据馈送)
合约对合约交互的接口
用于交易费用的内置gas计量
对底层虚拟机的高性能访问
虽然现有的编程语言可以适应可组合计算,但它们需要扩展和限制的组合,这很难合并。此外,在优化上其是与优化Solidity代码完全不同的性能指标,这些语言的编译器就是这么被定义的。
引入可证明的计算
StarkNet的可扩展性工具ZK-Rollups启用了一种被称为可证明计算的新范式。在这个范例中,我们保留了可组合计算的所有优点,但也允许程序证明它们已被执行,而无需重新运行。
这个简单想法允许我们从一个需要重新运行交易的网络(以太坊)转移到一个更好的网络(StarkNet),在这个网络中,通过验证交易已以特定结果执行的证明来验证交易,这是一个更经济的操作。
因为这个范式是如此不同,它也需要一个不同的计算模型,有效地将程序转换成数值理论方程,而不是在机器上执行它们。
我们可以用什么编程语言来实现呢?
Solidityvs.Cairo
考虑Solidity是很自然的。首先,它已经支持组合(调用其他智能合约),并被广泛采用。第二,在Solidity上部署了一系列应用程序,可以很容易地迁移到其他Layer2解决方案(包括支持可证明计算的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
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。