在 BSV 上创建你的第一个零知识证明程序
ZoKrates 是 zkSNARKs 的工具箱,隱藏了零知識證明 (ZKP) 固有的顯著復雜性。它為開發人員提供了一種類似于 python 的高級語言來編寫他們想要證明的計算問題。
我們擴展了它,使其支持在 BSV 上生成和驗證的證明。
安裝Zokrates
二進制包安裝
下載并使用我們發布的二進制包:
二進制文件可以從我們的 發布頁面 下載。
編譯源碼安裝
git clone -b main https://github.com/sCrypt-Inc/ZoKrates ./build_release.sh cd target/releaseZokrates 工作流程
整個工作流程與原始 ZoKrates 相同,只是驗證步驟是在 BSV 上完成的。
1. 編寫電路
創建一個名為 factor.zok 的新 Zokrates 文件,其內容如下:
// p and q are factorization of n def main(private field p, private field q, field n) {assert(p * q == n);assert(p > 1);assert(q > 1);return; }這個簡單的電路/程序證明了某人知道將整數 n 分解為兩個整數,而無需透露整數。該電路有兩個名為 p 和 q 的私有輸入和一個名為 n 的公共輸入。
2. 編譯電路
使用以下命令編譯電路:
zokrates compile -i factor.zok這會生成兩個對電路進行編碼的文件,一個是二進制格式和一個人類可讀的格式。
3. 設置
這將為該電路生成一個證明密鑰和一個驗證密鑰。
zokrates setup4. 計算見證人
一份證明可以證明證明者知道滿足電路的隱私信息。這個秘密信息被稱為見證人。在以下示例中,7 和 13 是見證,因為它們是 91 的因數。
zokrates compute-witness -a 7 13 91生成一個名為 witness 的文件。
5. 生成證明
它使用證明密鑰和見證人生成證明。
zokrates generate-proof證明文件 proof.json 如下所示:
{"scheme": "g16","curve": "bn128","proof": {"a": ["0x0a7ea3ca37865347396645d017c7623431d13103e9107c937d722e5da15f352b","0x040c202ba8fa153f84af8dabc2ca40ff534f54efeb3271acc04a70c41afd079b"],"b": [["0x0ec1e4faea792762de35dcfd0da0e6859ce491cafad455c334d2c72cb8b24550","0x0985ef1d036b41d44376c1d42ff803b7cab9f9d4cf5bd75298e0fab2d109f096"],["0x265151afd8626b4c72dfefb86bac2b63489423d6cf895ed9fa186548b0b9e3f3","0x301f2b356621408e037649d0f5b4ad5f4b2333f58453791cc24f07d5673349bf"]],"c": ["0x2b75a257d68763100ca11afb3beae511732c1cd1d3f1ce1804cbc0c26043cb6b","0x2f80c706b58482eec9e759fce805585595a76c27e37b67af3463414246fbabbd"]},"inputs": ["0x000000000000000000000000000000000000000000000000000000000000005b"] }6. 導出 sCrypt 驗證程序
這會輸出一個智能合約文件 verifier.scrypt,其中包含驗證證明所需的所有代碼。
zokrates export-verifier-scrypt7. 部署驗證程序
您現在可以將 verifier.scrypt 部署到 BSV 。最簡單的方法是使用 sCrypt IDE。
右鍵單擊并選擇 Deploy Contract: Debug
合約將在幾分鐘內編譯完成,之后應彈出以下面板。單擊部署按鈕。
如果一切順利,應該已經部署了驗證者合約。
8. 驗證證明
接下來,您需要從 proof.json 復制并粘貼到 Call 面板中,然后單擊 Call unlock()。
如果一切正常,通過支出交易可以看到證明通過驗證。
總結
恭喜!你剛剛在 BSV 上創建了你的第一個零知識證明程序。接下來,您可以擴展模板 verifier.scrypt 并添加您自己的業務邏輯。
總結
以上是生活随笔為你收集整理的在 BSV 上创建你的第一个零知识证明程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [考研] 中文自我介绍 | 英文自我介绍
- 下一篇: can‘t open/read file