簡介
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被設置為的最低有效位。
對沖基金Hunting Hill啟動數字資產子公司Hunting Hill Digital:金色財經報道,對沖基金 Hunting Hill Global Capital 啟動數字資產子公司 Hunting Hill Digital。知情人士表示,其首款產品將為 Crypto 25 Fund,最初管理的資產規模為 2000 萬至 2500 萬美元,該產品的策略將專注于按市值、流動性和性能排名前 25 位的加密貨幣。
此前報道,Genesis 前高管 Matt Ballensweig 曾在去年 12 月中旬向一位潛在投資者表示,其籌劃的名為 Hunting Hill Digital 的基金已經以 3000 萬美元的投后估值從 Bessemer Venture Partners 融資 250 萬美元,并正在另外籌集 500 萬美元。[2023/5/24 22:15:10]
比較操作
比較操作中的指令每一個都不會修改任何寄存器;比較的結果存儲在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中唯一的尋址方式。。
Martin Leinweber:與2017年上一次熊市不同的是,這次熊市主流幣遭到拋售:金色財經報道,VanEck指數制造商MarketVector的數字資產產品策略師 Martin Leinweber 表示,我認為,與 2017 年上一次熊市不同的是,主流幣遭到拋售,這讓投資者感到困惑,尤其是在機構方面。通常在拋售中,山寨幣的表現比 BTC 和 ETH 差。這一次,隨著市場崩盤,BTC 的主導地位正在下降,大多數山寨幣已經貶值了 90%。[2022/6/21 4:41:33]
輸入操作
該指令是唯一一個訪問兩個tapes中的任意一個的指令。第0個tape用于primary輸入,第1個tape用戶auxiliary輸入。
輸出操作
該指令表示程序已經完成了計算,因此不能再允許其他操作。
指令集約束
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文件夾下。
位操作約束
以太坊基金會研究員Justin Drake模型顯示ETH仍是“通脹資產”:8月12日消息,上周四激活的的以太坊“倫敦”升級開啟了向以太坊 2.0 過渡的新時代,這是以太坊區塊鏈過渡到權益證明(PoS)共識機制的倒數第二步,本次升級中最受關注的就是以太坊改進提案 (EIP) 1559,根據最新數據顯示,已有98.2%的以太坊客戶端完成升級,而這也是為什么EIP-1559能夠快速成為社區主流的原因。
本文撰寫時,總計有32643.1?ETH被銷毀(價值約合101,724,392.33美元),但按照目前銷毀速度(每分鐘銷毀 2.3 枚 ETH)并沒有真正使 ETH 成為通貨緊縮資產,只是降低了當前通貨膨脹率。事實上,即使以太坊 2.0 過渡完成,ETH仍將保持通脹。根據以太坊基金會研究員Justin Drake構建的一個模型顯示,即便有更多驗證者加入以太坊網絡,同時ETH質押年回報率(APR)/收益率維持在 6%,每年ETH供應量也“只會”減少160萬枚,這意味著ETH年供應率被降低至1.4%,即ETH代幣仍是一種通脹資產,只是通縮壓力更大而已。(cointelegraph)[2021/8/13 1:51:53]
?and約束公式:
and的R1CS約束將參數1和參數2以及計算結果逐bit位進行乘法計算驗證,約束步驟如下:
1.計算過程約束,代碼如下:
2.結果編碼約束
3.計算結果非全0約束
4.flag約束
?or約束公式:
聲音 | Weiss Ratings:BNB之所以成功是因為它是中心化的,有趣:加密貨幣評級機構Weiss Ratings發推稱:“因為BNB是中心化的,它的創建者不斷地為它創建新的用例,這增加了它的市場價值,使得資產能夠繼續運轉。BNB之所以成功,是因為它是中心化的。有趣。”[2019/7/26]
具體約束步驟如下:
1.計算過程約束,代碼如下:
2.結果編碼約束
3.計算結果非全0約束
4.flag約束
?xor約束公式:
具體約束步驟如下:
1.計算過程約束,代碼如下:
步驟2,3,4同上
?not約束公式:
具體約束步驟如下:
步驟2,3,4同上
整數操作約束
?add:約束公式:
具體約束步驟如下:
1.計算過程約束,代碼如下:
Austin用區塊鏈技術幫助無家可歸的人:Austin正在試行一個新的區塊鏈平臺來解決有關無家可歸者的身份問題。這個城市是由布隆伯格慈善基金會贊助的35個城市之一,作為市長挑戰項目的一部分。來自35個城市的第一名將獲得來自Bloomberg Philanthropies的500萬美元的獎勵。身份識別是保障無家可歸者獲得住房、潛在就業和醫療等關鍵服務的關鍵性因素。據TechCrunch報道,Austin相信區塊鏈可以幫助解決這些難題。區塊鏈技術可以為無家可歸的人創造獨特的在線標識,讓他們重新建立自己的歷史記錄,幫助他們擺脫貧困。[2018/4/18]
2.解碼結果約束和boolean約束
3.編碼結果約束
?sub:約束公式:sub約束比add稍微復雜一些,采用了一個中間變量表示a-b的結果,同時為了保證結果計算表示為正整數和符號的形式,給結果加上了2^w。具體約束步驟如下:
1.計算過程約束
2.解碼結果約束和boolean約束
3.符號位約束
?mull、umulh、smulh約束公式:
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。
關于我們
Sin7y成立于2021年,由頂尖的區塊鏈開發者組成。我們既是項目孵化器也是區塊鏈技術研究團隊,探索EVM、Layer2、跨鏈、隱私計算、自主支付解決方案等最重要和最前沿的技術。
微信公眾號:Sin7Y
GitHub|Twitter|Telegram|Medium|Mirror|HackMD|HackerNoon
Tags:TINFLAGRAMMOVRATINGFlag Networkgram幣最新價格JustCarbon Removal
據區塊鏈瀏覽器TRONSCAN數據,截至6月10日,波場TRON賬戶總數達到97,069,472,正式突破9700萬.
1900/1/1 0:00:00Bitfinex:公民數據將被要求存放于本國,P2P將是唯一途徑據Bitfinex首席技術官社交媒體稱,當下,越來越多國家要求將其公民的數據保存在本國境內的數據中心內.
1900/1/1 0:00:002022波場黑客松大賽第二季已于5月16日正式啟動,本季賽事獎金池結構全面更新,總獎金翻倍至100萬美元.
1900/1/1 0:00:00May.2022,VincyDataSource:FootprintAnalytics-MeebitsDataAnalysisMeebits由LarvaLabs于2021年5月推出.
1900/1/1 0:00:00據官方消息,截至6月7日,波場去中心化超抵押穩定幣USDD發行總額為703,094,264美元,突破7億美元,對應TRX銷毀量為8,718,566,088TRX,超87億枚.
1900/1/1 0:00:007月14日,LBank發布熱門代幣榜單,TRX高居第三! LBank藍貝殼將于7月16日22:00上線TABOO:據官方公告,7月16日22:00,LBank藍貝殼上線TABOO.
1900/1/1 0:00:00