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