市场服务

(博森科技)StarkWare编程语言Cairo1.0测试版开源官方简介

博森科技官网:www.bosenkejigz.com

量化机器人官网:www.qulianghua.com


具体内容:

⦁ Cairo 1.0开源系统啦!这仅仅只是StarkNet栈开源系统的第一步。

⦁ 大家给读者增添了对Cairo 1.0编译器的基本详细介绍。你们可以开始着手应用最基本的Cairo 1.0编码了。

⦁ Cairo 1.0的关键与Rust十分相似。

⦁ 充分考虑这也是初次检测,而非宣布版本,提升还在开展之中。第一版的编译器打算在来年一季度初发布。

⦁ 现阶段,StarkNet还不兼容Cairo 1.0,必须到明年第一季度,StarkNet才能适用Cairo 1.0。

广州博森科技专注量化机器人。CCR量化机器人、现货合约量化机器人、FA机器人。专业量化机器人交易8年,成熟稳定自主研发技术,欢迎交流。

详细介绍2020年,大家发布Cairo,它是一种适用可验证计算出来的图灵完备计算机语言。Cairo开始的时候是一种汇编程序,之后开始变得更具有表达能力。2个月前,大家公布了Cairo 1.0的出现,它克服了时下一些关键问题:

⦁ 自问世至今,尽管Cairo的句法结构早已有了很大改善,但开发人员的感受确实是有改善空间的。Cairo 1.0是一个受Rust启发的彻底类型语言表达,撰写相同的逻辑性会更容易,而且出错概率变低。

⦁ 已有的编译器与StarkNet本身就是在同一个一个repo中研发的,因此跟踪语言表达转变的难题更高。Cairo 1.0编译器是重新开始整理的,因此有更快地功能开发和更多社区参与。

⦁ 如今每一次测算都是能够证明。现阶段,一个Cairo程序流程很有可能在特定输入代码下发生不成功(比如,在一些测算支系中做到"assert 1=2"命令),使测算难以被证实。在Cairo 1.0中,程序流程在每一个很有可能分支中是可证明。这会对StarkNet里的DOS保护与抗核查至关重要。

⦁ 今日,大家达到以上总体目标层面的第一个里程碑式,由于我们将要研发工作转移到公共性repo,并把Cairo 1.0开源系统!如今,开发者能够编译程序与执行简单Cairo 1.0程序流程。从而,开发人员能够开始着手应用Cairo 1.0,并逐步融入新的功效,即便在这个时候,他还不可以在StarkNet上进行。

现阶段性能

现阶段,你可以编译程序与执行最基本的原生态Cairo程序流程。尽管很多词法/语言表达的升级依然在火热进行中,但是你还是能够渐渐地去习惯性Cairo 1.0,享有更新带来的收益。

一定要注意,现阶段依然没法撰写StarkNet合同。StarkNet词法(存放自变量/启用合同/事情和其它系统进程)会到将来几个星期内加上。

编码实例

为了能表明老旧词汇和Cairo 1.0之间的差别,我们在选择了好几个不同类型的完成/类型模版来呈现寻找第n个斐波那契数。

例一:配对关系式(match expressions)

广州博森科技专注量化机器人。CCR量化机器人、现货合约量化机器人、FA机器人。专业量化机器人交易8年,成熟稳定自主研发技术,欢迎交流。

在Cairo 1.0中,你可以应用类似Rust的配对关系式。你再也不怕if/else语句也会导致引入取消了!

例二:数据信息类型(Data types)

广州博森科技专注量化机器人。CCR量化机器人、现货合约量化机器人、FA机器人。专业量化机器人交易8年,成熟稳定自主研发技术,欢迎交流。

Cairo 0所使用的是felt和表针,但在Cairo 1.0中,大家可以在语言表达中浏览繁杂的信息类型。下边你可以看到一个事例,它形成了一个前n个斐波那契数的二维数组。

以上所显示,我们并没有直接用运行内存表针,反而是应用`Array::`类型和`array_append`函数公式。

例三:结构体和使用权(structs and ownership)

广州博森科技专注量化机器人。CCR量化机器人、现货合约量化机器人、FA机器人。专业量化机器人交易8年,成熟稳定自主研发技术,欢迎交流。

下边的编码反映了Cairo 1.0中结构体用法。

下边这句话是为了Rust开发人员精心准备的。Cairo 1.0管理方法运行内存的形式与Rust类似。并且,它用了使用权和使用这个概念。因而,根据浏览`FibResult`结构体的一个组员(在本例中,`result.value`),己经移动了`result`,这就意味着除非是FibResult是可以复制,不然我们不应该在`result.index`中再度浏览它。为了能解决这些问题,大家在`FibResult`类型中加了`#[derive(Copy)]`特性。在接下来的版本中,我们也会为结构体加上全自动结构作用。在不改变其他人的情形下挪动某一组员的使用权(特别是,即便`FibResult`没有copy特性,上边的编码还可以编译程序)。

尤其需要注意的是,Cairo 1.0彻底抽象化没了Cairo原先的(无确定性的写保护)内存模型。

例四:不正确散播(Error propagation)

广州博森科技专注量化机器人。CCR量化机器人、现货合约量化机器人、FA机器人。专业量化机器人交易8年,成熟稳定自主研发技术,欢迎交流。

下边的编码是测算第n个斐波那契数,但是和前边的事例不一样,每一个输入代码都是uint128类型的。留意,这克服了Cairo 0中解决uint的一个关键困扰。在这儿,uint128(和未来的uint256)是原生态类型。

2个128个比特位的整数金额求和也会导致外溢。上边的编码应用Option枚举类型和疑问操作符去处理其中一个正中间加减法里的外溢状况。与现阶段的uint256加减法词法对比,务必启用`unit256_check`函数公式来确保完好性。除此之外,不久的将来,我们会语言表达里加入`panic`这个概念(类似Rust中的panic宏),像加减法外溢这种简易不正确会是很难捕获可自动传递的,换句话说,你一直在加上uint时不需要应用`Option`或`?`。

赶快看一下吧

你现在能编译程序和运作现阶段鼓励的Cairo 1.0程序流程了。依照这种表明,学好应用`cairo-run`命令。留意,它后台管理由Lambdaclass研发的Rust Cairo VM实行命令。

你可以找寻到更多事例帮助自己新手入门(网页链接)。一定要注意,那只是对编译器开发设计的第一次检测;将来几个星期,大家也会随着编译器改善CLI。

未来计划

第一版编译器的关键是适用Cairo 1.0中StarkNet的全部作用,该版本打算在明年第一季度发布。除此之外,大家一直在努力拓展Cairo 1.0编译器的功效。将来几个星期,即将来袭:

⦁ StarkNet的特性——撰写区块链智能合约与使用系统进程。

⦁ 循环系统

⦁ 一个新的函数库

⦁ 改善的语言表达网络服务器

⦁ StarkNet gas的定义

请尽快维持关心并追踪编译器的进度!