您好,登錄后才能下訂單哦!
本篇內容介紹了“區塊鏈中的隨機數有什么作用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
隨機數的重要性不僅體現在安全通信渠道的建立上,還體現在確認通信對象上。如果多個人試圖通過有限帶寬的頻道來互相通信,則可以利用隨機數來確定頻道攜帶消息的合理順序。
隨機數能夠有效幫助團體或計算機達成一致協議或共識。隨機共識協議就是這樣一個例子。本文將探討隨機數在區塊鏈中的作用。
區塊鏈就是一個多方嘗試就全局視角的某種更新達成一致(共識)的成功案例。更新通常在一輪內完成,也就是在一個周期性離散時間間隔內。
在互聯網上,特定時間段內發送的消息數量是有上限的(即吞吐量),并且發送消息必將花去一定的時間( 即延遲),這都對共識造成了一定的限制。任何區塊鏈共識協議的目標是在上述限制范圍內達成一致協議。在公鏈上有數千個節點參與了區塊鏈的維護,如果每個節點需要向所有其他節點發送消息并獲得其反饋,那么網絡的限制會大大增加達成共識的成本。這是因為在一輪時間內通過網絡發送的消息數量太大。因此,為了確保共識,則需要通過減少在互聯網上發送消息的數量來優化通信方案。
比特幣達成此協議(中本聰共識)的方式是通過使用 工作證明(PoW)作為隨機數源來確定每一輪中哪一個區塊將會被添加到區塊鏈中,從而減少消息傳遞的費用。因為 PoW 設置的題目在算法上非常難解決,只有最先算出來的人才能將他們的區塊添加到分類帳中。由于多個人同時解開難題的概率非常低,因此 PoW 可以作為一種限制網絡消息傳遞數量的機制。
理論上,任何試圖取代 PoW 的共識機制都需要找到一種方法來限制網絡傳遞消息的數量。大多數權益證明(PoS)協議用于解決該問題的方法是根據驗證者持有的代幣數量來選出一組驗證者(維護與管理區塊鏈的節點)組成一個小組委員會,然后這組驗證者可以在網絡限制內相互通信并及時達成一致。
當然,為了公平選舉出小組委員會的成員,保證沒有人會提前知道成員的身份,算法必須能夠融入一些公平、無偏倚的(unbiasable)隨機數源。一旦該組驗證者在下一個區塊上達成了一致,那個區塊就會被廣播給網絡中的每一個人。
在 PoS 協議中用于小組委員會選舉的理想隨機數源必須是不可支配的(unbiasable),即沒有人可以隨意改變隨機種子(seed)。為了實現不可支配性,隨機性協議需要確保以下兩點:
隨機函數總會生成一些隨機數;
隨機函數生成的隨機數沒有被操縱
(注意:我們在之后的博客文章中將會探討 i)與ii) 之間的權衡,以及這種權衡與網絡同步模型的關系)
我們在 Mechanism Labs (一個推特號)上分析過的所有小組委員會選舉協議都沒有滿足上面提到的兩點。因此,鑒于上述權衡,區塊鏈共識協議應該使用能不斷產生隨機數的隨機數源,而不是使用僅能一次性產生不可支配的隨機數的隨機數源。因為區塊鏈協議需要確保區塊鏈保持增長、不能讓隨機數源成為瓶頸。即使是偏好一致性的協議,隨機數源也不應該成為區塊鏈停滯的原因。無論如何,隨機數源都應該確保協議能夠專注于應付其他攻擊,比如對驗證者組成的小組委員會實施 DoS 攻擊使得區塊鏈停滯等等。
如果區塊鏈由于隨機函數輸出的隨機數出現了偏差而完全停止運行,那么社交層就得付出巨大的協調成本來重新啟動區塊鏈。這將要求社區通過外部的社交媒體平臺就區塊鏈實際上是什么的問題達成一致,而這會是一個非常耗時的討論,此成本可與當初解決 DAO 黑客攻擊的成本相當。社交層的巨額成本也會動搖社區對區塊鏈協議安全性的信心,但只要偏差非常小并且具備從偏差狀態恢復的機制,那么幾輪的小偏差對區塊鏈安全性的影響就比較微弱,因為公有區塊鏈協議每一輪給予驗證者的所有協議獎勵是相對較少的。每一輪或每一個時期(每幾輪)進行小組委員會選舉時,隨機函數中的偏差必須非常顯著,驗證者才能以欺騙協議來牟利并降低區塊鏈協議的安全性。
而在另一個領域內,那些用到隨機數的彩票游戲必須保證隨機數源絕對不被操縱,因為即使出現一點偏差也會完全改變中獎結果。由于中獎者能夠獲得大量的即時獎勵,所以篡改彩票結果帶來的影響是巨大的。因此,這種彩票游戲偏好于一次性生成不可支配隨機數的函數,即使這意味著隨機函數的輸出有時會停止。
本文將探討基于區塊鏈協議設計的背景下公正無偏的隨機數源的重要性。接下來的文章中,當我們考慮不可篡改的協議時,我們是傾向于不會被中止的協議。
理想的委員會選舉方案 應該滿足 i)不可被支配,ii)只在新一輪開始時顯示隨機種子。隨機函數必須如前文討論的定義那樣做到不可被偏轉。如果隨機數被操控(并存在協議內獎勵分配機制),就會造成不公平的獎勵分配。不恰當的獎勵分配意味著一些人將獲得更豐厚的獎勵。由于只有擁有權益的人才能成為驗證者,并且投票權與驗證者所擁有的權益成正比,那么不公平的分配將導致區塊鏈最終只掌控在少數驗證者手里。因此,協議的不可操縱的程度,決定了是否有人可以長期作為驗證者維護部分網絡。另一方面,種子在新一輪開始之前提前多久顯示,決定了誰可以首先成為網絡的一部分。由此可見,上述兩個屬性將決定區塊鏈的去中心化程度。
由于每一輪(或每一個時期)都會進行小組委員會的選舉,因此從公布隨機函數輸出的隨機數到那一輪(或那一個時期)開始所需的時間是至關重要的。在此時間范圍內,攻擊者可以利用隨機函數輸出的隨機數得知哪些驗證者獲選。如果此輸出被隱藏,則試圖攻擊區塊鏈協議的攻擊者將無法提前得知獲選的驗證者。此時間范圍的長短決定了協議對攻擊的承受能力。較強的攻擊者,即具有較多計算能力和資源去攻擊網絡的人,能夠在短時間內計算出獲選的驗證者。如果攻擊者有足夠的時間,他們會通過運行選舉委員會所用的算法以及該輪給定的隨機數種子來確定哪些驗證者當選,然后對該輪獲選的驗證者進行拒絕服務(DoS)攻擊,導致空白區塊的產生,令該輪無任何進展。對區塊鏈來說,即使是停止一輪,后果也是毀滅性的。設想一下,如果幾小時內世界上沒有人可以進行任何交易,比特幣會變成什么樣!因此,有能力抗 DoS 攻擊的節點才應該首先成為驗證者。另外,提前顯示種子也意味著共識協議只能應對較弱的攻擊者,這弱化了區塊鏈的去中心化性質。
基于我們曾在 替代性共識協議的元分析 中剖析的不同區塊鏈協議的使用案例,下面我們會從技術角度詳細介紹各種隨機數的生成機制。
Tendermint
Tendermint 是使用一種確定的循環協議方案來選出提議者的;該協議不具備隨機性。提議者是根據投票權和驗證者被選次數的堆排序算法選出的。攻擊者只能通過添加或刪除權益來干預協議,但這種干預不能立即生效,因為驗證者在系統中移除或者添加權益所需的時間很長。盡管如此,攻擊者就可以有更長的時間提前計劃好如何操縱提議者的選擇。
使用確定性的隨機算法意味著隨機種子會在遠早于每一輪之前公布,提議者也能被提前確定。
Algorand
Algorand 的隨機數方案如下:被選為提議者的每一位驗證者 v 使用公式 < seedr, π > ← VRFskv (seedr?1||r) 來計算 r 輪的種子,其中 skv 是驗證者 v 的密鑰,seedr-1 是前一輪的隨機種子。
VRF 是用來證明 r-1 輪中接受的區塊包含了 π 以及 r 輪的種子。如果給定的 VRF 證明未能驗證給定的種子,則每個人計算新一輪的種子 H(seedr?1||r),其中 H 是哈希函數。這意味著必須提前選好每位驗證者的密鑰,確保他們無法干預隨機種子。
當網絡不能很好地同步時,攻擊者完全控制了消息傳遞鏈接(校對注:感覺這里像在說“異步”假設),因此可以刪除提議的區塊并強制用戶支持空白的區塊,從而計算出未來用于選舉的隨機種子。因此,Algorand 要求 弱同步 假設,即在每個時間長度為 u 的周期中,必須存在時間長度為 s(s < u)的強同步來保證協議的不可操縱性。只要 s 值足夠大,使得在時間段 b 內至少產生一個誠實的區塊,則選擇密鑰 skv' 的攻擊者 v' 就不能操控 r 輪的隨機種子。
只有當一個區塊被提議之后,才會生成一個新的隨機數種子,和一個可用來驗證的公開 VRF 證明。這確保了提議者和隨機種子沒有被提前泄露,同時保證 Algorand 能夠抵御針對提議者的 DoS 攻擊,即使在節點離線甚至瞬間腐化的模式下都能實現自適應安全。
Dfinity
對于大部分協議,攻擊者通常會中止協議來調用回退機制,從而操縱隨機數。但 Dfinity 使用的門限簽名方案(threshold scheme)是不可操縱的,因為選擇閾值的原則就是確保攻擊者無法通過阻止生成 門限簽名 來中止協議(因為隨機數種子是從門限簽名中推導出來的)。因此閾值 t 必須根據以下公式進行選擇:t∈[f + 1,n - f],其中 f 是攻擊者控制的簽名數,n 是方案中的總簽名數,t 是用于生成隨機數的簽名閾值。選擇該閾值是為了確保攻擊者既無法預測簽名生成的結果,也無法阻止簽名的生成。
需要注意的是,在任何 BLS 方案中,只要攻擊者擁有 50% 以上 的保證金,他們就能夠操控最終的簽名與隨機數。然而,如果一名攻擊者擁有如此大份額的權益,也會出現其它類型的攻擊,這種情況就違反了 Dfinity 協議的基本假設。
一旦誠實的驗證者進入到第 r 輪,隨機種子就會被揭示。雖然從誠實的驗證者進入到新一輪正式開始之間的時間差很小,但這個時間差足以讓具有大量計算資源的攻擊者識別出提議者并對其進行 DoS 攻擊。這就是為什么 Dfinity 只能應對溫和的攻擊者而無法應對瞬時癱瘓的狀況。
Thunderella
在哈希函數實例化的隨機數預言機方案中,提議者將依據以下公式來確定:H_nonce(pk,q) < Dp,其中 H 是用作隨機數預言機的哈希函數,pk 是驗證者的公鑰, q 是給定的迭代時間,nonce 是哈希函數的熵來源。Nonce 由前一個區塊的提議者選擇。設置難度參數 D_p 是為了在單個迭代時間內,委員會成員被選為提議者的概率為 w。
如果攻擊者提議了一個區塊,她可以操控為下一輪哈希函數生成熵的 nonce 值,從而影響下一個區塊的提議者的人選。然而,為了降低隨機數方案的可篡改性,在哈希函數中相同的 nonce值不僅僅用于選擇下一輪的提議者,也會用于選擇接下來 r 個輪次的提議者。這使得攻擊者在計算上很難通過強制改變 nonce 值來讓自己連續成為接下來 r 個輪次的提議者。雖然這種策略僅損失了多項式安全性,但它具有可預測性的弊端(后面也會討論到)。該方案僅能夠應對慢速自適應的攻擊者。
在上述算法中,當重復使用相同的 nonce 值給哈希函數喂送種子時,就會導致攻擊者能夠提前預測到誰是提議者。由于在一時期中相同的 nonce 值被重復用作熵,從而導致隨機種子在新一輪開始之前被泄露,使得攻擊者可以對提議者進行腐化或者實施 DoS 攻擊。
Casper FFG
Casper FFG 計劃使用的隨機數方案是基于以下算法:
一個時期開始時,每個驗證者承諾 H (H (H (..Sv )))),其中 S 是驗證者承諾的種子。 R 賦值為 R 與哈希函數內原象的異或運算(R := R⊕ Pre-image of the inner layer of hash)。在一輪中,驗證者可以創建或中止一個區塊。
如果在回退機制中沒有生成隨機數,這可能會造成比可預測或可操縱的隨機數更大的問題,因為你將不再需要 1/3 的惡意者來中止協議,1個人就足夠了。
作為當前提議者的驗證者是知道下一輪的隨機種子的。
隨機數是密碼學和區塊鏈的重要部分。不良的隨機數方案會通過以下方式破壞區塊鏈的安全性:i)停止區塊鏈協議;ii)導致中心化。 因此,在理解區塊鏈的安全性時,探究隨機性在該區塊鏈協議中的角色乃是重中之重!
“區塊鏈中的隨機數有什么作用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。