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