iT邦幫忙

2023 iThome 鐵人賽

DAY 14
1
Web 3

淺談ZK Rollup系列 第 14

Day 14 - 零知識證明EP10:zk-SNARKs工具

  • 分享至 

  • xImage
  •  

前一篇介紹了zk-SNARKs的流程,還沒看的可以點這邊觀看,而當看完zk-SNARKs的流程後,如果想開發的話,可以使用什麼工具呢?如果想要直接從零開始刻出zk-SNARKs確實是有點困難,因為你必須得要了解他底層的邏輯才行,而zk-SNARKs針對所有需要證明的命題都需要轉換成數學式,同時裡面需要做到許多橢圓曲線的運算,如果真的要從零做出來,難度可謂是極高的,但是開發程式總是「不要重複發明輪子」,像是zk-SNARKs這種會在區塊鏈上發展的技術,已經都有人開發出相關的工具,方便開發者使用,來實作出zk-SNARKs,這邊便推薦iden3實驗室所開發出來的工具吧!
https://ithelp.ithome.com.tw/upload/images/20230929/20162286jYocCClCcE.png

snarkjs

他的名稱就表示出他是一個做zk-SNARKs的工具了,這個工具已經實作出zk-SNARKs的三大演算法,所以使用者只要將想證明的命題轉成數學式,接下來就可以安心交給他了,他可以幫你產出這次證明所需要的證明鑰匙與驗證鑰匙,當你準備好公開資料與私有資料時,他也可以幫你產生出證明,同時間,他也可以幫你轉出放在區塊鏈驗證的程式,所以你連放在區塊鏈的程式都不用自己動手寫,相當方便,而這邊是他的官方GitHub,裡面有詳細的實作教學,這邊就不帶大家動手做一遍了!

Circom

snarkjs已經是一個相當方便的工具了,但是用起來還是有一點麻煩,因為他需要將我們要證明的命題轉換成數學式才行,我們一般人可能就不太會將我們所要證明的命題轉換成他所特定的數學式,不過不要擔心,iden3實驗室之後又推出一個新的工具 Circom 來幫助使用者解決轉換數學式的問題,Circom是一個編譯器,他可以將他自訂的一個Circom語言轉換成snarkjs所需要的數學式,而這個Circom語言已經變得非常人性化了,寫起來有點像是在寫硬體描述語言,他們都稱寫zk-SNARKs的程式叫做寫電路,我覺得這個比喻蠻不錯的,因為對於不同問題的數學式都是相同的,給定一樣的輸入,一定會給一樣的輸出,而且輸入與輸出個數在一開始就已經定義好了,這些都不會動了,就跟電路一模一樣,同時間iden3實驗室還有根據常用的運算給出工具包circomlib,讓開發難度大幅降低,有興趣的人可以前往他們Circom的官方文件觀看,或者上網搜尋相關文章研究,裡面都有清楚的教學。
https://docs.circom.io/circom-logo-black.png

結論

除了iden3實驗室之外,其他也有需多實驗室或者企業也有開發zk-SNARKs相關的開發工具,其他的開發工具有像是libsnark(C++)、Halo2(Rust)與Gnark(Golang)等等,所以需要開發zk-SNARKs相關應用的,都可以做更深入的調查,然而在開發過程中,如果需要用到驗證雜湊或者驗證簽章,都會聽到或者看到一個詞,叫做「ZK-friendly」,這個friendly到底是友善什麼?怎麼會突然跑出另外一個ZK開頭的東西?這個就留到明天繼續討論吧!


上一篇
Day 13 - 零知識證明EP09:zk-SNARKs流程
下一篇
Day 15 - 零知識證明EP11:ZK-friendly
系列文
淺談ZK Rollup30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言