路印協議zkSNARK可信設定的多方計算儀式

買賣虛擬貨幣
Loopring開啟了zkSNARK可信設定的多⽅計算儀式,可信設定分為兩個階段,路印開啟的是第⼆個階段的可信設定。背景介紹Loopring使⽤的libsnark中零知識證明的演算法是Groth26,Groth26分為證明和驗證兩步:

證明者需要計算以下三個多項式:

驗證者需要驗證以下等式相等:

這其中需要⼀些公共引數,也稱為有毒廢料:

但是這些引數是要丟棄的,否則就可以偽造證明,協議的安全性就沒法保證了。

如果項⽬方自己⽣成這些引數然後宣稱丟棄了這些引數,很難說服他⼈真的丟棄了,可信設定就是多個參與⽅⼀起設定這些公共引數,只要任意⼀⽅丟棄了引數,整個協議就安全了。

可信設定的兩個階段

可信設定有兩個階段,第一階段是永續Tau(τ)計算,這⼀階段的計算結果可被多個使⽤零知識證明的專案共享,路印也參與了這個階段的計算並丟棄了有毒廢料。

第⼆階段是在第一階段的基礎上,生成電路相關的引數。

第一階段

第⼀階段計算的引數如下:

第二階段

第⼆階段是⽣成與電路相關的引數:

可信設定如何做到可信

⽐如公共引數中有橢圓曲線G1上的點α,假設初始⽣成點為G ,現在有兩個參與者Alice和Bob以及協調者:

Alice選擇⼀個隨機數α1並且計算 ο1=α1*G,

Bob選擇⼀個隨機數α2並且計算 ο2=α2*ο1= (α1α2)*G,

協調者根據Beacon選擇一個隨機值α3,計算 α=α3*ο2= (α1α2α3)*G.

根據橢圓曲線的性質,知道最終的點α和初始生成點G,是無法得到α1α2α3,只要任何⼀個參與者丟掉了自己的隨機值αi,這樣最終的α任何人都不知道怎麼產生的,協議就安全了。

每個階段的最後都需要引入Beacon選擇隨機值,因為有可能有的參與者會精心選擇一個隨機值控制中間的計算結果,加入Beacon可以解決這種問題。

Beacon一般選擇還未到來的比特幣區塊的hash,Loopring在開啟第二階段之前就已經公佈了將要使用比特幣高度602168的hash作為Beacon,選取第一階段的第11個結果使用Beacon計算第一階段的引數。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;