前言:從一鍋雞湯說起
當讀者剛開始接觸零知識證明的概念時,面臨第一關就是如何搞懂突如其來的大量名詞,比如離散對數問題、雙線性對還有Groth16、PLONK、RedShift等。不妨我們借用“烹飪”這個生活場景來類比其中的層次關系。
如果把“密碼學”比做“烹飪”,那么上個系列中對雙線性對的學習就類似于學習燉湯前先簡單了解的高壓鍋的工作原理,而zkSNARK則相當于在說明如何用高壓鍋燉出美味雞湯。
由此可見,雙線性對是類似基礎工具的角色:就像高壓鍋既可以燉雞湯也可以燉排骨湯,雙線性對既可以用于零知識證明也可以用于構造簽名等密碼學算法。而Groth16、PLONK、RedShift等,它們同屬于zkSNARK,屬于同一層次,如果沿用上述類比,那大概就是對應用高壓鍋做湯的風味選擇了。Groth16算法是JensGroth提出的一種zkSNARK算法,相關論文不僅對已有算法進行改進,而且討論了基于配對的非交互式零知識論證的證明大小問題。Groth16因其精簡的證明大小和高效的驗證效率,在ZCash等項目中多有應用,是最經典的零知識證明算法之一。
IMF今日發布的加密貨幣科普視頻實為兩年前舊聞,且存在諸多疏漏:國際貨幣基金組織IMF今日在推特上發布了一條關于加密貨幣的科普視頻,這段時長兩分鐘的視頻最初發布于2018年6月。該視頻稱加密貨幣是“貨幣進化的下一步”,但沒有特別提到DLT、區塊鏈,甚至是代幣名稱等術語。BTC、XRP和ETH只出現在說明加密交易的圖形中。盡管這段視頻到目前為止已經獲得了超過13.7萬的點擊量和2900個贊,但來自加密社區的許多反應都是批評的,他們指出了信息中的漏洞和似乎具有誤導性的措辭。
Reddit用戶nanooverbtc稱:“他們犯了很多錯誤,比如把私鑰稱為密碼。”該視頻也沒有討論挖礦或加密貨幣供應。Kraken策略師Pierre Rochard等知名人士表示:“可證明的稀缺性是比特幣有趣的原因,你忘了提這一點。”(Cointelegraph)[2020/8/24]
上一個系列中我們完整介紹了零知識證明中用到的橢圓曲線和雙線性配對相關的基礎知識。本系列通過動手算的方式,以Groth16算法為例,循序漸進地介紹zkSNARK的基本原理。
動態 | 報告:區塊鏈等熱點詞促使童書科普百科類成交額同比增速最高:近日,京東圖書與艾瑞咨詢聯合發布了《2019中國圖書市場報告》。報告指出,AI、5G、區塊鏈、機器人、VR、智能家居、AR這些熱點詞,不斷點燃科技熱潮,科技在改變大眾生活的同時,也吸引了越來越多家長的關注,從小培養孩子對科技的興趣和熱愛。因此童書中科普百科類成交額同比增速最高,占比將近40%。[2020/1/8]
本篇是“動手算Groth16”的上篇,主要介紹如何從程序轉化為電路和描述算數電路的一種約束系統R1CS。下篇會介紹如何從R1CS轉化為多項式相關的約束問題,并且詳細給出完整的Groth16從頭到尾的手算步驟。
程序與電路
初始接觸通用零知識證明算法時,讀者可能最容易感到疑惑的地方就是各種資料中頻繁提到的“電路”一詞。這里的“電路”是指什么?它又如何等價地對同一個問題進行描述呢?回答這些問題最簡單的方式就是使用具體的一個算法例子進行說明。比如我們有下面一段程序代碼,如何將其轉化為等價的電路呢?
動態 | 幣安科普MimbleWimble算法:幣安官方推特今日發布隱私算法Mimblewimble的科普貼,在下方留言區大量網友留言猜測是否是基于 Mimblewimble算法的隱私幣Grin或者Beam即將登陸幣安交易所,其中猜測Grin的呼聲更高。[2019/9/2]
▲需要被轉化為電路的代碼
這里需要注意到程序中值被存儲在變量中,而電路中的值是用電路門之間的連線表示的。這其中有個關鍵的不同是:變量的值是會隨著時間變化的,而電路中連線的值是固定不能改變的。因此首先我們通過引入一些中間量的方式表示隨循環而不斷變化的各階段的變量值,中間量命名為tmp1,tmp2...這樣的形式:
動態 | 浙江衛視節目科普支付寶區塊鏈防偽溯源產品:昨日,在浙江衛視播出的科普綜藝欄目《智造將來》現場,支付寶首次展示了支付寶區塊鏈防偽溯源產品,以接地氣的方式公開向大眾展示區塊鏈在生活中的應用。[2019/3/4]
▲引入輔助的中間量
最后我們可以轉化為只有加法門和乘法門的算數電路:
▲電路示意圖
這里除去輸入和輸出外,其他的圓圈代表了電路中的門:可以是乘法門或者加法門。而門和門之間的連線對應了程序中的中間變量在某個時刻的值。
如果站在更高的角度思考,其實可以發現有很多結構都能實現“運算”功能,比如說神經元組成的人腦,比如馮·諾伊曼結構的計算機,甚至更早的機械計算器和當今的人工神經網絡。算數電路也是這樣的一種能夠完成一定運算的結構,而且基于這種結構我們能夠完成對計算輸入和過程的“零知識證明”。因此通用零知識證明算法普遍引入了“電路”這個運算結構并且會研究,如何更好的將高級語言描述的問題轉化為等價的算法電路。
財政部副部長朱光耀:數字經濟還處在發展的過程中,要以科普、推動的態度來推進數字經濟發展:今日,在中國發展高層論壇2018年會上,財政部副部長朱光耀表示:“數字經濟還處在發展的過程中,要以科普、推動的態度來推進數字經濟發展。也要關注數字經濟的其他影響,包括稅收征管、反洗錢監管措施等要跟上。”[2018/3/25]
上面例子中約束較多,會給后續的“動手算”產生較多的計算量壓力,因此在下文中我們以一個新的例子重新展示這個轉化的過程。本系列后續文章都會以這個新的例子為主線進行敘述,從而真實展示證明和驗證的具體計算過程。新例子的程序代碼如下:
這里涉及到4個連線以及兩個等式關系。這兩個等式關系用更規范的方式重寫一下可以幫助讀者看地更清晰:
觀察這兩個式子的特點,可以發現兩個等式關系其實都可以寫作A×B=C的形式,其中A、B和C都是變量的“加權組合”。這并非巧合,而是我們有意為之。通過這種形式我們避免了對加法門的約束產生額外開銷,而是在對乘法門進行約束的同時零開銷的對加法關系進行約束,這是groth16的特點之一。在Groth16算法中,加法門和乘法門的地位并不是等價的,我們更關心乘法門。
下面對a,b,c,d四個變量賦予編號,以便下一步的處理,按照groth16的習慣我們將輸出排列在輸入之前:
可以看到除了連線a、b、c和d,還有一個特殊的連線“1”,“1”其實可以看作是一個特殊的公共輸入,他的存在讓我們在算法中能更容易地處理常量。“1”的值總是1。
從電路到R1CS
本部分之前先回顧一下向量的內積概念,向量的內積是從兩個同維向量得到一個標量的運算,其幾何意義對應了“投影”這個概念。比方說兩個二維向量的乘法:
·=2×4+3×1=11
回過頭看剛才的結果,因為A×B=C這個形式的存在,我們其實能夠進一步的對這些等式關系進行抽象。抽象的目的是為了方便編程處理和下一步的討論。以式子(2)為例,我們其實可以認為他是如下的形式:
根據上面介紹的向量內積,可以發現這里的A,B,C其實都是向量內積的形式:
這里的s其實就是全部的連線的值,如果證明者P是真的計算過這個電路的,則P能夠獲知s的值,否則P無法得知s的值。我們將這個s稱為witness。因此通過上面的向量a,b,c我們就能夠對s進行一定的約束,即s應該滿足:
這就構成了一個一階約束,這樣的一個約束對應了電路中的一個乘法門。如果我們將所有的約束聯立起來,就得到一個一階約束系統。通過R1CS我們可以更方便的形式化描述一個零知識證明問題,從而為我們后續解決該問題提供了條件。
下篇我們會介紹如何將R1CS描述轉換為多項式描述,并且通過完整的計算過程展示groth16算法的相關內容,敬請關注。
Tags:ROTGRO區塊鏈MBLBenchmark Protocolsquidgrow幣機制區塊鏈工程專業學什么女生比較好mbl幣創始人
由NFL、NFLPA與DapperLabs合作推出的NFL系列已經上線,球迷可通過官方網站加入waitlist,有機會收集到自己最喜愛的球星精彩瞬間.
1900/1/1 0:00:00據Cointelegraph消息,11月25日,美國證券交易委員會宣布將于當地時間12月2日的投資者咨詢會議上展開關于題為“在新技術面前.
1900/1/1 0:00:00來源:科技日報 記者?劉艷 元宇宙席卷一切,科技巨頭紛紛表態,但依然跳不出著眼于自身業務領域的投射,如同看一場又一場盲人摸象。元宇宙呈現的是什么,還處在比拼想象力的階段.
1900/1/1 0:00:00據CoinDesk12月20日消息,波卡區塊鏈框架智能合約層GearTechnologies完成1200萬美元融資,Blockchange領投.
1900/1/1 0:00:00Bytom:各位好!我們很高興在這里見面。Sonya是一位NFT藝術家、創作者和插畫家,她被邀請參加本期活動討論加密和她激動人心的NFT之旅,和你需要知道的關于如何成為一個NFT藝術家的任何事情.
1900/1/1 0:00:00據金融界報道,12月9日,由中國移動通信聯合會及元宇宙產業委員會主辦的“元宇宙:靈境與科學藝術”紀念錢學森先生誕辰110周年暨2021元宇宙產業論壇在京舉行.
1900/1/1 0:00:00