主要内容:
?Cairo1.0开源啦!这仅仅是StarkNet栈开源的第一步。
?我们为读者带来了对Cairo1.0编译器的初步介绍。大家可以开始尝试使用基本的Cairo1.0代码了。
?Cairo1.0的核心与Rust非常相似。
?考虑到这是首次测试,而不是正式版本,优化还在进行当中。第一版的编译器计划在明年一季度初推出。
?目前,StarkNet还不支持Cairo1.0,需要到明年第一季度,StarkNet才会支持Cairo1.0。
CertiK:PorkiesNFT项目Discord服务器遭入侵:金色财经报道,据CertiK官方推特发布消息称,PorkiesNFT项目Discord服务器遭入侵,有黑客发布钓鱼链接。在团队确认已重获对服务器的控制之前,请勿点击任何链接。[2023/7/8 22:25:40]
介绍
2020年,我们发布了Cairo,它是一种支持可验证计算的图灵完备编程语言。Cairo开始时是一种汇编语言,后来逐渐变得更具表达力。两个月前,我们宣布了Cairo1.0的诞生,它解决了当下一些主要问题:
?自诞生以来,虽然Cairo的语法结构已经有了很大的改进,但开发者的体验还是有改进的空间的。Cairo1.0是一个受Rust启发的完全类型语言,编写同样的逻辑会更加容易,并且出错的可能性更低。
?现有的编译器与StarkNet本身是在同一个repo中开发的,所以追踪语言变化的困难更大。Cairo1.0编译器是从头开始编写的,所以有更快的功能开发和更多的社区参与。
Web3数据存储解决方案KYVE Network宣布其主网已上线:3月15日消息,据官方推特,去中心化数据存储解决方案KYVE Network宣布其主网已上线,该主网基于Cosmos SDK。
KYVE于今年早些时候发布2023路线图,其中一、二季度的任务包括审计、Oracle Beta版、Genesis Validator计划和主网启动,三、四季度的任务包括捐赠计划、资助计划、Web App V3版、KYVE 2.0等。
此前去年6月份消息,Kyve Network 以1亿美元估值融资900万美元,Distributed Global领投。[2023/3/15 13:05:31]
?现在每一次计算都是可以证明的。目前,一个Cairo程序可能在特定的输入指令下出现失败,使计算无法被证明。在Cairo1.0中,程序在每个可能的分支中都是可证明的。这对StarkNet中的DOS保护和抗审查尤为重要。
路透社:Coinbase前经理的兄弟因内幕交易入狱:金色财经报道,据路透社报道,前Coinbase经理Ishan Wahi的兄弟Nikhil Wahi 于 1 月 10 日被判处 10 个月监禁,原因是他根据从其兄弟那里获得的Coinbase机密信息进行交易。检察官声称 Ishan Wahi 向他的兄弟和他们的朋友 Sameer Ramani 提供了线索。据悉,Nikhil Wahi 和 Ramani 使用匿名以太坊 (ETH) 钱包,并在 2021 年 7 月至 2022 年 5 月期间通过交易赚取了超过 100 万美元。兄弟俩于 2022 年 7 月被捕。26 岁的Nikhil Wahi于 9 月承认犯有电汇欺诈罪,而Ishan Wahi 则不不认罪。Ramani也被列入逮捕令中,当时他在美国境外,尚未出庭。检察官建议判处 Nikhil Wahi 至少 10 个月至 16 个月的监禁。他的辩护律师声称 Wahi 的主要动机是偿还他的父母资助他的大学教育,并且他之前没有被捕,因此设法在 10 个月内达成和解。[2023/1/11 11:05:02]
?今天,我们达到了上述目标方面的第一个里程碑,因为我们将开发工作转移到了公共repo,并将Cairo1.0开源!现在,开发人员可以编译和执行简单的Cairo1.0程序。由此,开发者可以开始尝试使用Cairo1.0,并逐渐适应新的功能,即使在这个阶段,他们还不能在StarkNet上实现。
Tornado Cash在被实施制裁后存款下降了79%:金色财经报道,根据The Block Research的数据,Tornado Cash在被实施制裁后,存款大幅下降,提款增加。自被制裁以来,该协议仅存入了600万美元。与前一周的相同时间相比,这意味着下降了78.5%。
与此同时,用户急于提取资金,导致整体交易量增加。自宣布制裁以来,已从协议中提取了6200万美元,使其地址中持有的加密货币数量减少了15%。其中,仅在前三个小时内就提取了1470万美元。[2022/8/12 12:19:51]
目前的性能
目前,你可以编译和执行基本的原生Cairo程序。虽然许多语法/语言的优化仍在进行中,但你还是可以慢慢去习惯Cairo1.0,享受升级带来的好处。
请注意,目前仍然无法编写StarkNet合约。StarkNet语法会在未来几周内添加。
中心化交易所的比特币流通供应量不及10%,为2018年12月以来低点:金色财经消息,Watcher.Guru发推称,只有9.9%的比特币流通供应量位于中心化交易所。这是2018年12月以来的最低水平。[2022/6/10 4:16:43]
代码示例
为了说明旧的语法和Cairo1.0之间的差异,我们选择了几个不同的实现/类型模板来展示找到第n个斐波那契数。
例一:匹配表达式
在Cairo1.0中,你可以使用类似Rust的匹配表达式。你再也不用担心if/else语句会导致引用撤销了!
例二:数据类型
Cairo0使用的是felt和指针,而在Cairo1.0中,我们可以在语言中访问复杂的数据类型。下面你可以看到一个例子,它生成了一个前n个斐波那契数的数组。
如上所示,我们没有直接使用内存指针,而是使用`Array::<felt>`类型和`array_append`函数。
例三:结构体和所有权
下面的代码说明了Cairo1.0中结构体的用法。
下面这段话是为Rust开发者准备的。Cairo1.0管理内存的方式与Rust类似。而且,它使用了所有权和借用的概念。因此,通过访问`FibResult`结构体的一个成员,我们已经移动了`result`,这意味着除非FibResult是可复制的,否则我们不能在`result.index`中再次访问它。为了解决这个问题,我们在`FibResult`类型中添加了`#`属性。在未来的版本中,我们会为结构体添加自动解构功能。在不影响其他成员的情况下移动某个成员的所有权。
特别要注意的是,Cairo1.0完全抽象掉了Cairo原有的内存模型。
例四:错误传播
下面的代码是计算第n个斐波那契数,但与前面的例子不同,所有的输入指令都是uint128类型的。注意,这解决了Cairo0中处理uint的一个主要痛点。在这里,uint128是原生类型。
两个128个比特位的整数相加会导致溢出。上面的代码使用Option枚举和问号运算符来处理其中一个中间加法中的溢出情况。与目前的uint256加法语法相比,必须调用`unit256_check`函数来保证完整性。此外,在不久的将来,我们会在语言中加入`panic`的概念,像加法溢出这样的简单错误会是无法捕捉并自动传播的,也就是说,你在添加uint时不必使用`Option`或`?`。
赶紧试试吧
你现在可以编译和运行当前支持的Cairo1.0程序了。按照这些说明,学会使用`cairo-run`指令。注意,它的后台由Lambdaclass开发的RustCairoVM执行指令。
你可以在这里找到更多的例子帮助你入门。请注意,这只是对编译器开发的第一次测试;未来几周,我们会随着编译器改进CLI。
未来计划
第一版编译器的重点是支持Cairo1.0中StarkNet的所有功能,该版本计划在明年第一季度推出。此外,我们正在努力扩展Cairo1.0编译器的功能。未来几周,即将上线:
?StarkNet的性能——编写智能合约和使用系统调用。
?循环
?新的库函数
?优化的语言服务器
?StarkNetgas的概念
请务必保持关注并跟踪编译器的进展!
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。