證明者需要計算以下三個多項式:
驗證者需要驗證以下等式相等:
這其中需要⼀些公共引數,也稱為有毒廢料:
但是這些引數是要丟棄的,否則就可以偽造證明,協議的安全性就沒法保證了。
如果項⽬方自己⽣成這些引數然後宣稱丟棄了這些引數,很難說服他⼈真的丟棄了,可信設定就是多個參與⽅⼀起設定這些公共引數,只要任意⼀⽅丟棄了引數,整個協議就安全了。
可信設定的兩個階段
可信設定有兩個階段,第一階段是永續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計算第一階段的引數。