本文在Randao實現(xiàn)的基礎(chǔ)上,對一種新型RNG(隨機數(shù)生成器)進行了簡短的思想實驗。Randao是一個DAO(分去中心化自治組織),它使用提交和顯示方案來生成隨機數(shù)。Randao的ZKRandao實現(xiàn)使用zk -snark來消除不顯示預(yù)先提交的哈希值的攻擊。注意,zk -snark不用于匿名。
提交和顯示方案
ZKRandao的提交和顯示方案可以分為兩種:
· 單一秘密計算
· 批量秘密計算
單一秘密計算
1. 收集一個有效的sha3(s)、一個范圍s (s是s的一部分)和一個ZK-snark,證明sha3(s)的s在范圍s內(nèi)。
2. 為sha3(s)顯示s。這可以由步驟1中的發(fā)起者或其他參與者完成(帶有預(yù)先設(shè)置的延遲)。其他參與者可以通過計算范圍S中的值的哈希值并將其與sha3(S)進行比較來計算sha3(S)。
批量秘密計算
1. 收集有效的sha3(s),一個范圍s,其中s是s的一部分,ZK-snark證明sha3(s)的s在范圍s內(nèi)。
2. 為sha3(s)顯示s。這可以由步驟1中的發(fā)起者或其他參與者完成(帶有預(yù)先設(shè)置的延遲)。其他參與者可以通過計算范圍S中的值的哈希值并將其與sha3(S)進行比較來計算sha3(S)。
3. 根據(jù)收集到的s值計算一個隨機數(shù),并將獎勵發(fā)送給參與者(發(fā)起者和揭示者)。注意,根據(jù)步驟2,有可能啟動程序!
批量模型的好處是可以有更多的參與者,但是它更加復(fù)雜,因此可能有更多的攻擊向量。ZKRandao方案的兩個模型都保留了Randao的優(yōu)點,其中一個誠實的參與者足以生成一個隨機數(shù),并且消除了不披露的風險。因為秘密的范圍是共享的,所以可以計算秘密。因此,每個參與者都被激勵去參與和揭示,否則揭示將由另一個參與者(計算器)完成。
考慮單一RNG
在考慮時,我們將重點放在簡單的單一秘密計算模型上。
共享范圍消除了不泄漏的風險,但是它產(chǎn)生了其他參與者在泄漏數(shù)字之前計算秘密(隨機)數(shù)字的風險??梢愿鶕?jù)計算器的范圍和哈希率為此設(shè)置邊界。因此,有必要找到一個最優(yōu)范圍,使其他參與者能夠在一個最大的設(shè)置時間范圍內(nèi)而不是在一個最小的設(shè)置時間范圍之前計算s。下面我們將給出一個簡短的邊界評估示例。這些都被簡化了,因為這是一個思維實驗。在計算中使用下列符號:
R =參與者提供的范圍
Hr =參與者每秒的Hashrate
秘密計算的時間以秒為單位
時間計算
(R / 2) / Hr = Ts
這是計算一個共享sha3(s)的秘密所需的時間。這個范圍除以2,因為我們假設(shè)這個秘密會均勻地分布在所有參與者的范圍內(nèi)。對于一個非常大的種群,這可以簡化為這樣一個事實:秘密將在大約一半的范圍內(nèi)被發(fā)現(xiàn)。
評估的邊界
我們使用比特幣的hashrate池,約為62,500,000 Th/s,來計算在本例中計算一個秘密所需的最小時間范圍 62,500,000,000,000,000,000 * 2 * 180 = 22,500,000,000,000,000,000,000,000。
對于所需的最大時間,我們期望池中的hashrate為14000 Th/s。這些大約是1000位主要的Antminer S9i(14位/秒)。需要的時間是(22,500,000,000,000,000,000,000 / 2)/ 14,000,000,000,000,000 = 535,715秒。約9分鐘。這個礦池中采礦設(shè)備的成本約為1000美元,價值為100萬美元。在這個例子中,隨機數(shù)可以在180秒內(nèi)被期望是公平的。如果發(fā)起者在180秒內(nèi)(在一個由多個隨機數(shù)組成的種群中)透露了一個消息,那么該消息就可以被認為是完全隨機的,并假定匯聚的是比特幣網(wǎng)絡(luò)的最大哈希率(這一點很重要)。
您可以使用哈希率(最小值和最大值)、所需時間和范圍來優(yōu)化邊界。進一步注意,比特幣挖掘池不會被激勵去計算隨機數(shù),因為發(fā)起者更愿意透露,因此不會有任何獎勵。例如,如果發(fā)起者在計算器(在一段時間內(nèi))顯示之后才顯示,則獎勵將歸發(fā)起者所有。這將限制用于計算秘密的哈希率。
結(jié)論
ZKRandao實現(xiàn)使用可調(diào)邊界創(chuàng)建一個RNG,該RNG在活動性和隨機性之間進行優(yōu)化。ZKRandao中最重要的考慮因素是范圍和預(yù)期的哈西率。通過選擇一個(相對)小范圍,賦予活性假設(shè)更多的權(quán)重,以換取隨機性的不完整性。通過選擇一個較大的范圍,賦予活性假設(shè)較少的權(quán)重,以換取較高的隨機性的完整性。此外,ZKRandao的用戶還可以選擇隨機數(shù)計算所需的秘密數(shù)(或小于180秒顯示的最小秘密數(shù))。因此,一個ZKRandao RNG可以被不同的用戶使用,具有不同的活動性和隨機性假設(shè)的完整性。
請注意,當計算秘密時,隨機數(shù)不會被直接操作,只有計算器知道了這個秘密。為了操縱隨機數(shù),集合中的所有隨機數(shù)(由RNG的用戶決定)都需要由計算器解鎖,并且這個集合的最后一個秘密需要由計算器來初始化。只是極其困難的。





