1.指令結構
CairoCPU原生支持的word是一個域元素,而這個域是特征值大于P>2^63。每個指令會占用1到2個word,如果指令后面跟著立即值(="12345678")則該指令占用2個word,并且值存在第二個word里。每個指令的第一個word由以下元素組成:
2.狀態轉換
狀態轉換函數代表了一個通用的狀態轉換單元,而一個計算通常會分解成多個連續執行的指令,因此我們需要:
a.確保指令的內容,以及指令執行前后的狀態的有效性
b.確保執行的指令是一個有效的指令
2.1轉換邏輯
如果指令執行前后的狀態是一致的,那么其狀態的更新一定是按照以下邏輯執行:
比特幣礦企CleanSpark 7月開采575枚比特幣:金色財經報道,比特幣礦企CleanSpark,Inc.發布了截至2023年7月31日的月份未經審計的比特幣挖礦和運營更新。7月份開采的比特幣575枚,2023年至今開采的比特幣4,070枚,截至7月31日的BTC總持有量1,061枚。
7月份售出43枚BTC,部署礦機87,936臺,當前算力9.0EH/s。該公司于2023年7月出售了43枚比特幣,平均每枚比特幣價格約為29,300美元。BTC的銷售收入約為130萬美元。7月份每日開采的BTC平均為18.6枚,最高達到21.1枚。[2023/8/2 16:14:31]
去中心化永續合約交易平臺LionDEX發布測試版:金色財經報道,部署在Arbitrum上的去中心化永續合約交易平臺LionDEX宣布上線測試版,本次測試的核心產品是為永續合約交易者提供的訂單虧損保險,以及建立在GMXX4概念上的PvP-AMM交易協議。測試結束后還將對參與測試的部分用戶以及GMX活躍交易者進行代幣空投。[2023/3/6 12:45:02]
2.2指令校驗
如圖1所示,?個指令由以下元素組成:
3.指令示例
3.1斷言相等
斷言相等指令可以用下述語法表示:
<left_handle_op>=<right_handle_op>
它確保了公式兩邊是相等的,否則程序的執行將會被返回。
80萬枚BNB從幣安轉入未知錢包:金色財經報道,@whale_alert監測數據顯示,80萬枚BNB從幣安交易所轉入未知錢包。[2023/2/1 11:39:46]
Note2:除法和減法可以分別表示為具有不同操作數順序的乘法和加法。
assert指令可以被認為是一條賦值指令,其中?邊是已知的,另一邊是未知的。例如=4可以被認為是斷言的值為4,或者根據上下文將賦值為4。
圖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
?存在立即數=>op1_src(op1)=001=1
委內瑞拉封鎖超75個因加密貨幣相關活動的賬戶:金色財經報道,根據委內瑞拉法律公司Legalrocks的數據,自2021年底以來,超過75個賬戶被委內瑞拉私人銀行封鎖,原因是為加密貨幣到法幣以及法幣到加密貨幣的轉換提供便利。同樣,通過未經Sunacrip(國家加密貨幣資產監管局)授權的加密貨幣交易所進行的交易,也可能被金融當局認為是可疑的,并有理由進行調查。[2022/12/28 22:12:21]
?立即數地址指令地址相鄰=>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.
The Graph 上線嵌套查詢功能,允許子圖開發人員按子字段進行過濾:8月23日消息,去中心化索引協議 The Graph 宣布上線嵌套查詢功能,允許子圖開發人員按子字段進行過濾,以更靈活地從子圖中管理數據視圖。此外,The Graph 將在 3 天之內公布繼以太坊之后開始集成的下一條區塊鏈。[2022/8/23 12:43:50]
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
Tags:RESOFFDSTCALTIGRESSMinimal Initial SushiSwap OfferingDST幣Colu Local Network
7月14日,LBank發布熱門代幣榜單,TRX高居第三! LBank藍貝殼將于4月16日14:00啟動Vswap(VAL)專場售賣:據官方公告.
1900/1/1 0:00:00原文作者:DevinAbbott當我們談論Web3時,大多數人會立刻想到NFT、加密資產或DeFi。因為從TwitterCrypto的活動來看,這是事實.
1900/1/1 0:00:00無論您是對沖基金、企業財務主管還是資產經理,選擇合適的托管人都是您在數字資產方面取得成功的關鍵。然而,駕馭數字資產托管環境并非易事。加密已經改變了傳統金融的游戲規則.
1900/1/1 0:00:00曾經有一段時間,所有加密貨幣都與比特幣(BTC)進行交易。當投機者看到可靠的代幣經濟學或有希望的炒作時,他們會冒險進入其他代幣,但比特幣是他們選擇的結算代幣。事情變了.
1900/1/1 0:00:00據最新消息,截至6月22日,SUN.io上的2pool(USDD/USDT)礦池APY高達39%,質押價值超過1億美元,流動性價值超過2.4億美元.
1900/1/1 0:00:00ETF是指交易所交易基金,全稱為交易型開放式指數證券投資基金。與一般基金產品不同,ETF的價格需追蹤特定指數或資產價格并與其保持錨定關系.
1900/1/1 0:00:00