簡介
Tinyram是一個簡單的RISC隨機存取機器,具有字節尋址的random-accessmemory和inputtapes。TinyRAM有兩個變體:一個遵循哈佛架構,一個遵循馮諾依曼架構(本文我們主要討論馮諾依曼架構)。
簡明計算完整性和隱私研究項目構建了證明TinyRAM程序正確執行的機制,而TinyRAM的設計是為了在這種情況下提高效率。它在“擁有足夠表達能力”和“足夠簡約”這兩個對立面之間取得平衡:
?當從高級編程語言編譯時,有足夠的表達能力來支持簡短高效的匯編代碼。
?小指令集,指令通過運算電路簡單驗證,利用SCIPR的算法和密碼機制實現高效驗證。
本文對于tinyram不再進行重復介紹,會對上一篇文章進行補充,然后重點是指令介紹和電路約束介紹。tinyram基礎介紹可以參考我們團隊上一篇文章:深入理解TinyRam
Tinyram指令集
Tinyram總共有29個指令,每條指令都由一個操作碼和最多三個操作數組成。一個操作數可以是一個寄存器的名稱。除非特別說明,否則指令不會單獨修改flag。每條指令默認將pc增加i(i%2^W),對于vnTinyram來說i=2W/8。
一般來說,第一個操作數是指令計算的目標寄存器,其他的操作數指定指令需要的參數,最后,所有指令都需要機器的一個周期來執行。
位操作
整數操作
這些是各種無符號和有符號的整數操作。在每種情況下,如果發生算術溢出或錯誤,flag被設置為1,否則被設置為0。
shift操作
??shl?指令?shlrirjA?將左移位ubit得到的W位string存儲在ri寄存器中。移位后的空白位置被填充為0。此外flag被設置為的最高有效位。
??shr?指令?shrrirjA?將右移位ubit得到的W位string存儲在ri寄存器中。移位后的空白位置被填充為0。此外flag被設置為的最低有效位。
英國金融:代幣化可能為英國經濟增加數十億美元:金色財經報道,有影響力的金融游說團體英國金融的一份新報告正在推動英國政府將代幣化市場列為首要議程。英國金融是對英國的銀行和金融機構有影響力的游說團體,它為該國政府制定了一個五年計劃,目的以成為代幣化市場的世界領導者。英國金融主席Bob Wigley表示,“證券代幣化可能會通過降低成本、降低風險和擴大市場準入來改變金融市場。但如果不繼續采取大膽行動,英國就有可能落后于其他司法管轄區。”[2023/7/6 22:21:34]
比較操作
比較操作中的指令每一個都不會修改任何寄存器;比較的結果存儲在flag中。
move操作
??mov?指令?movriA?將存儲到ri寄存器中。
??cmov?指令?cmovriA?如果flag=1,將存儲到ri寄存器中。否則ri寄存器的值不會改變。
Jump操作
這些jump和條件jump指令都不會修改寄存器和?flag?但是會修改?pc。
??jmp?指令?jmpA?將存儲到pc中。
??cjmp?指令?cjmpA?在?flag?=1的條件下將存儲到pc中,否則pc自增1。
??cnjmp?指令?cnjmpA?在?flag?=0的條件下將存儲到pc中,否則pc自增1。
Memory操作
這些是簡單的memoryload和store操作,其中memory的地址由立即數或寄存器的內容確定。這些是tinyram中唯一的尋址方式。。
輸入操作
該指令是唯一一個訪問兩個tapes中的任意一個的指令。第0個tape用于primary輸入,第1個tape用戶auxiliary輸入。
輸出操作
貝萊德或通過監管共享協議讓美SEC批準現貨比特幣ETF:金色財經報道,貝萊德(BLK)本周向美國證券交易委員會(SEC)提交的iShares比特幣信托基金申請在其提案中包括了一項監管共享協議,這可能會消除與比特幣相關的市場操縱風險。
在貝萊德向美國證券交易委員會提交的19b-4文件的第36頁,該公司表示,為了減輕對市場操縱的影響,它將引入納斯達克(NDAQ),與比特幣(BTC)現貨交易平臺的運營商達成一項監督共享協議。
監視共享協議允許共享有關市場交易活動、清算活動和客戶身份的信息,使市場操縱的可能性很小。[2023/6/17 21:42:53]
該指令表示程序已經完成了計算,因此不能再允許其他操作。
指令集約束
Tinyram采用R1CS約束形式進行電路約束,具體形式如下:
一個R1CS約束,可以有a,b,c三個linear_combination表示,一個R1CS系統中的所有變量的賦值,可以分為兩個部分:primaryinput和auxilaryinput。Primary就是我們經常說的“statement”。auxiliary就是“witness”。
一個R1CS約束系統包含多個R1CS約束。每個約束的向量長度是固定的。
Tinyram在libsnark的代碼實現中大量使用了一些定制gadgtes來表述vm的約束以及opcode執行和memory的約束。具體代碼在gadgetslib1/gadgets/cpu_checkers/tinyram文件夾下。
位操作約束
??and?約束公式:
and的R1CS約束將參數1和參數2以及計算結果逐bit位進行乘法計算驗證,約束步驟如下:
1.計算過程約束,代碼如下:
PeckShield:Hashflow 疑似遭遇與授權有關的攻擊:6月14日消息,PeckShield 發推稱,Hashflow 疑似遭遇與授權有關的攻擊,目前損失金額約為 40 萬美元,其中 19.5 萬美元的損失發生在 Arbitrum 上,21.5 萬美元的損失發生在以太坊上。[2023/6/15 21:37:20]
2.結果編碼約束
3.計算結果非全0約束
4.flag約束
??or?約束公式:
具體約束步驟如下:
1.計算過程約束,代碼如下:
2.結果編碼約束
3.計算結果非全0約束
4.flag約束
??xor?約束公式:
具體約束步驟如下:
1.計算過程約束,代碼如下:
步驟2,3,4同上
?not?約束公式:
ConsenSys慶祝以太坊成功合并NFT系列“Regenesis”已開放鑄造:9月15日消息,以太坊基礎設施開發公司ConsenSys ConsenSys推出的慶祝以太坊成功合并NFT系列“Regenesis”已開放鑄造。
此前報道,ConsenSys宣布,為慶祝以太坊PoS合并(TheMerge)的里程碑時刻,將邀請全世界參與其在以太坊主網上推出的首個可持續NFT“Regenesis”的鑄造活動。鑄造將于合并之日起向所有人免費開放72小時,唯一成本是用戶需自付Gas費用。[2022/9/15 6:58:52]
具體約束步驟如下:
步驟2,3,4同上
整數操作約束
?add:?約束公式:
具體約束步驟如下:
1.計算過程約束,代碼如下:
2.解碼結果約束和boolean約束
3.編碼結果約束
?sub:?約束公式:sub約束比add稍微復雜一些,采用了一個中間變量表示a-b的結果,同時為了保證結果計算表示為正整數和符號的形式,給結果加上了2^w。具體約束步驟如下:
1.計算過程約束
2.解碼結果約束和boolean約束
3.符號位約束
?mull?、umulh、smulh?約束公式:
金色晚報 | 5月16日晚間重要動態一覽:12:00-21:00關鍵詞:Hoseki、Celsius Mining、尼日利亞SEC、TheBlock
1. 比特幣基礎設施公司Hoseki完成種子輪融資,Stillmark領投;
2. 加密礦業公司Celsius Mining向美SEC提交上市注冊聲明草案;
3. 尼日利亞SEC將向當地加密交易所收取費用;
4. TheBlock數據研究總監:Jump Crypto因本次UST脫錨事件損失數億美元;
5. 外媒:野村證券準備設立加密貨幣業務子公司;
6. 孫宇晨:支持優先賠償小額UST持有者的方案,承諾提供1000萬USDD;
7. 深圳發布首個數字人民幣預付式消費平臺;
8. 阿里巴巴成全球最大區塊鏈專利持有者;
9. LFG公布儲備資金使用情況,剩余313枚BTC等資產儲備。[2022/5/16 3:20:04]
mull相關的約束都涉及以下幾個步驟
1.計算乘法約束
2.計算結果編碼約束
3.計算結果flag約束
?udiv?、umod?約束公式:
B為除數,q商,r為余數。余數與需要滿足不能超過除數的條件。具體約束代碼如下:
shift操作約束
??shl、shr?約束公式
比較操作
比較操作中的指令每一個都不會修改任何寄存器;比較的結果存儲在flag中。比較指令包含cmpe、?cmpa?、cmpae、cmpg、cmpge?。比較指令可以分為兩類,分別為有符號數的比較和無符號數比較,兩者約束過程核心都利用了libsnark中實現的comparison_gadget。
其他剩余過程跟有符號數比較約束相同
move操作約束
??mov?約束公式:
mov的約束比較簡單,只需要確保將存儲到ri寄存器中,由于mov操作沒有修改flag,所以約束需要確保flag的值沒有產生變化。約束代碼如下:
??cmov?約束公式:
cmov的約束條件比mov復雜一些,主要mov的行為跟flag值的變化有關系,同時cmov不會修改flag,所以約束需要確保flag的值沒有變化,cmov的代碼如下:
Jump操作約束
這些jump和條件jump指令都不會修改寄存器和?flag?但是會修改?pc。
??jmp
Jmp操作約束pc值與指令執行結果一致,具體約束代碼如下:
??cjmp
cjmp根據flag條件進行跳轉,flag=1進行跳轉,否則pc自增1
約束公式如下:
約束代碼如下:
??cnjmp
cnjmp根據flag條件進行跳轉,flag=0進行跳轉,否則pc自增1
約束公式如下:
約束代碼如下:
Memory操作約束
這些是簡單的memoryload和store操作,其中memory的地址由立即數或寄存器的內容確定。這些是tinyram中唯一的尋址方式。。
??store.b?和?store.w
對于store.w取整個arg1val的值,對于store.b操作碼只會取arg1val的必要部分,約束代碼如下:
??load.b?和?load.w
這兩個指令我們要求從內存中加載的內容被存儲在instruction_results中,約束代碼如下:
輸入操作約束
??read
read操作跟tape有關,具體的約束規則是:
1.上一個tape中的內容被讀完,沒有內容可讀,不會讀取下一個tape。
2.上一個tape中的內容被讀完,沒有內容可讀,flag被設置為1
3.如果當前執行的指令是read,那么read讀取到的內容和tape輸入內容一致
4.從tape1以外的地方讀取內容,flag被設置為1
5.result為不為0,意味著flag為0
約束代碼:
輸出操作約束
該指令表示程序已經完成了計算,因此不能再允許其他操作
??answer
當程序的輸出值被接受,has_accepted會被設置為1,程序返回值能夠被正常接受意味著當前的指令為answner以及arg2value為0。
約束代碼如下:
其他
當然除了上述提到的一些指令相關的約束外,tinyram還有一些pc一致性、參數編解碼、內存檢查等各種約束。這些約束通過R1CS系統組合起來構成一個完成的tinyram約束系統。所以這也是R1CS形式的tinyram生成約束數量較多的根本原因。
這里引用一個tinyram介紹ppt的圖片,展示一個ERC20transfer用tinyram生成證明需要的時間消耗。
從上圖的例子可以得出結論:使用vnTinyram+zk-SNARKs驗證所有EVM操作是不可能的,只適合驗證少量的指令的計算驗證,可以使用vnTinyram驗證EVM的部分計算類型的opcode。
參考
tinyram介紹ppt:
https://docs.google.com/presentation/d/1lbyLmXhCry61fxWm8LLxPKhCYV67RcZaK3WL20Hb-t8/edit#slide=id.g5b38da04a0_0_21
關于我們
Sin7y成立于2021年,由頂尖的區塊鏈開發者和密碼學工程師組成。我們既是項目孵化器也是區塊鏈技術研究團隊,探索EVM、Layer2、跨鏈、隱私計算、自主支付解決方案等最重要和最前沿的技術。
微信公眾號:Sin7y
GitHub:Sin7y
Twitter:@Sin7y_Labs
Medium:Sin7y
Mirror:Sin7y
HackMD:Sin7y
HackerNoon:Sin7y
Email:contact@sin7y.org
來源:金色財經
1.美聯儲加息 美聯儲加息是指聯邦儲備系統管理委員會在華盛頓召開議息會議后,決定貨幣政策的調整,上調聯邦基金利率。簡單的說,加息是一種緊縮型貨幣政策,美聯儲通過加息來應對當前的經濟.
1900/1/1 0:00:0000:00-07:00 關鍵詞:Web3加密網絡LitProtocol、3Commas、Solana上的M2E應用STEPN、BinanceUS、英國政府、跨鏈預言機解決方案SupraOracl.
1900/1/1 0:00:00NFT終于滲透進三A大作游戲圈了嗎?與此同時,Solana最大NFT市場MagicEden正在處理社區分歧,而咖啡界最知名的公司正在啟動全新的NFT激勵計劃.
1900/1/1 0:00:00編輯搜圖 介紹 眾所周知,加密貨幣是歷史上最不穩定的資產類別之一。加密貨幣資產在一天內記錄三位數的收益或損失并不罕見,因為它們正在努力應對供需力量.
1900/1/1 0:00:00質押允許加密貨幣持有者在其加密貨幣投資組合中產生被動收入。煎餅交換因其可負擔的交易費用而成為一種流行的加密貨幣交易所。因此,其原生的CAKEToken也獲得了一定的人氣.
1900/1/1 0:00:00市值與TVL的比率是通過將加密貨幣的市值除以其鎖定的總價值(TVL)來計算的。雖然許多初學者加密投資者對高市值感到眼花繚亂,但正是這個比率真正表明了它是否具有良好的投資潛力.
1900/1/1 0:00:00