月亮链 月亮链
Ctrl+D收藏月亮链
首页 > 区块链 > 正文

RES:详解Cairo指令-ODAILY_DST

作者:

时间:1900/1/1 0:00:00

1.指令结构

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

2.状态转换

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

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

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

2.1转换逻辑

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

国际清算银行:加密货币是有缺陷的系统:金色财经报道,国际清算银行为支持CBDC和代币化资产的全球统一分类账制定了一个蓝图。该蓝图概述了将 \"智能合约 \"创新纳入统一分类账设计的各种应用案例。该报告认为,“加密货币是一个有缺陷的系统,无法取代货币的未来。”[2023/6/21 21:52:43]

2.2指令校验

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

BNQ攻击事件中的黑地址(0xdf790)已将资金转至Tornado Cash:金色财经报道,据CertiK监测,BNQ攻击事件中的黑地址(0xdf790)已将资金转至Tornado Cash。该地址总共有180枚BNB (约5.4万美元),目前已有120枚BNB (约3.54万美元) 被转入Tornado Cash。[2023/3/3 12:40:00]

3.指令示例

3.1断言相等

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

<left_handle_op>=<right_handle_op>

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

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

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

Celsius试图收回Fabric Ventures投资承诺中的600万美元:金色财经报道,破产的加密贷方Celsius正试图从风投公司Fabric Ventures做出的800万美元投资承诺中收回超过600万美元。根据周二提交的一份法庭文件,Fabric将在Celsius的B轮融资中投资超过800万美元,分三笔付款。Celsius表示,它已于2021年11月结束其扩展的B轮融资,以32.5亿美元的估值将4亿美元的融资增加到7.5亿美元。 按照去年4月商定的时间表,Fabric于5月支付了第一笔200万美元的款项。随后的付款本应在6月为200万美元,在7月为400万美元。 安排没有按计划进行。Celsius于7月申请破产,最近的法庭文件显示 ,Celsius的负债超过67亿美元,而其资产价值仅为39亿美元左右,导致资产负债表出现28亿美元的缺口。[2023/1/19 11:19:46]

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

解释指令=5:

?为assert指令=>opcode=4

马斯克:收购推特是创建“Everything App”的加速器:10月5日消息,马斯克发布推特表示,收购推特是创建X的加速器,X即“Everything App”。

此前消息,马斯克提议继续以每股54.20美元的价格收购推特,这可能会终结近期历史上最具争议的收购之一。[2022/10/5 18:39:57]

?next_ap=ap=>ap_update=00=0

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

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

?存在立即数=>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的值。

Polygon上近30日新增1653万枚NFT,总计发行量达1.19亿:5月19日消息,据Polygon NFTScan数据显示,截止5月19日,Polygon上已经发行1.19亿枚NFT,开发者累计部署了11.9万份NFT资产合约。近30天Polygon上新增了1653万枚NFT,平均每天新增55万枚NFT。[2022/5/19 3:27:40]

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

标签:RESOFFDSTNEXTShibaForestOffshiftcloudstoragedigifinextoken

区块链热门资讯
稳定币:400亿美元燃放的烟花,以一己之力让全球加密市场进入凛冬-ODAILY_LUN

2022年5月7日,加密市场发生了有史以来的最大动荡——Luna/Terra生态系统崩盘,其广受采用的稳定币TerraUSD失去锚定,引发死亡螺旋.

1900/1/1 0:00:00
PAR:平行链上线技术系列五:平行链通过orml-xcm打开hrmp-ODAILY_PARA

实验环境两条平行链-链A(2008)和链B(2009)一条中继链实验目的通过orml-xcm打开链A和链B之间的hrmpchannel前提准备平行链代理账户需要一定的中继链token.

1900/1/1 0:00:00
QUO:波卡创始人Gavin Wood问题解答(一)-ODAILY_Quota

“波卡知识图谱”是我们针对波卡从零到一的入门级文章,我们尝试从波卡最基础的部分讲起,为大家提供全方位了解波卡的内容,当然这是一项巨大的工程,也充满了挑战.

1900/1/1 0:00:00
NFT:8个里程碑式NFT实例的启迪-ODAILY_ENS

实际上从Beeple的作品破圈让很多人知道NFT到今天,时间还不到18个月。但行业的变化实在太快,新的热点目不暇接,有种稍纵即逝的感觉.

1900/1/1 0:00:00
POL:波卡生态周报:Moonbeam引入XCM到EVM的新功能-ODAILY_ADO

Polkadot生态研究院出品,必属精品波卡一周观察,是我们针对波卡整个生态在上一周所发生的事情的一个梳理,同时也会以白话的形式分享一些我们对这些事件的观察.

1900/1/1 0:00:00
NFT:DAOrayaki:同质化通证的NFTs用于更加动态的治理结构-ODAILY_HBAY价格

通证化所有权和治理是我们努力创造的这个分权未来1的关键。该行业将超越简单可替代的“代币投票”,此风险在于治理通证的巨鲸持有者占据主导地位。因此,这一领域的创新将大放异彩.

1900/1/1 0:00:00