零知識證明是區塊鍊開發者值得關注的密碼學技術,本文整理了11個主流的零知識證明開發庫,希望有助于你在自己的項目中學習并利用零知識證明技術。
用自己熟悉的語言學習以太坊DApp開發: Java | Php Python .Net / C# Golang Node.JS Flutter / Dart
1、libsnark
libsnark是SCIPR Lab開發的zkSNARK方案實作,開發語言為C++,應用于zcash等多個項目。
libsnark主要包括三部分:通用證據系統、基礎電路庫和應用示例。
libsnark下載下傳位址:
https://github.com/scipr-lab/libsnark3、ZoKrates
ZoKrates是一個用于以太坊零知識證明應用開發的zkSNARK工具箱,利用ZokRates提供的插件,你可以直接在
Remix中開發零知識證明應用。
ZoKrates的開發語言主要為Rust。
ZoKrates下載下傳位址:
https://github.com/Zokrates/ZoKrates3、snarkjs
snarkjs是zkSARNK方案的javascript實作庫,支援原始的8points協定和 Groth協定。利用snarkjs你可以進行可信設定、生成證據并驗證證據。
snarkjs使用iden3自己的circom編譯器對DSL定義的電路進行編譯。
snarkjs下載下傳位址:
https://github.com/iden3/snarkjs4、circom
circom是iden3設計的zk-snark電路描述DSL,circom npm包含了使用該DSL描述的電路的編譯器。
circom下載下傳位址:
https://github.com/iden3/circom5、wasmsnark
wasmsnark是一個采用原生Web Assembly開發的快速的zkSnark證據生成和驗證工具,其速度可媲美libsnark,可以用于在浏覽器中生成zkSnark證據并進行驗證。
wasmsnark也是iden3出品,目前僅支援groth16。
wasmsnark下載下傳位址:
https://github.com/iden3/wasmsnark6、gnark
gnark是consenSys開發的一個zkSARNK實作,采用Go語言,使用類似GO的DSL描述電路。目前支援groth16。
https://github.com/ConsenSys/gnark7、go-snark
go-snark是一個采用go語言實作的zkSNARK開發庫,目前支援Groth16協定和Pinocchio協定。
go-snark下載下傳位址:
https://github.com/arnaucube/go-snark8、xJsnark
xJsnark是開發zk-SNARK電路的高層架構,其目标是填補進階語言開發與性能之間的鴻溝。xJsnark提供一組可以讓開發者在較高層級編寫zk-SNARK電路的特性,同時也提供了削減所生成的電路成本的技術,進而使采用架構開發的電路性能接近手工開發的電路性能。
xJsnark采用Java開發,包含前端用于電路設計的Jetbrains擴充和後端的電路生成單元。
xjsnark下載下傳位址:
https://github.com/akosba/xjsnark9、bellman
bellman是一個用于開發zk-SNARK電路的Rust庫,它提供電路接口、基礎結構以及一些基本電路實作,例如布爾和數值抽象。
bellman下載下傳位址:
https://github.com/zkcrypto/bellman10、zksnark-rs
zksnark-rs是一個用于建立和利用零知識證據的Rust庫,提供了基礎的電路描述語言,目前支援Groth16。
zksnark-rs下載下傳位址:
https://github.com/republicprotocol/zksnark-rs11、Pysnark
pysnark是Python開發的zk-snark方案實作,支援Pinocchio協定,支援生成用于以太坊的智能合約用于驗證零知識證據。
pysnark下載下傳位址:
https://github.com/Charterhouse/pysnark原文連結:
11個主流零知識證明開發庫 — 彙智網