市場營銷論文選題方向東莞網(wǎng)絡(luò)排名優(yōu)化
1. 引言
arkworks定位為zkSNARK編程的Rust生態(tài)。其開源代碼見:
- https://github.com/arkworks-rs/
arkworks目前已廣泛用于大量項目中,如:Aleo、anoma、celo、Espresso、Findora、Manta、Mina、Nimiq、penumbra等等。
參與arkworks開源實現(xiàn)的contributors眾多:
arkworks通過通用抽象和模塊化的設(shè)計,其總體工具棧架構(gòu)為:
其中:
-
1)Algebra(通用有限域、曲線和多項式接口層):希望達(dá)成的效果為:很容易添加實現(xiàn)新的域或曲線;性能與特定手工優(yōu)化的實現(xiàn)相當(dāng)甚至更優(yōu)。不希望有大量重復(fù)冗余的代碼和工作量。
- 所有SNARKs都需要高效有限域運算(ark-ff),以及基于這些有限域的高效多項式運算(ark-poly)。
- 許多流行的SNARKs(如Groth16、Marlin、PLONK、Halo等)還要求實現(xiàn)擴域(ark-ff) 以及基于這些擴域的 橢圓曲線(ark-ec為抽象的各種traits,ark-curves為具體的橢圓曲線實現(xiàn))。
基于人類工程學(xué)考慮,為實現(xiàn)橢圓曲線,相應(yīng)的流程為:
- 1.1)實現(xiàn)相關(guān)的域
- 1.2)實現(xiàn)該曲線
- 1.2.1)指定曲線方程式系數(shù)。
- 1.2.2)指定cofactor和generator。
如上所示,arkworks抽象出的接口非常簡單高效,很容易實現(xiàn)新曲線,如:
- 以太坊、ZCash、Algorand使用的:BLS12-381,以及相應(yīng)的Jubjub和Bandersnatch曲線。
- 以太坊使用的:BN254曲線。
- Mina和ZCash使用的:Palla和Vesta 2-cycle曲線。
- Celo和Aleo使用的:BLS12-377,以及相應(yīng)的BW6和CP6曲線。
- MNT6-298和MNT4-298 2-cycle曲線。
- MNT4-753和MNT6-753 2-cycle曲線。
同時arkworks模塊化的設(shè)計,其通用曲線接口規(guī)范,很容易在不同曲線間切換,如:
arkworks的通用實現(xiàn),與特定專業(yè)且手工優(yōu)化實現(xiàn),性能相當(dāng)或更優(yōu):
-
2)SNARK開發(fā)(通用SNARK和約束系統(tǒng)接口層):主要關(guān)心的是:性能優(yōu)化;數(shù)學(xué)實現(xiàn);易于比較和benchmark。不關(guān)心曲線細(xì)節(jié),以及約束生成。
模塊化目的是:通過通用SNARK接口,使得易于在不同證明系統(tǒng)和多項式承諾方案間切換。
人類工程學(xué)考慮為:代碼應(yīng)與數(shù)學(xué)公式匹配,以便于審計和發(fā)現(xiàn)bug。如以Groth16 Verifier為例:
-
3)約束系統(tǒng)編程(通用SNARK應(yīng)用框架):直接編寫代數(shù)約束是痛苦的。有多種高級方法來編寫約束系統(tǒng)并編譯為代數(shù)約束,但需要在性能和人類工程學(xué)中做權(quán)衡。
其關(guān)注的點是:好的性能;具備人類工程需的約束編寫體驗。不關(guān)注的點是:SNARKs細(xì)節(jié),以及曲線細(xì)節(jié)。
以Karatsuba乘法為例:
而arkworks的約束編寫與直觀算法匹配,符合人類工程學(xué)設(shè)計,易于審計:
參考問下
[1] 2022年4月視頻 arkworks: Rust Ecosystem for zkSNARKs