本文將繼續會持續進行更新,更新後的版本將在 Github 和知乎上發佈,歡迎關注。
Github 地址:https://github.com/sec-bit/learning-zkp/blob/master/zkp-resource-list.md
知乎賬號:安比實驗室 SECBIT(https://www.zhihu.com/org/secbit/activities)
零知識證明技術是現代密碼學三大基礎之一,由 S.Goldwasser、S.Micali 及 C.Rackoff 在 20 世紀 80 年代初提出。早期的零知識證明由於其效率和可用性等限制,未得到很好的利用,僅停留在理論層面。直到近年來,零知識證明的理論研究纔開始不斷突破,同時區塊鏈也爲零知識證明創造了大展拳腳的機會,因而走進大衆視野。
零知識證明這項“黑科技”隨着它的熱度逐漸增加,相關的學習資源也慢慢豐富起來了。但是由於,一方面零知識證明背後的原理頗爲複雜,且內容繁多;另一方面,針對零知識證明的學習資源質量參差不齊,尚未形成系統。因此對絕大多數讀者來說,學習零知識證明的難度依然很大。
本文收集了關於零知識證明的一些學習資料(包括科普文章,論文,開源倉庫及相關學習網站等),並對這些資源進行了整理分析,希望能對大家有所幫助。
由於整理時間有限和筆者自身知識的侷限性,文章存在不足之處,歡迎糾正、補充和探討。
1. 故事中零知識證明
初次接觸零知識證明的小夥伴一定會問,究竟什麼是零知識證明呢?它到底在做什麼?
推薦幾篇適合小白的文章:
-
「推薦文章一」一個數獨引發的慘案:零知識證明(Zero-Knowledge Proof)
推薦值:❤️❤️❤️❤️❤️
難度值:⭐️
這篇文章的作者是著名的 Ghost 和 Spectre 這兩個協議的創始團隊的領隊 Aviv Zohar。文章非常接地氣且通俗易懂,通過三個好朋友一起玩數獨遊戲的故事介紹了什麼是零知識證明。
原文鏈接:https://medium.com/qed-it/the-incredible-machine-4d1270d7363a
中文翻譯:https://zhuanlan.zhihu.com/p/34072069
另外這篇文章中引用了兩篇介紹零知識證明的論文,也值得看一看。
-
「推薦文章二」How to explain zero-knowledge protocols to your children
推薦值:❤️❤️❤️
難度值:⭐️
這篇來自上個世紀的文章,正如它的標題一樣,作者以給孩子講故事的口吻,講了一個阿里巴巴與四十大盜的故事,這個故事後來也成爲了介紹零知識證明的經典故事。以故事的形式講述零知識證明使得這篇文章理解起來也很簡單。
-
「推薦文章三」Cryptographic and Physical Zero-Knowledge Proof Systems for Solutions of Sudoku Puzzles
推薦值:❤️❤️❤️
難度值:⭐️⭐️⭐️
如何在不泄漏任何信息的前提下向別人證明你有一個數獨問題的答案呢?同樣這個問題也是介紹零知識證明的經典案例。論文中提出了使用一個零知識證明協議解決這個問題的方案,這篇論文相比較於前兩篇文章,理論性更強一些,篇幅更長,協議的介紹更爲詳細,但總體來說還算比較好理解。
原文鏈接:http://www.wisdom.weizmann.ac.il/~naor/PAPERS/sudoku.pdf
-
「推薦文章四」Zero knowledge proofs: a tale of two friends
推薦值:❤️❤️
難度值:⭐️⭐️
與前面幾篇文章類似,這篇文章也是通過講故事的形式來向讀者介紹零知識證明的。文中 Prover 要向 Verifier 證明其知道魔法的解法。這篇文章篇幅較短,內容理解起來難度較小。
原文鏈接:https://medium.com/hackernoon/zero-knowledge-proofs-a-tale-of-two-friends-d7a0ffac3185
-
「推薦文章五」Explain Like I’m 5: Zero Knowledge Proof (Halloween Edition)
推薦值:❤️❤️
難度值:⭐️⭐️
這同樣是一篇講故事的文章,哈哈~
這篇文章講述了一個糖果和百萬富翁的故事(Candy bars and millionaires),文章同樣篇幅較短,內容理解起來難度較小。
原文鏈接:https://medium.com/hackernoon/eli5-zero-knowledge-proof-78a276db9eff
興許是因爲如何解釋零知識證明的問題並不簡單,所以絕大部分入門級的科普文章都是從講故事開始的。
2. 深入理解零知識證明
零知識證明技術涉及的知識點繁多,性質也各不相同。瞭解了什麼是零知識證明以後,就需要對零知識證明更深刻的理解,推薦以下幾篇零知識證明系列科普文。
-
「推薦文章六」零知識證明: 拋磚引玉
推薦值:❤️❤️❤️❤️
難度值:⭐️⭐️⭐️
作者是 Zerocash 協議的創建者之一,密碼學大神 Matthew Green[1]。這兩篇文章幾乎涵蓋了學習零知識證明原理所有的基本概念,文章思路很清晰。
-
第一篇文章主要從零知識證明的起源開始講起,然後同樣藉助了地圖三染色和 “時光機”來對零知識證明進行介紹。
原文鏈接:https://blog.cryptographyengineering.com/2014/11/27/zero-knowledge-proofs-illustrated-primer/
中文翻譯版本:https://ethfans.org/posts/zero-knowledge-proofs-illustrated-primer
-
這篇文章在第一篇的基礎上,進一步對零知識證明的三個性質:可靠性,完整性和零知識,展開介紹。另外還結合 Schnorr 協議介紹了交互式和非交互式的概念。
中文翻譯版本:https://ethfans.org/posts/zero-knowledge-proofs-an-illustrated-primer-part-2
-
-
「推薦文章七」安比實驗室零知識證明介紹系列文章
推薦值:❤️❤️❤️❤️❤️
難度值:⭐️⭐️⭐️
這個系列的作者是安比實驗室創始人郭宇,文章與以往的零知識證明科普文章的不同之處就是它沒有單獨去講解零知識的基本原理。而且結合更多的概念和原理,更透徹得將零知識證明技術涉及得諸多原理逐一進行講解,文章專業性較強,還包含了作者大量的思考,但理解起來也較爲直觀易懂,非常適合想要深入理解零知識證明的小夥伴。
另外這個系列的文章還在持續更新中。
-
作爲系列的第一篇,這篇文章首先介紹了「證明」的發展歷程和「零知識」的作用,並舉了一個地圖三染色的例子,然後又對「信息」、「知識」和可滿足電路的概念展開了介紹。
-
探索零知識證明系列二:從「模擬」理解零知識證明:平行宇宙與時光倒流
這篇文章介紹了零知識證明中的一個非常重要的概念——模擬(Simulator),「模擬」可以說是安全協議中核心的核心。文章中藉助 “平行世界” 的假設去理解零知識讀起來也非常有意思。
-
零知識證明有三個重要的性質:可靠性,完整性和零知識。這篇文章探討了可靠性。文章解釋瞭如何藉助「抽取器」和時間倒流的超能力把 Alice 的「知識」完整地「抽取」出來,並可給出了一個與之相關攻擊實例 —— ECDSA 簽名攻擊。
-
探索零知識證明系列四:亞瑟王的「隨機」挑戰:從交互到非交互式零知識證明
這篇文章主要在講零知識證明的信任根基——隨機挑戰。文章對零知識證明協議在兩種不同的形式(交互式和非交互式)下隨機挑戰的方式進行了介紹。另外文章還對交互和非交互形式展開了介紹。
-
-
「推薦文章八」零知識證明:一個略微嚴肅的科普
推薦值:❤️❤️❤️
難度值:⭐️⭐️⭐️⭐️
鄧老師這篇“略微嚴肅”的科普,主要涉及兩部分:1. 交互式證明的巨大威力;2. 零知識證明的定義和那些廣泛流傳的錯誤的例子
-
「推薦文章九」Zero-Knowledge Proofs: A Layman’s Introduction
推薦值:❤️❤️
難度值:⭐️⭐️
這篇文章首先介紹了零知識證明協議中的三個參與者(Creator,Prover,Verifier)以及 Proofs 和 Verification的概念,並對 zkSNARK (一類零知識證明協議)和橢圓曲線的相關資料進行了介紹。
原文鏈接:https://blog.aventus.io/zero-knowledge-proofs-a-laymans-introduction-7020b93beeda
-
「推薦文章十」白話零知識證明(一)
推薦值:❤️❤️
難度值:⭐️⭐️
這篇來自祕猿科技的文章通過阿里巴巴的故事引出了零知識證明的一些概念,並對其進行了介紹。
零知識證明涉及很多很有意思的思想和原理,都很值得探討。在此不得不感嘆於數學與密碼學的精妙之處,也不得不欽佩密碼學家們的厲害。
3. 零知識證明的發展
零知識證明的研究今年來一直有新的進展,密碼學家們提出了各種不同的協議,推薦兩篇文章介紹零知識證明研究的發展過程。
-
「推薦文章十一」區塊鏈學習筆記 (1):零知識證明的江湖
推薦值:❤️❤️❤️
難度值:⭐️⭐️
這篇文章講了自 1895 年提出以來,零知識證明理論研究的發展過程,以及 zk-SNARKs 與零知識證明技術結合起來的發展過程。推薦給想了解零知識理論研究的發展過程的小夥伴。
-
「推薦文章十二」Efficient Cryptographic Arguments and Proofs – Or How I Became a Fractional Monetary Unit
推薦值:❤️❤️❤️
難度值:⭐️⭐️
這篇文章來自UCL信息安全研究人員的博客 Bentham’s Gaze[2],文章介紹了自零知識證明提出以來,這羣研究人員在理論研究上的研究歷程及成果,包括知名的 bulletProof 和 zk-STARK 等。讀完這篇文章相信會對大家深入理解零知識證明的諸多協議有所幫助。
零知識證明迄今爲止發展了三十多年,早期一直停留在理論層面,直到近十年才逐漸取得突破。隨着越來越多研究人員的進場,相信這個領域未來還會有更多令人驚喜的成果。
4. zk-SNARKs 原理
作爲零知識證明領域最知名的一類協議,zk-SNARKs 的理論研究和應用也最爲廣泛。推薦一些介紹 zk-SNARKs 的資料。
-
「推薦文章十三」V 神的 zk-SNARKs 科普文章
推薦值:❤️❤️❤️❤️
難度值:⭐️⭐️⭐️⭐️
V 神的這幾篇文章應該算得上是流傳最爲廣泛的 zk-SNARK 科普文了。不用多說,推薦閱讀。
-
Quadratic Arithmetic Programs: from Zero to Hero
這篇文章詳細介紹了 zk-SNARKs 的實現過程。文中將 zk-SNARKs 的實現分爲以下幾個步驟:
-
computational problem —> 電路
-
電路 —> R1CS
-
R1CS —> QAP
-
QAP —> Linear PCP
-
Linear PCP —> Linear Interactive Proof
-
Linear Interactive Proof —> zkSNARK
原文鏈接:https://medium.com/@VitalikButerin/quadratic-arithmetic-programs-from-zero-to-hero-f6d558cea649
-
-
Exploring Elliptic Curve Pairings
這篇文章介紹了橢圓曲線配對。
原文鏈接:https://medium.com/@VitalikButerin/exploring-elliptic-curve-pairings-c73c1864e627
-
這篇文章主要介紹了匹諾曹協議。
原文鏈接:https://medium.com/@VitalikButerin/zk-snarks-under-the-hood-b33151a013f6
-
-
「推薦文章十四」zcash 官方科普文
推薦值:❤️❤️❤️❤️
難度值:⭐️⭐️⭐️⭐️
這個系列的文章來自 zCash 官方博客。首先介紹了零知識的基本概念以及其應用到 zcash 中的大致思路。隨後 7 篇文章分別對 7 個關鍵點進行了詳細介紹(同態隱藏,多項式盲驗證,KCA,完整的多項式盲驗證,計算到多項式的轉換,匹諾曹協議以及橢圓曲線配對),推薦給想深入瞭解 zk-SNARKs 實現原理的小夥伴。
原文鏈接:
-
What are zk-SNARKs?:https://z.cash/technology/zksnarks/
-
Explaining SNARKs Part I: Homomorphic Hidings https://electriccoin.co/blog/snark-explain/
-
Explaining SNARKs Part II: Blind Evaluation of Polynomials https://electriccoin.co/blog/snark-explain2/
-
Explaining SNARKs Part III: The Knowledge of Coefficient Test and Assumption https://electriccoin.co/blog/snark-explain3/
-
Explaining SNARKs Part IV: How to make Blind Evaluation of Polynomials Verifiable https://electriccoin.co/blog/snark-explain4/
-
Explaining SNARKs Part V: From Computations to Polynomials https://electriccoin.co/blog/snark-explain5/
-
Explaining SNARKs Part VI: The Pinocchio Protocol https://electriccoin.co/blog/snark-explain6/
-
Explaining SNARKs Part VII: Pairings of Elliptic Curves](https://electriccoin.co/blog/snark-explain7/
-
中文翻譯版本鏈接:https://www.jianshu.com/p/b6a14c472cc1、https://www.jianshu.com/p/92f54fc08d58
-
-
「推薦文章十五」Why and How zk-SNARK Works
推薦值:❤️❤️❤️❤️❤️
難度值:⭐️⭐️⭐️
作者將其學習 zk-SNARK 的經驗總結成了一份 PDF 文檔並分成 8 篇文章發佈到了 Medium 上。與大部分的 zk-SNARK 科普文不同,這個系列的文章沒有直接開始講 zk-SNARK,而是從最基本的數學原理講起,講解得非常細緻,特別適合數學和密碼學基礎相對薄弱的小夥伴。
原文鏈接:
-
Why and How zk-SNARK Works 1: Introduction & the Medium of a Proof:https://medium.com/@imolfar/why-and-how-zk-snark-works-1-introduction-the-medium-of-a-proof-d946e931160
-
Why and How zk-SNARK Works 2: Proving Knowledge of a Polynomial:https://medium.com/@imolfar/why-and-how-zk-snark-works-2-proving-knowledge-of-a-polynomial-f817760e2805
-
Why and How zk-SNARK Works 3: Non-interactivity & Distributed Setup:https://medium.com/@imolfar/why-and-how-zk-snark-works-3-non-interactivity-distributed-setup-c0310c0e5d1c
-
Why and How zk-SNARK Works 4: General-Purpose Computation:https://medium.com/@imolfar/why-and-how-zk-snark-works-4-general-purpose-computation-dcdc8081ee42
-
Why and How zk-SNARK Works 5: Variable Polynomials:https://medium.com/@imolfar/why-and-how-zk-snark-works-5-variable-polynomials-3b4e06859e30
-
Why and How zk-SNARK Works 6: Verifiable Computation Protocol:https://medium.com/@imolfar/why-and-how-zk-snark-works-6-verifiable-computation-protocol-1aa19f95a5cc
-
Why and How zk-SNARK Works 7: Constraints and Public Inputs:https://medium.com/@imolfar/why-and-how-zk-snark-works-7-constraints-and-public-inputs-e95f6596dd1c
-
Why and How zk-SNARK Works 8: Zero-Knowledge Computation:https://medium.com/@imolfar/why-and-how-zk-snark-works-8-zero-knowledge-computation-f120339c2c55
-
「推薦文章十六」 zkSNARKs in a nutshell
推薦值:❤️❤️❤️
難度值:⭐️⭐️⭐️
這篇文章對零知識證明做了總結,分成四個部分:
-
編碼成一個多項式問題
-
簡單隨機抽樣
-
同態(Homomorphic)編碼 / 加密
-
零知識
文章首先介紹了零知識證明,然後又講解了zk-SNARKs 的實現,最後分析了將零知識證明結合到以太坊上的作用和方式。
原文鏈接:https://blog.ethereum.org/2016/12/05/zksnarks-in-a-nutshell/
-
-
「推薦文章十七」Zero-knowledge proofs, a board game, and leaky abstractions: how I learned zk-SNARKs from scratch
推薦值:❤️❤️❤️
難度值:⭐️⭐️⭐️
作者堅持一個觀點:學習新技能的一個很好的方法是用它建立一些東西。這篇文章就是在介紹作者是如何通過實現一個小的應用來學習 zk-SNARKs 的。文章主要介紹了作者的實現過程和他的思考,文中有很多好的經驗時候大家學習。
原文鏈接:https://medium.com/@weijiek/how-i-learned-zk-snarks-from-scratch-177a01c5514e
-
「推薦文章十八」零知識證明 - 從QSP到QAP
推薦值:❤️❤️❤️
難度值:⭐️⭐️⭐️
這篇文章主要介紹了 QSP/QAP ,QAP 和 QSP 問題類似。QAP 問題的zkSNARK 的證明驗證過程和 QSP 非常相似。對這部分感興趣的小夥伴推薦讀一讀。
"零知識證明技術就像一個江湖,而 zk-SNARKs 是隻是比較著名的門派。而在這個江湖中,還有很多其他的門派,他們風格各異,使用的武器也不盡相同。"[3] zk-SNARKs 協議涉及的技術構件很多,也較爲複雜,深入學習這部分確實需要下很多功夫。
5. 零知識證明協議
零知識證明協議很多,每個協議的實現也各不相同,有些協議已經應用到了實際的領域,有些還在探索中。推薦幾篇介紹不錯的文章。
-
「推薦文章十九」STARKs 科普
推薦值:❤️❤️❤️❤️
難度值:⭐️⭐️⭐️⭐️
V 神的這個科普系列文章,非常詳細得介紹了 STARKs 的實現,分成三個部分進行講解。
原文鏈接:
-
STARKs, Part I: Proofs with Polynomials:https://vitalik.ca/general/2017/11/09/starks_part_1.html
-
STARKs, Part II: Thank Goodness It's FRI-day:https://vitalik.ca/general/2017/11/22/starks_part_2.html
-
STARKs, Part 3: Into the Weeds:https://vitalik.ca/general/2018/07/21/starks_part_3.html)
-
-
「推薦文章二十」 Understanding PLONK
推薦值:❤️❤️❤️❤️
難度值:⭐️⭐️⭐️⭐️
這篇文章同樣來自 V 神的博客,介紹了 PLONK 的工作原理。PLONK 是一種全新的零知識證明系統,支持通用或可更新的可信設置(trusted setup),作者是 Filecoin 母公司 Protocol Labs 的研究員 Ariel Gabizon 和以太坊隱私交易協議 Aztec Protocol 的兩名研究人員 Zachary J. Williamson、Oana Ciobotaru。
-
「推薦文章二十一」Groth09 筆記
推薦值:❤️❤️
難度值:⭐️⭐️⭐️
這篇文章作者huyuguang,文中對 Groth09 論文[4]的內容進行了總結,對大家學習 Groth09 有所幫助。
原文鏈接:https://github.com/huyuguang/zkpblog/blob/master/groth09.md
-
「推薦文章二十二」 零知識證明 - Groth16 算法介紹
推薦值:❤️❤️
難度值:⭐️⭐️⭐️
Star Li 的這兩篇文章主要從工程應用理解的角度介紹了 Groth16 算法的證明和驗證過程,推薦給學習 Groth16 算法的小夥伴。
原文鏈接
-
零知識證明 - Groth16 算法介紹:https://mp.weixin.qq.com/s/SguBb5vyAm2Vzht7WKgzug
-
零知識證明 - 有關 Groth16 的zk證明的理解:https://mp.weixin.qq.com/s/x1ggw3VplXAIeL87D5bUfw
-
對於零知識證明各個協議介紹的文章還比較有限,隨着應用的增多,相信這方面的文章也會越來越多。
6. 零知識證明在區塊鏈領域的應用
零知識證明技術是隨着區塊鏈的發展逐漸走入大衆視野的,目前零知識證明結合區塊鏈的研究和應用也越來越多。
-
「推薦文章二十三」 一文讀懂區塊鏈中的零知識證明
推薦值:❤️❤️❤️
難度值:⭐️⭐️⭐️
這篇來自BFTF技術社區聯盟的文章介紹了零知識證明在 zcash 和門羅幣上的應用。
-
「推薦文章二十四」How to prove that you know something, without revealing it? Zero-knowledge proofs, ZCash, Ethereum.
推薦值:❤️❤️❤️
難度值:⭐️⭐️
這篇文章介紹了零知識證明在 Zcash 和以太坊上的應用。
-
「推薦文章二十五」Zero-knowledge proofs, Zcash, and Ethereum
推薦值:❤️❤️❤️
難度值:⭐️⭐️
這篇文章介紹了零知識證明在 Zcash 和以太坊上的應用。
原文鏈接:https://blog.keep.network/zero-knowledge-proofs-zcash-and-ethereum-f6d89fa7cba8
-
「推薦文章二十六」零知識證明 - zk-SNARK應用場景分析
推薦值:❤️❤️❤️
難度值:⭐️⭐️
這篇文章介紹了零知識證明在 Zcash,Filecoin項目和 Loopring DEX 3.0 協議中的應用。
-
「推薦文章二十七」Zerocoin: making Bitcoin anonymous
推薦值:❤️❤️❤️❤️
難度值:⭐️⭐️⭐️
這篇文章介紹了 Zerocoin 協議是如何利用 zk-SNARKs 在區塊鏈上實現匿名的。
原文鏈接:https://blog.cryptographyengineering.com/2013/04/11/zerocoin-making-bitcoin-anonymous/
-
「推薦文章二十八」不是程序員也能看懂的ZCash零知識證明
推薦值:❤️❤️❤️
難度值:⭐️⭐️⭐️
這篇文章使用比較通俗易懂的語言介紹了 zCash 如何利用零知識證明實現匿名交易的。
-
「推薦文章二十九」 Monero to Become First Billion-Dollar Crypto to Implement ‘Bulletproofs’ Tech
推薦值:❤️❤️❤️
難度值:⭐️⭐️⭐️
這篇文章介紹了 Monero 如何使用 Bulletproofs 技術實現隱私特性的。
原文鏈接:https://www.coindesk.com/monero-to-become-first-billion-dollar-crypto-to-implement-bulletproofs-tech
-
「推薦文章三十」 zkPoD:區塊鏈,零知識證明與形式化驗證,實現無中介、零信任的公平交易
推薦值:❤️❤️❤️❤️
難度值:⭐️⭐️⭐️
這是安比實驗室今年發佈的基於零知識證明的公平交易協議。
-
「推薦文章三十一」 零知識證明 - Loopring DEX 3.0
推薦值:❤️❤️❤️
難度值:⭐️⭐️⭐️
這篇文章介紹了 Loopring DEX 3.0 協議的零知識證明部分實現原理。
零知識證明的應用正在逐步增加,從最早的公鏈 zCash,Monero,到最近基於以太坊平臺的 zkPoD, Loopring DEX 3.0應用等,零知識證明在區塊鏈領域的應用將越來越多。
7. 零知識證明相關的技術和漏洞分析文章
零知識證明技術涉及的知識內容很多,在實際的應用場景中,零知識證明的實現還存在諸多的挑戰,協議安全,性能等等問題都有可能限制其發展。這一節推薦一些技術分析和漏洞分析的文章。
-
「推薦文章三十二」 A Marlin is One of the Fastest SNARKs in the Ocean
推薦值:❤️❤️❤️
難度值:⭐️⭐️⭐️⭐️
這篇文章來自於博客 Bentham’s Gaze,文章觀點認爲 Marlin 是最快的 SNARKs 方案,並將其與其它的方案進行了比較。
原文鏈接:https://www.benthamsgaze.org/2019/09/19/a-marlin-is-one-of-the-fastest-snarks-in-the-ocean/
-
「推薦文章三十三」How to do Zero-Knowledge from Discrete-Logs in under 7kB
推薦值:❤️❤️❤️
難度值:⭐️⭐️⭐️
這篇文章同樣來自於博客 Bentham’s Gaze,文章介紹了Groth09 論文中的優化方案。
原文鏈接:https://www.benthamsgaze.org/2016/10/25/how-to-do-zero-knowledge-from-discrete-logs-in-under-7kb/
-
「推薦文章三十四」zkSNARK 合約「輸入假名」漏洞致衆多混幣項目爆雷
推薦值:❤️❤️❤️
難度值:⭐️⭐️⭐️
這篇文章的作者是安比實驗室 p0n1,文章介紹了大量零知識證明項目由於錯誤地使用了某個 zkSNARKs 合約庫,引入「輸入假名 (Input Aliasing) 」漏洞,可導致僞造證明、雙花、重放等攻擊行爲發生,且攻擊成本極低。
-
「推薦文章三十五」硬核!360高級安全專家彭峙釀以Zcash爲例,談零知識性證明的安全和隱私問題
推薦值:❤️❤️❤️❤️
難度值:⭐️⭐️⭐️
這篇文章是對360高級安全專家彭峙釀博士在 CCF 會議上分享報告的整理。報告中介紹了比特幣的隱私問題,零知識證明技術,zk-SNARKs,以及多個實現漏洞。報告乾貨滿滿。
-
「推薦文章三十六」零知識證明中所涉及的有限域
推薦值:❤️❤️❤️
難度值:⭐️⭐️⭐️⭐️
有限域的計算是實現零知識證明協議的一個非常重要的環境,這篇文章對零知識證明中所涉及導的有限域的知識進行了介紹,非常有用。
原文鏈接:https://github.com/huyuguang/zkpblog/blob/master/有限域.md
8. 零知識證明開源倉庫及介紹
下面介紹幾個熱度比較高的零知識證明實現倉庫及其源碼分析文章,很多的零知識項目都是基於這幾個倉庫的代碼做的。
-
libsnark 是實現一個 C++ 版本的零知識證明庫。
倉庫鏈接:https://github.com/scipr-lab/libsnark
-
「推薦文章三十七」零知識證明 - libsnark源代碼分析
推薦值:❤️❤️❤️
難度值:⭐️⭐️⭐️
-
「推薦文章三十八」零知識證明實戰:libsnark
推薦值:❤️❤️❤️
難度值:⭐️⭐️⭐️
-
-
bellman是Zcash團隊用Rust語言開發的一個zk-SNARK軟件庫,實現了Groth16 算法。
倉庫鏈接:https://github.com/zkcrypto/bellman
-
「推薦文章三十九」零知識證明 - bellman源碼分析
推薦值:❤️❤️
難度值:⭐️⭐️⭐️
原文鏈接:https://github.com/zcash/librustzcash/tree/master/bellman
-
-
libsnark 是實現一個 javascript 版本的零知識證明庫,實現了 Groth16。
倉庫鏈接:https://github.com/iden3/snarkjs
9. 零知識證明相關論文
下面介紹一下零知識證明相關的學術論文,深入學習零知識證明研究成果的小夥伴可以去閱讀以下的這些論文。
推薦值:❤️❤️❤️
難度值:⭐️⭐️⭐️⭐️⭐️
-
1985 年,零知識證明技術首次被提出
-
BulletProof
-
Gro09 提出了一種證明“向量內積”的方法:
原文鏈接:https://link.springer.com/chapter/10.1007/978-3-642-03356-8_12
-
BCC+16 找到了一種將算數電路編碼爲向量的方法,從而把電路可滿足性的證明轉化爲向量內積的證明:
-
BulletProof繼續改進了這種方案:
-
-
zkSNARKs with trusted setup
-
Groth10 引入了preprocessing的步驟,通過可信第三方生成Common Reference String來實現無交互證明:
原文鏈接:https://link.springer.com/chapter/10.1007/978-3-642-17373-8_19
-
GGPR13 引入了另一種算數電路編碼方式,即Quadratic Arithmetic Program(QAP),大大提升了證明的效率:
-
Pinocchio 和 Groth16 等是在此基礎上的改進:
-
-
Ligero: Lightweight Sublinear Arguments Without a Trusted Setup:
-
PLONK:
-
Marlin
-
Sonic
-
Libra
-
Hyrax
-
zk-STARKs
10. 零知識證明學習資料推薦網站
-
推薦值:❤️❤️❤️❤️
這是一個 Github 倉庫,收錄了一系列零知識證明的學習資料
鏈接:https://github.com/matter-labs/awesome-zero-knowledge-proofs
-
推薦值:❤️❤️❤️❤️
這個網站也收錄了一系列零知識證明的學習資料,相對來說學術性更強一些。
-
推薦值:❤️❤️❤️❤️
ZKProof.org 是爲規範零知識證明的使用而形成的一個組織,它的網站上有大量關於零知識證明的資料。
-
推薦值:❤️❤️❤️
這是一個來自UCL信息安全研究人員組成的團隊的博客,它的博客上會經常發佈一些零知識證明的文章。
鏈接:https://www.benthamsgaze.org
參考文獻
[1] https://isi.jhu.edu/~mgreen/
[2] https://www.benthamsgaze.org/about
[3] https://zhuanlan.zhihu.com/p/31651393
[4] https://link.springer.com/chapter/10.1007/978-3-642-03356-8_12
[5] https://github.com/matter-labs/awesome-zero-knowledge-proofs
[6] https://zkp.science/