ETH:详解Cairo指令-ODAILY

1.指令结构

CairoCPU原生支持的word是一个域元素,而这个域是特征值大于P>2^63。每个指令会占用1到2个word,如果指令后面跟着立即值(="12345678")则该指令占用2个word,并且值存在第二个word里。每个指令的第一个word由以下元素组成:

2.状态转换

状态转换函数代表了一个通用的状态转换单元,而一个计算通常会分解成多个连续执行的指令,因此我们需要:

a.确保指令的内容,以及指令执行前后的状态的有效性

b.确保执行的指令是一个有效的指令

2.1转换逻辑

如果指令执行前后的状态是一致的,那么其状态的更新一定是按照以下逻辑执行:

香港约有10家基金经理基金经理已获得第9类(资产管理)牌照:金色财经报道,德杰律师事务所合伙人 Michael Wong 表示,自香港证券及期货事务监察委员会 (SFC) 于 2019 年发布指引以来,香港有 10 家基金经理升级了管理加密货币的牌照。有了必要的第9类(资产管理)牌照,基金经理将能够将其管理总资产价值的 10% 投向数字资产领域。[2023/4/28 14:33:30]

2.2指令校验

如图1所示,?个指令由以下元素组成:

OpenSea Polygon链上交易量连续第二个月超越以太坊:2月2日消息,区块链数据聚合平台Dune Analytics数据显示,NFT市场OpenSea在Polygon区块链上的交易量连续第二个月超越以太坊,12月OpenSea市场在Polygon区块链上售出130万枚NFT,1月为150万枚NFT;相比之下,以太坊链上销量分别为99.5万枚NFT和110万枚NFT。此外,数据显示特朗普推出的TrumpDigital Trading Cards是OpenSea在Polygon区块链上销售量最高的NFT项目,该项目在一月份售出5,517枚NFT,交易额达到1,760ETH(约合920万美元)。[2023/2/2 11:43:44]

3.指令示例

3.1断言相等

断言相等指令可以用下述语法表示:

<left_handle_op>=<right_handle_op>

它确保了公式两边是相等的,否则程序的执行将会被返回。

Web3游戏平台Intella X宣布完成1200万美元融资,Animoca Brands等参投:1月18日消息,Web3游戏平台Intella X宣布完成1200万美元融资,Polygon、Animoca Brands、Magic Eden、Planetarium、Big Brain Holdings、Crit Ventures、JoyCity、Pearl Abyss、XL Games、Wemix和Global Coin Research参投。

Intella X是由韩国游戏公司Neowiz与Polygon合作开发的Web3游戏平台,旨在通过简化的钱包创建和元交易等功能消除高进入壁垒并改善Web3中的用户体验。该平台将通过其原生代币奖励其生态系统的贡献者,包括游戏开发者和用户,并通过其去中心化的收入分配协议将其收入份额重新分配回贡献者。该平台计划于第一季度晚些时候上线,推出的产品还将包括Intella X专有的Web3钱包、去中心化交易所、NFT市场、Launchpad和一些游戏。(The Block)[2023/1/18 11:17:48]

Note2:除法和减法可以分别表示为具有不同操作数顺序的乘法和加法。

assert指令可以被认为是一条赋值指令,其中?边是已知的,另一边是未知的。例如=4可以被认为是断言的值为4,或者根据上下文将赋值为4。

观点:谷歌正致力于加密货币领域:金色财经报道,谷歌与Coinbase的合作表明谷歌正致力于加密货币领域。加密货币和科技巨头之间的合作被称为对区块链的肯定。根据最近的头条新闻和谷歌公司的说法,人们会认为谷歌正在涉足加密领域。然而,一些人认为这家科技巨头选择的合作伙伴Coinbase,证明谷歌只是在试探。

几周前,谷歌和Coinbase发布了一份联合新闻稿,标题为“谷歌云和Coinbase启动新的战略合作伙伴关系以推动Web3创新”。几天后,谷歌云推出了其以太坊区块链节点引擎。(CoinDesk)[2022/11/4 12:15:31]

图4给出了断言相等指令的一些示例,以及每个指令对应的标志值:

解释指令=5:

?为assert指令=>opcode=4

?next_ap=ap=>ap_update=00=0

?next_pc=pc+instruction_size=>pc_update=000=0

?op0和op1没有addormul=>res_logic(res)=00=0

新加坡的音乐节组织者Hype Records推出音乐节 NFT 项目:金色财经报道,新加坡的音乐节组织者Hype Records正推出一个音乐节 NFT 项目,通过与 Web3 风险工作室Spartan Labs的合作,为即将到来的电子舞曲音乐节 Hypeworld 增加 Web3 功能。Hypeworld Cosmos Access NFT 集合将由以太坊区块链上的 600 个 NFT 组成。Spartan Labs 负责人、前 CoinMarketCap 高管Shaun Heng表示,该系列将为持有者提供特定于活动的福利和独特的体验,包括 VIP 访问权限和从表演者那里赢得商品的机会等。

NFT的售价为 0.2 ETH(约合 266.78 美元),目前仅略高于为期两天的音乐节的标准门票,零售价为 278 新元(194.65 美元)。[2022/10/8 12:49:44]

?存在立即数=>op1_src(op1)=001=1

?立即数地址指令地址相邻=>off_op1=1

?等式左边=>dst_reg(dst)=1

?等式左边=>off_dst=1

?op0_reg/off_op0=>initalvalue(1/-1)//因为这个指令用不到这些flags,所以填充默认值

3.2条件和非条件跳转

jmp指令允许更改程序计数器pc的值。

Cairo支持相对跳转和绝对跳转-分别用关键字rel和abs表示;jmp指令或许是有条件的,比如当某个内存单元的值不为0时,触发jmp指令。

指令的语法如下所示:

#Unconditionaljumps.

jmpabs<adress>

jmprel<offset>

#Conditionaljumps.

jmprel<offset>if<op>!

图5给出了jmp指令的一些示例,以及每个指令对应的标志值:

解释指令jmprel+:

?为jmp指令=>opcode=0

?next_ap=ap=>ap_update=b00=0

?next_pc=pc+res=>pc_update=b010=2

?res=op0+op1=>res_logic(res)=b01=1

?op1:=>op1_src(op1)=b010=2

?op1:=>off_op1=-7

?op0:=>op0_src(op0)=0

?op0:=>off_op0=1

?dst_reg/off_dst=>initalvalue(1/-1)///因为这个指令用不到这些flags,所以填充默认值

3.3call和ret

call和ret指令允许实现函数堆栈。call指令更新程序计数器(pc)和帧指针(fp)寄存器。程序计数器的更新类似于jmp指令。之前fp的值被写入,以允许ret指令将fp的值重置为调用之前的值;类似地,返回的pc(调用指令后面指令的地址)被写到,以允许ret指令跳回并继续执行调用指令后面的代码的执行。由于写入了两个存储单元,ap向前进了2,fp被设置为新的ap。

指令的语法如下:

callret<adress>

callrel<offset>

ret

图6给出了call和ret指令的一些示例,以及每个指令对应的标志值:

解释指令callabs:

?为call指令=>opcode=0

?next_ap=ap=>ap_update=b00=0

?next_pc=res=>pc_update=b001=1

?res=op1=>res_logic(res)=b00=0

?op1:=>op1_src(op1)=b010=2

?op1:=>off_op1=4

?op0_reg/off_op0=>initalvalue(0/1)///因为这个指令用不到这些flags,所以填充默认值

?dst_reg/off_dst=>initalvalue(0/0)///因为这个指令用不到这些flags,所以填充默认值

3.4高级ap

指令ap+=<op>通过给定的操作数增加ap的值。

图7给出了高级ap指令的一些示,以及每个指令对应的标志:

解释指令ap+=123:

?为advancingap指令=>opcode=0

?next_ap=ap+res=>ap_update=b01=1

?next_pc=pc+instruction_size=>pc_update=b000=0

?res=op1=>res_logic(res)=b00=0

?op1=123=>op1_src(op1)=b001=1

?op1=123=>off_op1=1

?op0_reg/off_op0=>initalvalue(1/-1)///因为这个指令用不到这些flags,所以填充默认值

?dst_reg/off_dst=>initalvalue(1/-1)///因为这个指令用不到这些flags,所以填充默认值

关于我们

Sin7y成立于2021年,由顶尖的区块链开发者组成。我们既是项目孵化器也是区块链技术研究团队,探索EVM、Layer2、跨链、隐私计算、自主支付解决方案等最重要和最前沿的技术。

微信公众号:Sin7Y

GitHub|Twitter|Telegram|Medium|Mirror|HackMD|HackerNoon

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

链链资讯

[0:31ms0-7:570ms