另类专区另类专区亚洲,日韩国产欧美精品综合二区,日本黄色免费在线视频,天天爽夜夜爽免费看

  • 售前

  • 售后

Nova:零知識證明的新篇章

元宇宙 kinze
2023-7-11 20:20 1138人瀏覽 0人回復(fù)
摘要

原文標(biāo)題:《 Nova:零知識證明的新篇章 》原文來源:Huobi Research引言零知識證明是密碼學(xué)中的一種重要技術(shù),它允許一個人向另一個人證明一個陳述是真實的,而無需透露任何其他信息。這種技術(shù)在許多領(lǐng)域都有廣泛的 ...

原文標(biāo)題:《 Nova:零知識證明的新篇章 》

原文來源:Huobi Research

引言


零知識證明是密碼學(xué)中的一種重要技術(shù),它允許一個人向另一個人證明一個陳述是真實的,而無需透露任何其他信息。這種技術(shù)在許多領(lǐng)域都有廣泛的應(yīng)用,包括身份驗證、區(qū)塊鏈和安全計算等。Nova 是微軟開發(fā)的一種新型零知識證明系統(tǒng),它使用了一種名為松弛的秩一約束系統(tǒng)(Relaxed Rank-1 Constraint Systems,Relaxed R 1 CS)的技術(shù),以提高證明的效率和靈活性。最后一章節(jié)對源碼進行詳細(xì)解讀。


Nova 的優(yōu)點


Nova 的主要優(yōu)點在于其使用的松弛的 R1CS 技術(shù)。R1CS 是一種用于構(gòu)建零知識證明的系統(tǒng),它可以用于證明一個人知道滿足一組多項式等式的解,而不必透露任何關(guān)于解的信息。然而,傳統(tǒng)的 R1CS 系統(tǒng)需要在證明過程中使用大量的隨機性,這會導(dǎo)致證明的生成和驗證過程非常復(fù)雜和耗時。Nova 通過使用松弛的 R1CS 來解決這個問題,它允許在證明中使用更少的隨機性,從而大大提高了證明的效率。


Nova 還具有其他一些優(yōu)點。例如,它支持增量計算,這意味著可以逐步計算復(fù)雜的函數(shù),而不必一次性計算整個函數(shù)。這在處理大規(guī)模數(shù)據(jù)或進行復(fù)雜計算時非常有用。此外,Nova 還支持多項式計算,這使得它可以處理更復(fù)雜的證明任務(wù)。


Nova 的缺點


盡管 Nova 具有許多優(yōu)點,但它也有一些缺點。首先,由于 Nova 使用的是松弛的 R1CS,因此它的證明可能不如傳統(tǒng)的 R1CS 系統(tǒng)那么強大。這是因為松弛的 R1CS 允許在證明中使用更少的隨機性,這可能會降低證明的安全性。然而,Nova 的開發(fā)者已經(jīng)采取了一些措施來解決這個問題,例如使用更強大的密碼學(xué)算法和更復(fù)雜的證明策略。


其次,Nova 的實現(xiàn)相對復(fù)雜,這可能會增加使用和維護的難度。Nova 使用了許多高級的密碼學(xué)技術(shù),如多項式計算、群操作和隨機預(yù)言機等,這需要深入理解這些技術(shù)才能有效地使用和修改 Nova。


Nova 在零知識證明領(lǐng)域的重要地位


Nova 在零知識證明領(lǐng)域中占據(jù)了重要的地位。它的出現(xiàn),為零知識證明的發(fā)展開辟了新的道路。Nova 采用的松弛的 R1CS 技術(shù),使得證明的生成和驗證過程更加高效,這對于大規(guī)模的零知識證明應(yīng)用至關(guān)重要。此外,Nova 還支持增量計算和多項式計算,這使得它可以處理更復(fù)雜的證明任務(wù),進一步擴大了零知識證明的應(yīng)用范圍。


Nova 的源碼解讀


https://github.com/microsoft/Nova


在 src/ 目錄下,有以下幾個重要的子目錄:


bellperson/:這個目錄可能包含了關(guān)于 Bellman-Ford 算法的代碼。


gadgets/:這個目錄可能包含了一些用于構(gòu)建 zk-SNARK 證明的工具。


provider/:這個目錄可能包含了一些提供者的代碼,如 keccak.rs 可能是實現(xiàn) Keccak 哈希函數(shù)的代碼。


spartan/:這個目錄可能包含了關(guān)于  Spartan 協(xié)議的代碼。


traits/:這個目錄可能包含了一些 Rust traits,用于定義一些公共的行為。


src/bellperson/mod.rs 文件的內(nèi)容:


這個模塊主要用于生成 R1CS(Rank-1 Constraint Systems,一種用于 zk-SNARKs 的約束系統(tǒng))。


它包含了三個子模塊:


r1cs:這個模塊可能包含了關(guān)于 R1CS 的代碼。


shape_cs:這個模塊可能包含了關(guān)于形狀約束系統(tǒng)的代碼。


solver:這個模塊可能包含了關(guān)于解決約束系統(tǒng)的代碼。


在測試部分,它定義了一個函數(shù) synthesize_alloc_bit,這個函數(shù)接受一個約束系統(tǒng),然后添加一些約束來檢查輸入的兩個比特是否確實是比特。然后,它定義了一個函數(shù) test_alloc_bit_with,這個函數(shù)首先創(chuàng)建一個形狀


src/bellperson/r 1 cs.rs 文件的內(nèi)容:


這個文件主要定義了兩個 trait:`NovaWitness` 和 `NovaShape`,它們分別提供了從實現(xiàn)者獲取 `R 1 CSInstance` 和 `R 1 CSWitness`,以及獲取 `R 1 CSShape` 和 `CommitmentKey` 的方法。


- `NovaWitness` trait 有一個方法 `r1cs_instance_and_witness`,它接受一個 `R 1 CSShape` 和一個 `CommitmentKey`,然后返回一個 `R 1 CSInstance` 和一個 `R 1 CSWitness`。這個 trait 為 `SatisfyingAssignment` 結(jié)構(gòu)體實現(xiàn),這意味著任何 `SatisfyingAssignment` 都可以使用這個方法來獲取一個 `R 1 CSInstance` 和一個 `R 1 CSWitness`。


- `NovaShape` trait 有一個方法 `r 1 cs_shape`,它返回一個 `R 1 CSShape` 和一個 `CommitmentKey`。這個 trait 為 `ShapeCS` 結(jié)構(gòu)體實現(xiàn),這意味著任何 `ShapeCS` 都可以使用這個方法來獲取一個 `R 1 CSShape` 和一個 `CommitmentKey`。


這個文件還定義了一個函數(shù) `add_constraint`,它接受一個約束系統(tǒng)和三個線性組合,然后在約束系統(tǒng)中添加一個新的約束。這個函數(shù)被 `NovaShape` 的實現(xiàn)者在生成 `R 1 CSShape` 時使用。


總的來說,這個文件的主要作用是提供了一種方式,使得可以從一個滿足特定條件的系統(tǒng)(如 `SatisfyingAssignment` 或 `ShapeCS`)中生成 R 1 CS 的實例、證人、形狀和承諾密鑰。


src/bellperson/shape_cs.rs


這個文件定義了一個名為 `ShapeCS` 的結(jié)構(gòu)體,它實現(xiàn)了 `ConstraintSystem` trait。`ShapeCS` 是用于創(chuàng)建 R 1 CS 形狀的約束系統(tǒng)。


`ShapeCS` 結(jié)構(gòu)體包含以下幾個字段:


- `named_objects`: 這是一個映射,用于存儲與路徑關(guān)聯(lián)的對象。


- `current_namespace`: 這是一個字符串向量,用于存儲當(dāng)前的命名空間。


- `constraints`: 這是一個向量,用于存儲所有添加到 `ShapeCS` 的約束。


- `inputs`: 這是一個字符串向量,用于存儲所有的輸入。


- `aux`: 這是一個字符串向量,用于存儲所有的輔助輸入。


`ShapeCS` 結(jié)構(gòu)體實現(xiàn)了 `ConstraintSystem` trait,這意味著它提供了以下幾個方法:


- `alloc`: 這個方法用于分配一個新的變量。


- `alloc_input`: 這個方法用于分配一個新的輸入變量。


- `enforce`: 這個方法用于添加一個新的約束。


- `push_namespace`: 這個方法用于推入一個新的命名空間。


- `pop_namespace`: 這個方法用于彈出當(dāng)前的命名空間。


- `get_root`: 這個方法用于獲取根約束系統(tǒng)。


這個文件還定義了一些輔助函數(shù),如 `proc_lc` 和 `compute_path`,它們分別用于處理線性組合和計算路徑。


總的來說,這個文件的主要作用是提供了一種方式,使得可以從一個滿足特定條件的系統(tǒng)(如 `ShapeCS`)中生成 R 1 CS 的形狀。


src/bellperson/solver.rs


這個文件定義了一個名為 `SatisfyingAssignment` 的結(jié)構(gòu)體,它實現(xiàn)了 `ConstraintSystem` trait。`SatisfyingAssignment` 是用于創(chuàng)建 R 1 CS 實例和證人的約束系統(tǒng)。


`SatisfyingAssignment` 結(jié)構(gòu)體包含以下幾個字段:


- `a_aux_density`, `b_input_density`, `b_aux_density`: 這些是 `DensityTracker` 類型的字段,用于跟蹤查詢的密度。


- `a`, `b`, `c`: 這些是向量,用于存儲 A、B、C 多項式的評估結(jié)果。


- `input_assignment`, `aux_assignment`: 這些是向量,用于存儲變量的賦值。


`SatisfyingAssignment` 結(jié)構(gòu)體實現(xiàn)了 `ConstraintSystem` trait,這意味著它提供了以下幾個方法:


- `new`: 這個方法用于創(chuàng)建一個新的 `SatisfyingAssignment` 實例。


- `alloc`: 這個方法用于分配一個新的輔助變量。


- `alloc_input`: 這個方法用于分配一個新的輸入變量。


- `enforce`: 這個方法用于添加一個新的約束。


- `push_namespace`, `pop_namespace`: 這些方法用于操作命名空間,但在這個上下文中并沒有實際的操作。


- `get_root`: 這個方法用于獲取根約束系統(tǒng)。


- `is_extensible`, `extend`: 這些方法用于擴展約束系統(tǒng)。


總的來說,這個文件的主要作用是提供了一種方式,使得可以從一個滿足特定條件的系統(tǒng)(如 `SatisfyingAssignment`)中生成 R 1 CS 的實例和證人。


"src/circuit.rs",它定義了 Nova 協(xié)議中的增強電路(Augmented Circuit)。這個電路包括一個步驟電路( Step Circuit)和 Nova 的非交互折疊方案中的驗證器電路。


文件中定義了以下幾個主要的結(jié)構(gòu)體和方法:


- `NovaAugmentedCircuitParams`:這個結(jié)構(gòu)體包含了電路的參數(shù),包括 limb 寬度、limb 數(shù)量和一個布爾值表示這是否是主電路。


- `NovaAugmentedCircuitInputs`:這個結(jié)構(gòu)體包含了電路的輸入,包括參數(shù)、i、z 0、zi、U、u 和 T。


- `NovaAugmentedCircuit`:這個結(jié)構(gòu)體是 Nova 增強電路的主要定義,它包含了電路的參數(shù)、只讀常量、輸入和步驟電路。它還定義了一些方法,如 `alloc_witness`(分配證人)、`synthesize_base_case`(合成基礎(chǔ)案例)和 `synthesize_non_base_case`(合成非基礎(chǔ)案例)。


- `synthesize` 方法:這是 Nova 增強電路的主要合成方法,它首先分配所有的證人,然后根據(jù)是否是基礎(chǔ)案例來合成電路,并最后輸出計算的哈希值和 u.X[ 1 ]。


這個文件還包含了一些測試代碼,用于測試遞歸電路的功能。


總的來說,這個文件的主要作用是定義了 Nova 協(xié)議中的增強電路,這個電路是 Nova 協(xié)議的核心部分,它包括了一個步驟電路和一個驗證器電路,并提供了一種方式來合成這個電路。


"src/constants.rs",它定義了一些常量,這些常量在整個項目中被廣泛使用。以下是這些常量的含義:


- `NUM_CHALLENGE_BITS`: 這個常量定義了挑戰(zhàn)的位數(shù),值為 128 。挑戰(zhàn)通常是由證&

免責(zé)聲明:本文不構(gòu)成投資建議,用戶應(yīng)考慮本文中的任何意見、觀點或結(jié)論是否符合其特定狀況,及遵守所在國家和地區(qū)的相關(guān)法律法規(guī)。 歡迎轉(zhuǎn)載分享!
轉(zhuǎn)載請注明本文地址:
如有文章侵犯了您的權(quán)利,請聯(lián)系本站站長,我們將在第一時間刪除相關(guān)內(nèi)容,謝謝!
分享
推薦閱讀
立足于香港,定位于傳播、交流全球Web3區(qū)塊鏈資訊情報社區(qū),集區(qū)塊鏈行業(yè)新聞、Web、資訊、行情、策略、百科、社區(qū)等一站式區(qū)塊鏈產(chǎn)業(yè)信息服務(wù)平臺,我們追求及時、全面、專業(yè)、準(zhǔn)確的資訊與數(shù)據(jù),致力于為區(qū)塊鏈創(chuàng)業(yè)者以及數(shù)字貨幣投資者提供最好的產(chǎn)品和服務(wù)。
  • 商務(wù)合作

  • 微信公眾號

  • 二維碼

网站地图闽icp备44218674号