在人們的生活中,很多場景都需要用到隨機(jī)數(shù),例如福利彩票,車牌搖號,公共用房分配等?;ヂ?lián)網(wǎng)的發(fā)展,讓人們對隨機(jī)數(shù)的運(yùn)用越來越依賴中心
在人們的生活中,很多場景都需要用到隨機(jī)數(shù),例如福利彩票,車牌搖號,公共用房分配等?;ヂ?lián)網(wǎng)的發(fā)展,讓人們對隨機(jī)數(shù)的運(yùn)用越來越依賴中心化系統(tǒng),但是絕大多數(shù)中心化系統(tǒng),生成的隨機(jī)數(shù)都是偽隨機(jī)數(shù),并且存在作弊的風(fēng)險。
區(qū)塊鏈的出現(xiàn),讓人們看到了生成更公平的隨機(jī)數(shù)的可能。而隨機(jī)數(shù)對于區(qū)塊鏈本身也有著非常重要的作用,那到底隨機(jī)數(shù)在區(qū)塊鏈中有哪些應(yīng)用場景?區(qū)塊鏈又是如何產(chǎn)生更可靠的隨機(jī)數(shù)的呢?
隨機(jī)數(shù)在區(qū)塊鏈中的應(yīng)用
私鑰
擁有加密貨幣的人都知道私鑰的重要性,誰擁有你的私鑰,誰就擁有了你的加密資產(chǎn)。私鑰的生成都需要依賴隨機(jī)數(shù),所以能否保證隨機(jī)數(shù)的不可預(yù)測和破解,關(guān)系著加密資產(chǎn)的安全。
比特幣私鑰使用的是SHA-256生成的256位隨機(jī)數(shù),這個隨機(jī)數(shù)的取值范圍是0~2²??-1。2的256次方近似于10的77次方,這是一個取值范圍非常大的數(shù),以現(xiàn)有的計算能力,想要暴力破解,幾乎不可能。
不能暴力破解,但是如果生成隨機(jī)數(shù)的隨機(jī)數(shù)生成器可以被操控,生成的隨機(jī)數(shù)可以被預(yù)測,那你的私鑰就有可能被解密,加密資產(chǎn)的安全就得不到保障了。
競猜類應(yīng)用
在競猜應(yīng)用里,需要使用隨機(jī)數(shù),來保證結(jié)果的隨機(jī)性,避免人為干預(yù),影響結(jié)果的公平性。
在中心化環(huán)境下,參與競猜的用戶需要向系統(tǒng)提交競猜訂單,系統(tǒng)根據(jù)規(guī)則收集用戶的信息,然后生成競猜結(jié)果。在整個過程中,客戶端不會參與競猜結(jié)果的計算,競猜結(jié)果本質(zhì)上是由系統(tǒng)生成的一串隨機(jī)數(shù)。當(dāng)出現(xiàn)巨大利益誘惑時,系統(tǒng)可能會作弊,讓自己從中得利。
在去中心化環(huán)境下,沒有唯一的中心,可以讓所有節(jié)點(diǎn)共同參與隨機(jī)數(shù)的生成,
可以有效的保證隨機(jī)數(shù)的公平性。但是在去中心化環(huán)境中,黑客可以更方便的對隨機(jī)數(shù)發(fā)起攻擊,從中獲得利益。到目前為止,區(qū)塊鏈隨機(jī)數(shù)的安全性仍然是一個需要突破的技術(shù)問題。
在2018年8月,曾火爆一時的Fomo3D游戲,就被黑客利用其隨機(jī)數(shù)漏洞,在游戲中獲得了巨額的利益。繼Fomo3D之后,EOS上的眾多熱門DAPP,尤其是競猜類游戲,如EOS.WIN、EOSDice等,也先后因隨機(jī)數(shù)生成的缺陷遭到了黑客攻擊。
POS共識機(jī)制
區(qū)塊鏈?zhǔn)且环N去中心化的分布式記賬技術(shù),在去中心化的環(huán)境里,要實(shí)現(xiàn)正確的記賬,隨機(jī)的選出記賬人,是非常關(guān)鍵的。因?yàn)橹挥性陔S機(jī)的條件下,才能保證公平的分配記賬權(quán),合理分配挖礦獎勵。
采用POW的共識機(jī)制,是通過算力競爭,計算一個非常有難度的哈希值,來隨機(jī)確定由誰來記賬。采用POS的共識機(jī)制,則需要通過隨機(jī)數(shù),隨機(jī)選舉出一個節(jié)點(diǎn)來進(jìn)行記賬。
大多數(shù)POS協(xié)議都會根據(jù)持有者的代幣數(shù)量,選出一組礦工和驗(yàn)證者,共同完成對鏈上交易的驗(yàn)證和出塊。為了能夠隨機(jī)的選出礦工和驗(yàn)證者,保證公平分配獎勵,算法必須融入一些公平、無偏倚的隨機(jī)數(shù)源。所以在許多POS共識機(jī)制中,隨機(jī)數(shù)是一個非常關(guān)鍵的技術(shù)。
真隨機(jī)數(shù)和偽隨機(jī)數(shù)
隨機(jī)數(shù)分為真隨機(jī)數(shù)和偽隨機(jī)數(shù)。真隨機(jī)數(shù)數(shù)列是完全不可預(yù)測的,只存在真實(shí)的物理世界中,例如放射性衰變、電子設(shè)備噪音、宇宙射線的觸發(fā)時間等,我們可以通過采集這些數(shù)據(jù),獲得真隨機(jī)數(shù)數(shù)列。偽隨機(jī)數(shù)是通過獲得的真隨機(jī)數(shù)數(shù)列(通常稱作隨機(jī)數(shù)種子),使用隨機(jī)數(shù)算法計算得來的。只要獲得隨機(jī)數(shù)種子,就能得到相同的偽隨機(jī)數(shù)數(shù)列。
所以真隨機(jī)數(shù)只存在真實(shí)的物理世界中,計算機(jī)中的絕大多數(shù)隨機(jī)數(shù)都是偽隨機(jī)數(shù)。想保證偽隨機(jī)數(shù)的安全,就需要有效的隨機(jī)數(shù)種子和安全的隨機(jī)數(shù)生成器。
區(qū)塊鏈隨機(jī)數(shù)的生成方式
區(qū)塊鏈?zhǔn)侨ブ行幕南到y(tǒng),理論上,產(chǎn)生的隨機(jī)數(shù)比中心化系統(tǒng)會更公平,但是在去中心化環(huán)境里,如果有巨額利益,更容易遭到黑客攻擊,所以為了保證區(qū)塊鏈隨機(jī)數(shù)的安全性, 誕生了各種不同的隨機(jī)數(shù)生成機(jī)制。
VRF(可驗(yàn)證隨機(jī)函數(shù))
VRF(Verifiable Random Function,可驗(yàn)證隨機(jī)函數(shù))是一種可驗(yàn)證的隨機(jī)數(shù)
生成方式。目前主要是基于POS共識算法的區(qū)塊鏈項(xiàng)目在使用,包括Algorand、Cardano。
在Algorand、Cardano中,VRF是產(chǎn)生隨機(jī)數(shù)的關(guān)鍵。VRF可以根據(jù)任意的一個輸入,輸出一個隨機(jī)數(shù)。在VRF中特別設(shè)計了一個非交互的零知識證明過程,可以用來驗(yàn)證隨機(jī)數(shù)的正確性,以及某隨機(jī)數(shù)是由某節(jié)點(diǎn)生成的。
VRF中主要包含四個環(huán)節(jié):
生成公私鑰對
生成隨機(jī)數(shù)輸出
計算零知識證明
驗(yàn)證隨機(jī)數(shù)輸出
生成隨機(jī)數(shù)的節(jié)點(diǎn)將自己的私鑰,作為生成隨機(jī)數(shù)的輸入的一部分,然后在本地輸出隨機(jī)數(shù)和零知識證明。其他節(jié)點(diǎn)可以利用生成隨機(jī)數(shù)的節(jié)點(diǎn)的公鑰、輸入、輸出,驗(yàn)證隨機(jī)數(shù)和生成者身份的真假。
得到隨機(jī)數(shù)之后,就需要用生成的隨機(jī)數(shù)來挑選參與出塊的節(jié)點(diǎn)。最簡單的方式是在全網(wǎng)設(shè)置一個公認(rèn)的臨界值M,假設(shè)某個節(jié)點(diǎn)生成的隨機(jī)數(shù)R大于臨界值M,系統(tǒng)就允許節(jié)點(diǎn)參與下一步的出塊任務(wù)。但是這種方案沒有辦法防止女巫攻擊,所以現(xiàn)在大部分VRF抽簽方案都會基于權(quán)益進(jìn)行票數(shù)分配,然后設(shè)計抽簽算法,完成后續(xù)的共識過程。
Randao
Randao基于區(qū)塊鏈技術(shù),提供開源、去中心化、可證公平的隨機(jī)數(shù)生成服務(wù)。Randao的目標(biāo)是滿足隨機(jī)數(shù)生成不可控制和不可預(yù)測的基本特性的同時,使個體可以參與隨機(jī)數(shù)的生成,保證隨機(jī)數(shù)具備可參與性,利用區(qū)塊鏈透明和不可逆的特點(diǎn),保證結(jié)果的可證公平性。
Randao主要采用了Commit Reveal和BLS。 Commit Reveal其缺點(diǎn)主要是生成隨機(jī)數(shù)的速度較慢。在以太坊中,從接到隨機(jī)數(shù)生成請求,到生成隨機(jī)數(shù),至少需要 10 個塊以上的時間,目前耗時在 3 分鐘以上;因?yàn)樾枰獏⑴c者多次發(fā)送交易提交數(shù)據(jù),其生產(chǎn)和使用成本較高。但該方案的優(yōu)勢在于,其參與門檻基本為零,任何人都可以隨時加入一個隨機(jī)數(shù)的生成過程,在防止串謀和可證公平方面擁有一定優(yōu)勢。
BLS 簽名方案是對Commit Reveal的一種補(bǔ)充,因?yàn)樯蛇^程在鏈外組織,響應(yīng)速度快,通常只需要一個區(qū)塊的時間就能生成隨機(jī)數(shù);消費(fèi)者發(fā)起隨機(jī)數(shù)生成請求,生產(chǎn)者在下一個塊寫入隨機(jī)數(shù),只需要發(fā)送兩次交易就可以完成隨機(jī)數(shù)的生成和調(diào)用,生產(chǎn)和使用成本都很低,適合用于高頻,同時對防串謀要求不高的場景。
閾值簽名機(jī)制(Threshold Signature Scheme)
Dfinity是一個公鏈項(xiàng)目,目標(biāo)是成為“互聯(lián)網(wǎng)電腦”,實(shí)現(xiàn)軟件和服務(wù)在其公有云的運(yùn)轉(zhuǎn)。在Dfinity中,隨機(jī)數(shù)是整個共識機(jī)制正常運(yùn)轉(zhuǎn)的核心,其采用的閾值簽名機(jī)制結(jié)合了VRF和BLS簽名機(jī)制,是生成隨機(jī)數(shù)的一種有效方式。
閾值簽名機(jī)制主要由三部分組成:輸入、輸出、閾值機(jī)制。輸入是一組成員的私鑰,輸出是一個隨機(jī)數(shù)。閾值機(jī)制能夠保證的是,只要接收來自成員的輸入數(shù)量超過設(shè)定值,就可以得到一個確定的隨機(jī)數(shù),但是在得到小于設(shè)定值的輸入數(shù)量前,沒有人能夠預(yù)測輸出的隨機(jī)數(shù)是多少。輸出隨機(jī)數(shù)的過程中使用了VRF,閾值機(jī)制中使用了BLS簽名機(jī)制。
閾值簽名機(jī)制結(jié)合了VRF和BLS,VRF使其生成的隨機(jī)數(shù)具備了可驗(yàn)證性,BLS簽名機(jī)制使簽名過程中,沒有節(jié)點(diǎn)可以提前預(yù)知簽名結(jié)果,實(shí)現(xiàn)了隨機(jī)數(shù)的不可操控性,并且很難串謀,是一種不錯的隨機(jī)數(shù)生成機(jī)制。
NULSRNG
NULSRNG是全球開源社區(qū)項(xiàng)目NULS,根據(jù)其POC(Proof of Credit)共識算法,專門為DAPP設(shè)計的隨機(jī)數(shù)種子生成機(jī)制。
NULSRNG的實(shí)現(xiàn)方式是基于POC共識的兩段式隨機(jī)種子提交生成機(jī)制。即每個節(jié)點(diǎn)在出塊的同時生成一個隨機(jī)種子,并對該隨機(jī)種子進(jìn)行加密處理,將生成的密文包含在區(qū)塊頭中,同時獲取該節(jié)點(diǎn)上次出塊時生成的256位隨機(jī)種子明文。結(jié)合區(qū)塊頭中的明文和密文,就可以對節(jié)點(diǎn)生成的隨機(jī)數(shù)種子進(jìn)行驗(yàn)證,確保不可篡改。
NULSRNG基于底層共識實(shí)現(xiàn),由全部共識節(jié)點(diǎn)參與,這樣的方式增加了節(jié)點(diǎn)串謀的難度,采用種子密文和明文兩段式提交的方式,能夠?qū)崿F(xiàn)種子可驗(yàn)證和不可篡改。
在NULS上開發(fā)的DAPP,可以直接利用底層提供的接口,獲取隨機(jī)種子,然后采用自己的隨機(jī)算法,生成需要的隨機(jī)數(shù)數(shù)列,不僅可以提高隨機(jī)數(shù)的安全性,同時使用上也可以做到靈活方便。
結(jié)語
1、在區(qū)塊鏈中,隨機(jī)數(shù)有著非常多的應(yīng)用場景,隨著區(qū)塊鏈技術(shù)的不斷發(fā)展和完善,人們對區(qū)塊鏈隨機(jī)數(shù)的應(yīng)用將會不斷增加;
2、在區(qū)塊鏈領(lǐng)域中,目前已經(jīng)有許多不同的隨機(jī)數(shù)生成機(jī)制,它們都有著各自的特點(diǎn);
3、意識到隨機(jī)數(shù)的重要性,越來越多的技術(shù)團(tuán)隊(duì)和項(xiàng)目方,開始研究更好的隨機(jī)數(shù)生成機(jī)制,未來將會有更多完善的區(qū)塊鏈隨機(jī)數(shù)生成機(jī)制產(chǎn)生。
關(guān)鍵詞: 區(qū)塊鏈 隨機(jī)數(shù) 私鑰