Ultrain聯(lián)合創(chuàng)始人&CEO郭睿、聯(lián)合創(chuàng)始人&CSO廖志宇在接受群友們的車輪戰(zhàn)時,有這么一個問題成為了討論的核心:超腦鏈?zhǔn)褂玫碾S機(jī)可信證明機(jī)制(R-POS)中,隨機(jī)數(shù)是如何產(chǎn)生的?是否存在真隨機(jī)?
在密碼學(xué)中,隨機(jī)數(shù)的概念有著重要的地位,而基于密碼學(xué)原理的區(qū)塊鏈技術(shù)中對隨機(jī)數(shù)的應(yīng)用也在各項(xiàng)目中屢見不鮮。從本質(zhì)上來說,區(qū)塊鏈技術(shù)的核心,共識機(jī)制就是依托各種方式來選出隨機(jī)的記賬人,以構(gòu)建一個安全和去中心化的記賬體系。
以PoW采用的方式來說,所有礦工解一個數(shù)學(xué)難題,算力高的節(jié)點(diǎn)優(yōu)先解出答案的概率較低算力節(jié)點(diǎn)更高。注意,這里是概率更高而已,并不是單純的對全網(wǎng)所有節(jié)點(diǎn)進(jìn)行算力的比較,低算力節(jié)點(diǎn)依然有可能提前算出解,從而獲得記賬權(quán)。這種方式維護(hù)了全網(wǎng)中記賬權(quán)的隨機(jī)性,讓作弊成本變得非常高。
共識保障:公鏈真假隨機(jī)數(shù)爭議究竟在爭什么?
PoS中則是將算力競賽改為了股權(quán)競賽,依然是通過同樣的方式來保證記賬權(quán)的隨機(jī)分配。
DPoS之所以飽受詬病的原因也是如此。在DPoS體系中,為了提高性能,通過超級節(jié)點(diǎn)的選舉將隨機(jī)的記賬權(quán)保持在一個數(shù)量極小(往往不超過25)的節(jié)點(diǎn)范圍內(nèi),犧牲了去中心化。
那么,在PoW的共識機(jī)制中,真的能夠做到完全隨機(jī)嗎?根據(jù)密碼學(xué)原理,隨機(jī)數(shù)的隨機(jī)性檢驗(yàn)可以分為三個標(biāo)準(zhǔn):
統(tǒng)計(jì)學(xué)偽隨機(jī)性。統(tǒng)計(jì)學(xué)偽隨機(jī)性指的是在給定的隨機(jī)比特流樣本中,1的數(shù)量大致等于0的數(shù)量,同理,“10”“01”“00”“11”四者數(shù)量大致相等。類似的標(biāo)準(zhǔn)被稱為統(tǒng)計(jì)學(xué)隨機(jī)性。滿足這類要求的數(shù)字在人類“一眼看上去”是隨機(jī)的。
密碼學(xué)安全偽隨機(jī)性。其定義為,給定隨機(jī)樣本的一部分和隨機(jī)算法,不能有效的演算出隨機(jī)樣本的剩余部分,即“不能通過給定的隨機(jī)序列的一部分而以顯著大于二分之一的概率”。
真隨機(jī)性。其定義為隨機(jī)樣本不可重現(xiàn)。實(shí)際上只要給定邊界條件,真隨機(jī)數(shù)并不存在,可是如果產(chǎn)生一個真隨機(jī)數(shù)樣本的邊界條件十分復(fù)雜且難以捕捉,可以認(rèn)為用這個方法演算出來了真隨機(jī)數(shù)。
相應(yīng)的,隨機(jī)數(shù)也分為三類:
偽隨機(jī)數(shù):滿足第一個條件的隨機(jī)數(shù)。
密碼學(xué)安全的偽隨機(jī)數(shù):同時滿足前兩個條件的隨機(jī)數(shù)??梢酝ㄟ^密碼學(xué)安全偽隨機(jī)數(shù)生成器計(jì)算得出。
真隨機(jī)數(shù):同時滿足三個條件的隨機(jī)數(shù)。
根據(jù)真隨機(jī)性的概念,如果將產(chǎn)生隨機(jī)數(shù)的邊界條件變得難以捕捉,這個過程就會更加隨機(jī)。區(qū)塊鏈項(xiàng)目中產(chǎn)生隨機(jī)數(shù)的邊界條件包括使用上一個區(qū)塊的哈希值,上一個區(qū)塊的時間戳等等。但由此也產(chǎn)生了一些問題:這些信息都是寫在上一個區(qū)塊中的,根據(jù)區(qū)塊中的信息產(chǎn)生一個隨機(jī)的結(jié)果來選出下一個區(qū)塊,存在循環(huán)論證的嫌疑,安全性相對較差。
而一般意義上的真隨機(jī)數(shù)發(fā)生器往往利用了更加復(fù)雜的邊界條件來產(chǎn)生隨機(jī)數(shù)。第一個廣泛認(rèn)知上的真隨機(jī)數(shù)發(fā)生器是1955年由Rand公司創(chuàng)造的,而在1999年,Intel發(fā)布Intel810芯片組時,就配備了硬件隨機(jī)數(shù)發(fā)生器,基于IntelRNG的真隨機(jī)數(shù)生成器可以生成滿足獨(dú)立性和分布均勻性的真隨機(jī)數(shù),目前大部分芯片廠商都集成了硬件隨機(jī)數(shù)發(fā)生器,只要安裝相應(yīng)驅(qū)動,了解讀取寄存器地址,可以直接調(diào)用發(fā)生器。
Intel810RNG的原理大概是:利用熱噪聲(是由導(dǎo)體中電子的熱震動引起的)放大后,影響一個由電壓控制的振蕩器,通過另一個高頻振蕩器來收集數(shù)據(jù)。
在區(qū)塊鏈?zhǔn)澜缰?,通過復(fù)雜的邊界條件來獲得隨機(jī)數(shù)的案例也有不少。今年1月,加密貨幣Zcash舉行了一個看起來相當(dāng)驚人的儀式:他們在美國伊利諾伊州和威斯康星州上空的一架小型私人飛機(jī)上舉行了一個“可信的設(shè)置儀式(trusted setup ceremony)”。
這個儀式通過在烏克蘭切爾諾貝利核設(shè)施中心獲得的核廢料產(chǎn)生輻射,并利用蓋革計(jì)數(shù)器將放射性脈沖轉(zhuǎn)換成了一個“完全隨機(jī)”的數(shù)字,并將其放在了Zcash的代碼里。在儀式上,開發(fā)人員通過駕駛飛機(jī),確保了惡意參與者不可能在其過程中破壞代碼。
在上面兩個案例當(dāng)中,隨機(jī)數(shù)都是通過一些難以捕捉的邊界條件產(chǎn)生的。純粹依靠算法是否能夠生成真隨機(jī)數(shù)呢?一般認(rèn)為,由于計(jì)算機(jī)算法均具備確定的特性,所以真隨機(jī)數(shù)無法由算法來生成。