libsnark庫代碼層次非常清晰。libsnark也給出了SNARK相關算法的全貌,各種Relation,Language,Proof System。為了更好的生成R1CS電路,libsnark抽象出protoboard和gadget,方便開發者快速搭建電路。在閱讀該示例代碼前,請仔細閱讀libsnark的源代碼分析:零知識證明 - libsnark源代碼分析
唯一有點遺憾的,libsnark沒有給個完整的電路構造實例,入門者想搭建自己的電路,剛開始有點摸不著頭腦。
為了方便入門者編寫自己的電路,同事寫了個基于libsnark構造電路,并生成并驗證電路的實例:
https://github.com/StarLI-Trapdoor/libsnark_sample
加密衛星公司Cryptosat和DoraHacks在國際空間站完成零知識證明實驗:1月12日消息,加密衛星開發商 Cryptosat 和全球黑客馬拉松組織者 DoraHacks 合作,在國際空間站 (ISS) 上進行了第一個在太空中發射零知識 (ZK) 證明系統的成功實驗。DoraHacks 和 Cryptosat 表示,在國際空間站上進行的實驗證明了基于衛星的計算環境能夠執行使用 ZK 證明協議所需的部分可信設置過程。 Cryptosat 稱,ZK 證明實驗的成功是證明空間計算環境有效性的重要一步,Cryptosat 正在尋求將一組立方體衛星送入軌道并建立其衛星群。[2023/1/13 11:09:04]
入門者,可以基于這個示例開發自己的電路。選擇默克爾樹作為電路的示例,因為在零知識證明的應用中,大量的使用默克爾樹數據結構。
零知識證明技術開發公司StarkWare推出第一個公開版本Cairo 1.0:1月6日消息,零知識證明技術開發公司 StarkWare 宣布推出第一個公開版本的 Cairo 1.0,Cairo 于 2020 年作為圖靈完備的編程語言首次推出,用于高效編寫 STARK 可證明的程序。Cairo 1.0 中最重要的變化之一是語法,新版本的 Cairo 允許編寫更安全的代碼。Cairo 1.0 還引入了 Sierra,這是一種新的中間表示,可確保每次 Cairo 運行都可以得到證明。StarkWare 表示,預計在接下來的幾周內,提供與舊版本相同的 Cairo 1.0 功能,對 StarkNet 合約的支持將在即將到來的 StarkNet Alpha 版本中加入。[2023/1/6 10:24:18]
該示例構造了一條merkle路徑的驗證電路,生成并驗證證明。merkle樹的深度為3,并且merkle樹的計算采用sha256散列函數。代碼結構比較清晰,merkle目錄中的main.cpp是主函數。circuit目錄下的merklecircuit.h是電路的實現。整個項目用cmake進行編譯。
徐明星:以太坊2.0和零知識證明技術將使以太坊成為真正的區塊鏈操作系統:金色財經報道,OKX創始人徐明星發推特表示,2023年將非常有趣,以太坊2.0和零知識證明技術將使以太坊成為真正的區塊鏈操作系統。[2022/12/28 22:11:35]
電路名為MerkleCircuit,主要依賴兩個gadget:merkle_authentication_path_variable和merkle_tree_check_read_gadget。merkle_authentication_path_variable提供了merkle樹的一條路徑。merkle_tree_check_read_gadget檢查給定一個葉子節點,是否能計算出正確的root。
實現一個電路,主要實現兩個接口函數:
a16z:零知識證明保護去中心化和隱私,將取得一系列進展:4月15日消息,a16z發文《去中心化的速度:零知識證明的進步》表示,隨著區塊鏈吸引了數以百萬計的用戶,并且它們所承載的應用程序的復雜性不斷提高,圍繞隱私和可擴展性的兩個關鍵需求已經出現。需要識別的一個關鍵趨勢是,雖然正在為其中許多應用開發專用硬件,但也有一項運動正在優化消費者級硬件的算法,以保護去中心化和隱私。這一趨勢的一個特別好的例子是零知識證明。
我們目前正處于一個非常早期的時刻,零知識證明計劃將取得一系列進展。我們已經從零知識領域中極少數面向消費者的應用程序,發展到在很短的時間內為隱私和可擴展性提供應用程序和區塊鏈的整個生態系統。像這樣的新技術最令人興奮的一點是,很難預測另一面到底是什么樣子。[2022/4/15 14:27:35]
generate_r1cs_constraints - 生成R1CS,該電路比較簡單,只要讓依賴的兩個gadget,生成R1CS即可。
Filecoin:Filecoin網絡已成為最大的零知識證明網絡:Filecoin發表博客稱,目前Filecoin已成為最大的零知識證明(zk-SNARK)網絡。據官方數據顯示,目前Filecoin網絡每日會運行6至7百萬次零知識證明,每一個零知識證明中包含了超過1億個約束電路證明。目前Filecoin網絡的可信配置已支持最高128M大小的電路證明,單個證明最大已超過100M,而Zcash最高僅支持2M。此外,目前Filecoin實現了通過SnarkPack將10個零知識證明捆綁至單次證明中,并正在研究零知識證明聚合以實現將數千個零知識證明聚合至單次證明中。硬件支持方面,Filecoin將零知識證明中高度可并行化的部分交由GPU完成,將CPU和內存釋放出來進行較為復雜的計算,進一步提高了零知識證明的效率。[2021/7/14 0:51:01]
generate_r1cs_witness - 給所有的變量進行賦值。該電路,需要賦值的變量有root,leaf(葉子節點),和葉子節點配套的默克爾路徑,以及默克爾路徑對應的地址信息(也就是每一層的節點的位置,左邊還是右邊)。
整個電路最復雜的就是電路的構造函數,申請變量,創建gadget。其中重點講一講,set_input_sizes函數。libsnark的框架中,使用簡單的區分public和private變量的模型。通過set_input_sizes函數,設置前幾個變量為public變量。
pb.set_input_sizes(root_digest->digest_size);也就是說,該電路的公開變量為root的bit個數。
確定了電路的實現,看看main函數,如何生成和驗證證明。
在main函數中定義了merkle樹計算需要的一些類型:
FieldT默認是bn256橢圓曲線的的Fr,默克爾樹計算采用是sha256算法。
3.1 setup
實現了generate_read_keypair函數,生成pk/vk。仔細看一下generate_read_keypair函數,邏輯簡單清晰:構造MerkleCircuit,在生成R1CS后,調用r1cs_gg_ppzksnark_generator生成pk/vk。
pk存放在merkle_pk.raw文件中,vk存放在merkle_vk.raw中。
3.2 prove
prove邏輯,首先從輸入參數構造一個完整的merkle樹,并根據輸入選定了默克爾路徑。通過generate_read_proof函數生成證明。該函數邏輯也比較清晰:
構造MerkleCircuit,在生成R1CS后,設置各個變量的值。接著通過r1cs_gg_ppzksnark_prover生成證明。
3.3 verify
在獲知vk,證明以及公開信息(root)的基礎上,調用r1cs_gg_ppzksnark_verifier_strong_IC的接口完成驗證。這也就是verify_read_proof函數的邏輯。
在編譯之前,同步該項目依賴的libsnark庫:
git submodule update --init --recursive4.1 編譯
mkdir build; cd build; cmake ..編譯完成,merkle目錄下會生成merkle的可執行文件。
4.2 可信設置(trusted setup)
./merkle setup4.3 生成證明
./merkle prove [data1] [data2] [data3] [data4] [data5] [data6] [data7] [data8] [index]prove命令,需要提供原始的3層merkle樹的8個葉子節點,并指定需要證明的第幾個葉子節點對應的路徑(index指明)。
4.4 驗證
./merkle verify [root]其中,root信息是在prove中生成過程中打印出來的root信息(也是公開信息)。如果驗證通過,就說明存在一條能生成root的merkle路徑,雖然沒有公開路徑的具體信息。
總結:
libsnark庫代碼層次非常清晰,并抽象出protoboard和gadget,方便開發者快速搭建電路。本文給出了一個基于libsnark庫開發的完整電路示例。示例實現了3層默克爾樹的一條默克爾路徑的驗證。其中默克爾樹采用sha256的散列函數。
Tags:MERARKERKNBSAmerican AkitaDark.BuildBerserk Financenbs幣發行量
BTC跌破39700美元:火幣全球站數據顯示,BTC短線下跌,跌破39700美元,現報39689.08美元,日內跌幅達到7.88%,行情波動較大,請做好風險控制.
1900/1/1 0:00:00行情數據顯示,當前BTC報價9977美元,本周最高觸及10500美元,創下2019年9月中旬以來新高.
1900/1/1 0:00:00Terra創始人Do Kwon:除了中本聰,我們將是全球最大的BTC單一持有者:3月30日消息,Terra創始人Do Kwon近期在接受Fungible Times采訪時表示.
1900/1/1 0:00:00當下區塊鏈和產業融合、通證經濟走上時代舞臺的浪潮。區塊鏈行業一直分幣圈和鏈圈之說,區塊鏈本身就具有技術和金融雙屬性,有人看技術,有人看幣價,但談及產業區塊鏈,一定需要連接技術和金融的.
1900/1/1 0:00:00從BTC 2014-2020年長期走勢能看出,大方向上整體是向上攀升的,BTC大部分時間運行在一個上升通道內,每次觸及通道下邊線都是階段性底部蓄勢階段,隨后一段時間便出現一波趨勢性拉升行情.
1900/1/1 0:00:00提供系統和追蹤錯誤并不是每個人都會覺得有趣的事情,但 Erin Grasmick 會覺得有趣。Erin 有計算機科學學位,她一直以為自己會成為一名程序員.
1900/1/1 0:00:00