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