libsnark庫代碼層次非常清晰。libsnark也給出了SNARK相關算法的全貌,各種Relation,Language,Proof System。為了更好的生成R1CS電路,libsnark抽象出protoboard和gadget,方便開發者快速搭建電路。在閱讀該示例代碼前,請仔細閱讀libsnark的源代碼分析:零知識證明 - libsnark源代碼分析
唯一有點遺憾的,libsnark沒有給個完整的電路構造實例,入門者想搭建自己的電路,剛開始有點摸不著頭腦。
為了方便入門者編寫自己的電路,同事寫了個基于libsnark構造電路,并生成并驗證電路的實例:
https://github.com/StarLI-Trapdoor/libsnark_sample
歐盟或將在數字身份框架中包含零知識證明:金色財經報道,根據一份新聞稿,歐盟新的eID將允許公民通過歐洲數字身份錢包在線識別和驗證自己,而無需求助于商業提供商。此舉解決了當前實踐中產生的對信任、安全和隱私的擔憂。
Circle 歐盟政府事務高級主管Jonas Fredriksen強調該提案將如何促進數字經濟中的新商業模式和機遇。公司可以開發依賴于零知識證明和eID解決方案的創新產品和服務。[2023/2/16 12:11:30]
入門者,可以基于這個示例開發自己的電路。選擇默克爾樹作為電路的示例,因為在零知識證明的應用中,大量的使用默克爾樹數據結構。
該示例構造了一條merkle路徑的驗證電路,生成并驗證證明。merkle樹的深度為3,并且merkle樹的計算采用sha256散列函數。代碼結構比較清晰,merkle目錄中的main.cpp是主函數。circuit目錄下的merklecircuit.h是電路的實現。整個項目用cmake進行編譯。
多鏈Web3生態Hacker資助計劃Dora Grant DAO首輪零知識投票環節結束:11月14日消息,社區驅動的多鏈Web3生態開源極客資助計劃Dora Grant DAO已于北京時間11月13日23:59在開發者激勵平臺DoraHacks.io關閉首輪投票通道。投票最終結果和零知識證明文件將于14日晚八時公布。首期20萬美金Grant獎金將會根據投票結果的排序進行發放。
Dora Grant DAO計劃旨在持續支持在以下三個領域的多鏈Web3開源極客團隊:多鏈Web3核心基礎設施和工具,加密原生應用,加密-前沿科技交叉領域。[2022/11/14 13:01:29]
電路名為MerkleCircuit,主要依賴兩個gadget:merkle_authentication_path_variable和merkle_tree_check_read_gadget。merkle_authentication_path_variable提供了merkle樹的一條路徑。merkle_tree_check_read_gadget檢查給定一個葉子節點,是否能計算出正確的root。
FMex已完成零知識證明開發工作:據了解,FMex目前已完成零知識證明開發工作,平臺啟動運營時將同步上線。通過零知識證明可實現平臺資產數據公開透明,不可偽造。屆時社區用戶可通過開源工具驗證資產數據。[2020/5/26]
實現一個電路,主要實現兩個接口函數:
generate_r1cs_constraints - 生成R1CS,該電路比較簡單,只要讓依賴的兩個gadget,生成R1CS即可。
generate_r1cs_witness - 給所有的變量進行賦值。該電路,需要賦值的變量有root,leaf(葉子節點),和葉子節點配套的默克爾路徑,以及默克爾路徑對應的地址信息(也就是每一層的節點的位置,左邊還是右邊)。
動態 | 三星SDS采用零知識證明增強其企業區塊鏈隱私性:據coindesk消息,三星企業技術部門SDS (Samsung SDS)正在使用零知識證明(zero-knowledge proof, ZKPs)來增強其Nexledger區塊鏈的隱私保護。該公司周四表示,它已與總部位于以色列的QEDIT建立了合作關系,在不披露保密信息的情況下,在一個共享的賬簿上記錄和驗證資產轉移。此舉突顯出采用分布式賬本技術的公司面臨的挑戰之一,向網絡廣播交易,可能會暴露敏感的客戶數據,并向競爭對手泄露信息。[2019/11/14]
整個電路最復雜的就是電路的構造函數,申請變量,創建gadget。其中重點講一講,set_input_sizes函數。libsnark的框架中,使用簡單的區分public和private變量的模型。通過set_input_sizes函數,設置前幾個變量為public變量。
聲音 | CFTC專員:繼續看好隱私幣的零知識證明技術:據AMBCrypto消息,近日,美國商品期貨交易委員會(CFTC)專員Brian Quintenz接受采訪時表示,盡管存在AML(反洗錢)的問題,但對零知識證明協議持積極態度。政府接受任何形式的隱私幣的可能性很小,加密貨幣交易平臺也禁止用戶進行不受監控的交易,這也是為什么Monero沒有在Coinbase上線的原因。[2019/6/28]
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的散列函數。
比特幣本周已經穩定在10000美元以上,對于一類加密貨幣來說,這是一個相當不錯的數字,因此大部分人可能想知道全球究竟有多少人持有至少1個比特幣.
1900/1/1 0:00:00金色周刊是金色財經推出的一檔每周區塊鏈行業總結欄目,內容涵蓋一周重點新聞、行情與合約數據、礦業信息、項目動態、技術進展等全行業動態。本文是其中的產業周刊,帶您一覽本周的區塊鏈產業動態.
1900/1/1 0:00:00英國-荷蘭石油天然氣公司殼牌(Shell)成為最新一家進入區塊鏈領域的知名企業。該公司已經宣布了利用區塊鏈平臺Energy Web Foundation (EWF)開拓新市場的計劃.
1900/1/1 0:00:002020年開年至今,“減半”似乎是市場關心的最大主題,沒有之一。以比特幣為首的多個項目都將迎來區塊獎勵減半或是減產。不久前,某交易平臺要銷毀未產出的平臺幣的決定,引發市場高漲的熱情.
1900/1/1 0:00:00元界DNA于2月18日宣布登陸上線頭部數字資產平臺BiKi和富比特,此時的DNA已連續兩日位列前一百市值幣種漲幅第一,價格更是沖破0.036USDT.
1900/1/1 0:00:00大帝怎么看? BTC: 技術上看,比特幣1小時K線圖沿布林通道緩慢運行,BOLL呈平口狀態。附圖指標,成交量處于持續萎縮狀態,DMI四線搓揉在一起,RSI數值36.
1900/1/1 0:00:00