以太坊價格 以太坊價格
Ctrl+D 以太坊價格
ads
首頁 > TUSD > Info

NBS:零知識證明——基于libsnark的電路構造及證明示例

Author:

Time:1900/1/1 0:00:00

libsnark庫代碼層次非常清晰。libsnark也給出了SNARK相關算法的全貌,各種Relation,Language,Proof System。為了更好的生成R1CS電路,libsnark抽象出protoboard和gadget,方便開發者快速搭建電路。在閱讀該示例代碼前,請仔細閱讀libsnark的源代碼分析:零知識證明 - libsnark源代碼分析

唯一有點遺憾的,libsnark沒有給個完整的電路構造實例,入門者想搭建自己的電路,剛開始有點摸不著頭腦。

為了方便入門者編寫自己的電路,同事寫了個基于libsnark構造電路,并生成并驗證電路的實例:

https://github.com/StarLI-Trapdoor/libsnark_sample

研究機構Geometry將正式啟動并支持采用零知識系統和應用數學的Web3項目:6月28日消息,專注于零知識隱私技術的研究和投資公司Geometry已運營幾個月時間,負責人為Aztec Network前首席執行官Tom Walton-Pocock,團隊成員還包括Celo密碼學負責人Kobi Gurkan和Oiler Network前增長主管Gregoire Le Jeune。Geometry表示,其還獲得了由對沖基金經理Alan Howard支持的孵化器WebN Group的孵化。

Geometry已領投以色列零知識半導體公司Ingonyama的400萬美元種子輪融資,并領投了對NFT市場流動性項目Soap Labs的200萬美元種子輪融資,以及參投了跨鏈基礎設施Socket的種子輪融資。[2022/6/28 1:36:24]

入門者,可以基于這個示例開發自己的電路。選擇默克爾樹作為電路的示例,因為在零知識證明的應用中,大量的使用默克爾樹數據結構。

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]

該示例構造了一條merkle路徑的驗證電路,生成并驗證證明。merkle樹的深度為3,并且merkle樹的計算采用sha256散列函數。代碼結構比較清晰,merkle目錄中的main.cpp是主函數。circuit目錄下的merklecircuit.h是電路的實現。整個項目用cmake進行編譯。

StarkWare已開源零知識證明代碼ethSTARK:零知識證明研發機構StarkWare已在GitHub開源ethSTARK。StarkWare稱,2018年我們獲得以太坊基金會的資助去探索對STARK友好的哈希函數以及開源ZKP代碼。ethSTARK代碼的證明速度將比現有的任何ZKP代碼快20倍。

注:2018年7月份,StarkWare獲得了以太坊基金會提供的400萬美元資助,將研發對STARK友好的哈希函數和技術,并為生態系統提供開源代碼。STARK將允許區塊鏈在兼備隱私和后量子安全的情況下進行大規模擴展(例如分片)。(Github)[2020/7/27]

電路名為MerkleCircuit,主要依賴兩個gadget:merkle_authentication_path_variable和merkle_tree_check_read_gadget。merkle_authentication_path_variable提供了merkle樹的一條路徑。merkle_tree_check_read_gadget檢查給定一個葉子節點,是否能計算出正確的root。

零知識證明研發機構StarkWare將在幾周內開源ethSTARK:零知識證明研發機構 StarkWare 稱,2018年我們獲得以太坊基金會的資助去探索對 STARK 友好的哈希函數以及開源 ZKP 代碼。我們將在幾周內提前完成我們的工作。ethSTARK代碼的運行速度將比現有的任何 ZKP 代碼快20倍。注,2018年7月份,StarkWare稱獲得了以太坊基金會的資助(現金+代幣),將研發對STARK 友好的哈希函數和技術,并為生態系統提供開源代碼。STARK將允許區塊鏈在兼備隱私和后量子安全的情況下進行大規模擴展(例如分片)。[2020/5/26]

實現一個電路,主要實現兩個接口函數:

generate_r1cs_constraints - 生成R1CS,該電路比較簡單,只要讓依賴的兩個gadget,生成R1CS即可。

聲音 | CFTC專員:繼續看好隱私幣的零知識證明技術:據AMBCrypto消息,近日,美國商品期貨交易委員會(CFTC)專員Brian Quintenz接受采訪時表示,盡管存在AML(反洗錢)的問題,但對零知識證明協議持積極態度。政府接受任何形式的隱私幣的可能性很小,加密貨幣交易平臺也禁止用戶進行不受監控的交易,這也是為什么Monero沒有在Coinbase上線的原因。[2019/6/28]

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:ARKERKMERNBSark幣持幣地址ERK價格Merit Circlenbs幣前景

TUSD
LAO:看商業化DAO如何引領VC新浪潮

根據我得到的可靠消息,包括 The LAO 在內的幾個營利性 DAO 項目均將于本月底前正式推出,這是自2月14號 Moloch V2 智能合約部署完成之后,第一批實例化的項目落地.

1900/1/1 0:00:00
COI:Coinbase成為Visa的主要會員和直接發行商

根據Coinbase于2月19日發布的公告,該公司現在是Visa的主要會員,這將允許其直接發行借記卡而無需依賴第三方.

1900/1/1 0:00:00
BTC:比特幣到底有多少分叉幣?

灰度比特幣信托持倉量突破40萬個BTC,新增1807個:數據顯示:美東時間8月6日,灰度比特幣信托(GBTC)持倉量增加了1807個BTC,總持倉已突破40萬個BTC,達401385個.

1900/1/1 0:00:00
COC:金色前哨 | 以太坊EIP 2515提議用“難度凍結”取代“難度炸彈”

以太坊硬分叉協調員James Hancock最近發布的EIP 2515試圖用“難度凍結(Difficulty Freeze)”取代長期存在的“難度炸彈(Difficulty Bomb)”.

1900/1/1 0:00:00
比特幣交易所:這次 比特幣ETF真的全軍覆沒了

美國證券交易委員會再次擊碎了比特幣交易所交易基金的夢想,迄今為止所有 BTC ETF 申請均被拒絕.

1900/1/1 0:00:00
DAO:一文了解DAO的藝術領域應用實踐

我一直認為,藝術是 DAO 在非技術領域的最佳試驗場,而美術作品無疑是藝術領域最為合適的試驗先鋒,事實也是如此,基于 NFT 的藝術作品交易市場在全球范圍內已經形成一股新浪潮.

1900/1/1 0:00:00
ads