這篇文章最初發表於 中等的.
我們很自豪地宣布 比特幣 現在支持PLONK。 PLONK如何工作的詳細說明,可以參考我們之前的解釋, 第1部分 和 第2部分.
我們之前已經實現 格羅斯16,最小和最有效的SNARK 構造。但是,它需要對每個電路進行可信設置。通過消除對每個電路可信設置的需要,PLONK 既減輕了對該過程安全性的擔憂,又確保沒有安全的多方計算 (MPC) 設立儀式 如果將來電路發生變化,例如關鍵錯誤修復,將再次需要。通用且可更新的設置儀式,例如 Tau 的永恆力量, 可重複用於PLONK 中的任何電路。它使部署新電路和升級現有電路變得更加容易和安全。
在比特幣上運行你的第一個PLONK
我們在現有的中添加了PLONK 支持 snarkJS 庫,與Circom 完全兼容。為Groth16 開發的所有Circom 電路都可以直接在PLONK 中重複使用,無需任何更改。可以找到完整的PLONK 驗證器代碼 這裡,連同一個 測試 在Javascript 中。生成PLONK 驗證者類似於 開發Groth16 驗證器 在snarkJS 中。
您需要先安裝Circom 編譯器和我們的snarkJS。
1.設計電路
用Circom 語言實現電路。例如,這個名為“factor.circom”的簡單電路/程序證明了人們知道將整數“n”分解為兩個整數而不會洩露整數。該電路有兩個名為“p”和“q”的私有輸入和一個名為“n”的公共輸入。有關如何使用Circom 的更多信息,您可以參考 https://docs.circom.io。
2.編譯電路
使用以下命令編譯電路:
3. 開始新的**powers of tau**儀式
‘new’ 命令用於啟動**powers of tau** 儀式。
最後,我們驗證到目前為止的協議:
4. 設置
這將為電路生成一個驗證密鑰,並使用PLONK 驗證該密鑰。
5.導出驗證碼
我們將驗證密鑰從“circuit_final.zkey”導出到“verification_key.json”。
6. 計算見證人
首先,我們創建一個文件“input.json”,其中包含具有以下內容的電路輸入:
接下來,我們使用從編譯電路中獲得的“factor.wasm”來計算見證:
7. 創建證明
它使用證明密鑰和見證人使用PLONK 生成證明。
8. 導出一個sCrypt 驗證器
這輸出一個 智能合約 文件“verifier.scrypt”,其中包含驗證鏈上證明所需的所有代碼。
您可以在本地驗證它:
9. 部署驗證者
您現在可以部署驗證程序 到比特幣。裹 驗證者.scrypt 在測試合同中 PlonkVerifier 如下。
現在你可以使用 sCrypt IDE 部署它。
右鍵單擊並選擇 部署合約:調試.
合約編譯完成後,將在幾分鐘內完成,應彈出以下面板。點擊 部署.
如果一切順利,應該已經部署了驗證者合約。
10.驗證證明
接下來,您需要從 證明.json 進入 稱呼 面板並單擊 C全部解鎖().
如果一切正常,您應該會在支出交易中看到經過驗證的證明。
接下來是什麼?
恭喜!你剛剛在比特幣上創建了你的第一個PLONK 證明。到目前為止,我們已經實現了Groth16 和PLONK。任何 證明系統 得益於比特幣的可編程性和智能合約的實現方式 可擴展性. 現在是時候實現您最喜歡的證明系統了,包括Marlin、Sonic、Halo、Bulletproof 和STARK。
觀看:BSV 全球區塊鏈大會演示、BSV 上的智能合約和計算
width=”560″ height=”315″ frameborder=”0″ allowfullscreen=”allowfullscreen”>
比特幣新手?查看CoinGeek 的 初學者的比特幣 部分,了解更多關於比特幣(中本聰最初設想)和區塊鏈的終極資源指南。