libsnark庫代碼層次非常清晰。libsnark也給出了SNARK相關算法的全貌,各種Relation,Language,Proof System。為了更好的生成R1CS電路,libsnark抽象出protoboard和gadget,方便開發者快速搭建電路。在閱讀該示例代碼前,請仔細閱讀libsnark的源代碼分析:零知識證明 - libsnark源代碼分析
唯一有點遺憾的,libsnark沒有給個完整的電路構造實例,入門者想搭建自己的電路,剛開始有點摸不著頭腦。
為了方便入門者編寫自己的電路,同事寫了個基于libsnark構造電路,并生成并驗證電路的實例:
https://github.com/StarLI-Trapdoor/libsnark_sample
DeGate 發布發展藍圖,將優先實現基于零知識證明技術的以太坊二層訂單薄交易協議:據官方消息,以太坊二層交易協議 DeGate 發布最新發展藍圖,對原有的發展路線進行了調整,將優先上線訂單薄交易,并最終形成訂單薄交易、AMM 交易、保證金交易三者并存的產品架構。
DeGate 表示,隨著 Layer2、以太坊 2.0 等技術的落地,區塊鏈使用成本將大幅降低,因此更能滿足交易者需求、資金利用率更高的訂單薄交易有可能產生更大的市場需求。DeGate 的訂單簿交易系統將擁有即時掛單撤單、掛單撤單免手續費、maker 交易免手續費、taker 直接交易等功能或優勢。[2021/5/26 22:46:41]
入門者,可以基于這個示例開發自己的電路。選擇默克爾樹作為電路的示例,因為在零知識證明的應用中,大量的使用默克爾樹數據結構。
零知識證明系統Bulletproofs+代碼獲準可在門羅幣協議中使用:12月30日,門羅幣發推宣布,零知識證明系統Bulletproofs+的代碼現已獲得許可,可在Monero協議中使用,以替代現有的Bulletproofs零知識證明系統。新系統將使得門羅交易結構變得更小,錢包交易速度更快以及網絡驗證速度更快。此外,官方表示,該代碼具有功能性并包括對基礎算法的測試,若考慮將來在門羅幣網絡升級中進行部署,則應該由第三方進行審核。[2020/12/30 16:04:23]
該示例構造了一條merkle路徑的驗證電路,生成并驗證證明。merkle樹的深度為3,并且merkle樹的計算采用sha256散列函數。代碼結構比較清晰,merkle目錄中的main.cpp是主函數。circuit目錄下的merklecircuit.h是電路的實現。整個項目用cmake進行編譯。
加拿大央行研究人員:零知識證明目前不能用于CBDC系統:金色財經報道,加拿大央行的研究人員在一份新分析報告中表示,零知識證明和類似的面向區塊鏈網絡隱私的加密方法“尚處于起步階段”,還沒有準備好在中央銀行數字貨幣(CBDC)系統中廣泛部署。[2020/6/30]
電路名為MerkleCircuit,主要依賴兩個gadget:merkle_authentication_path_variable和merkle_tree_check_read_gadget。merkle_authentication_path_variable提供了merkle樹的一條路徑。merkle_tree_check_read_gadget檢查給定一個葉子節點,是否能計算出正確的root。
聲音 | CFTC專員:繼續看好隱私幣的零知識證明技術:據AMBCrypto消息,近日,美國商品期貨交易委員會(CFTC)專員Brian Quintenz接受采訪時表示,盡管存在AML(反洗錢)的問題,但對零知識證明協議持積極態度。政府接受任何形式的隱私幣的可能性很小,加密貨幣交易平臺也禁止用戶進行不受監控的交易,這也是為什么Monero沒有在Coinbase上線的原因。[2019/6/28]
實現一個電路,主要實現兩個接口函數:
generate_r1cs_constraints - 生成R1CS,該電路比較簡單,只要讓依賴的兩個gadget,生成R1CS即可。
generate_r1cs_witness - 給所有的變量進行賦值。該電路,需要賦值的變量有root,leaf(葉子節點),和葉子節點配套的默克爾路徑,以及默克爾路徑對應的地址信息(也就是每一層的節點的位置,左邊還是右邊)。
動態 | 0x 協議推出基于零知識證明技術的 StarkDEX 測試版,每秒可處理逾 550 筆交易:去中心化交易協議 0x 宣布推出去中心化交易基礎設施 StarkDEX,并提供了 Alpha 測試版供模擬交易。StarkDEX 由 0x 與零知識證明技術開發公司 StarkWare 合作開發,目的是使用 STARKs 技術突破非監管交易的無形限制,使加密貨幣交易所為用戶提供大規模而無對手風險的交易。0x 表示目前 StarkDEX 每區塊最多可批量處理 8000 筆交易,每秒可處理逾 550 筆交易,手續費成本則降低 200 倍。[2019/6/4]
整個電路最復雜的就是電路的構造函數,申請變量,創建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的散列函數。
2月26日,根據信報財經新聞,針對完善監管,香港財政司司長陳茂波在新一份《財政預算案》表示,會進一步加強香港的打擊洗錢及恐怖分子資金籌集制度.
1900/1/1 0:00:00作者:Helen Partz | 編譯者:MayaCHESS系統將遇到新對手DESS這家新公司被稱為ClearPay.
1900/1/1 0:00:00BTC跌破46500美元關口 日內跌幅為5.91%:火幣全球站數據顯示,BTC短線下跌,跌破46500美元關口,現報46489.0美元,日內跌幅達到5.91%,行情波動較大,請做好風險控制.
1900/1/1 0:00:00顯然,在過去的三年中,加密貨幣支付正變得越來越流行,尤其用于發展中國家的點對點支付。然而,同樣明顯的是,無論大商家還是小商家,都不想處理接受加密貨幣作為支付方式面臨的兩個主要障礙:波動性和安全性.
1900/1/1 0:00:00金色財經 區塊鏈2月14日訊 紐約州參議院將審議兩項法案,旨在推動該州區塊鏈技術的使用和發展.
1900/1/1 0:00:001、一個人只要一直持有比特幣,他的財產就會隨著幣價的增長而增長,他只要躺著睡大覺,沒有任何勞動,卻剝削了別人創造的勞動財富首先這樣說是錯的,現在許多人認為只有工人農民的勞動才有價值.
1900/1/1 0:00:00