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