區(qū)塊鏈中產(chǎn)生隨機數(shù)的性質(zhì)及特點介紹
在本文中,我們將重點討論在不可信環(huán)境中使用集體隨機數(shù)生成方案的解決方案及其實際應(yīng)用。簡而言之,如何以及為什么在區(qū)塊鏈中使用隨機數(shù),以及如何區(qū)分“好的”和“壞的”隨機數(shù)。長期以來,密碼學(xué)家一直在研究生成一個真正的隨機數(shù),但即使在一臺單獨的計算機上也很難達實現(xiàn)它。更不用說分散式網(wǎng)絡(luò)了,其中隨機數(shù)的生成更加復(fù)雜。
在參與者之間互不信任的網(wǎng)絡(luò)中,產(chǎn)生無可爭辯的隨機數(shù)的可能性允許有效地解決許多重要問題并大大改進現(xiàn)有的方案。此外,游戲、賭博和彩票根本就不是首要目標,對一個沒有經(jīng)驗的讀者來說,這似乎是最重要的。
隨機數(shù)生成
計算機本身無法產(chǎn)生隨機數(shù),它們需要外部幫助。計算機可以從稱為熵源的不同來源接收一些隨機值:例如,鼠標移動、內(nèi)存使用量、處理器插腳上的寄生電流等等。這些值并不完全是隨機的,因為它們具有一定的范圍或可預(yù)測的變化機制。為了將這些數(shù)字轉(zhuǎn)換為給定范圍內(nèi)的統(tǒng)計隨機數(shù)字,需要對它們進行密碼轉(zhuǎn)換。因此,我們從熵源的非均勻分布值中得到均勻分布的偽隨機值。
得到的值之所以稱為偽隨機值,是因為它們不是真正的隨機值,而是由熵決定的。通過對數(shù)據(jù)進行加密,任何好的加密算法都會生成統(tǒng)計上與隨機序列沒有區(qū)別的密文。因此,為了生成隨機數(shù)據(jù),您可以使用熵源來確保即使在很小的范圍內(nèi),值也具有良好的不可重復(fù)性和不可預(yù)測性,其余關(guān)于結(jié)果值中位的混淆和擴散的工作將由加密算法處理。
在這個簡短的講解結(jié)束時,我必須指出,即使在單獨的設(shè)備上生成隨機數(shù)也是數(shù)據(jù)安全支柱之一,因為生成的偽隨機數(shù)用于在各種網(wǎng)絡(luò)中建立安全連接、生成加密密鑰、負載平衡、完整性監(jiān)視以及許多其他方面。許多協(xié)議的安全性依賴于生成可靠的、外部不可預(yù)測的隨機數(shù)的能力,并保存它,直到下一個協(xié)議步驟才公開它,否則安全性將受到危害。對偽隨機生成數(shù)的攻擊是極其危險的,并且威脅到大多數(shù)現(xiàn)代密碼軟件。
如果你上過密碼學(xué)的基礎(chǔ)課程,你一定知道這一點,所以讓我們繼續(xù)討論分散式網(wǎng)絡(luò)中的隨機數(shù)。
區(qū)塊鏈中的隨機性
首先,我將討論支持智能合約的區(qū)塊鏈,因為它們可以充分受益于高質(zhì)量、無可爭議的隨機性。這些算法稱為“公開可驗證的隨機信標(Publicly Verifiable Random Beacons)”,為了簡單起見,我將進一步將它們稱為PVRB。由于區(qū)塊鏈是任何參與者都可以檢查數(shù)據(jù)的網(wǎng)絡(luò),因此名稱的關(guān)鍵部分是“公開可驗證的”,即通過計算任何人都可以獲得證據(jù),證明區(qū)塊鏈中產(chǎn)生的隨機數(shù)具有以下性質(zhì):
· 結(jié)果應(yīng)該從一個可證明的均勻分布值中得出,即基于眾所周知的強密碼。
· 結(jié)果被控制是不可能的。因此,結(jié)果不能預(yù)測。
· 由于未參與協(xié)議或者網(wǎng)絡(luò)中的攻擊消息過多,很難破壞生成協(xié)議。
· 所有這些都應(yīng)該能夠抵抗一定數(shù)量的不誠實協(xié)議參與者的串通,例如1/3的參與者。
任何一群不誠實的參與者合謀提供受控的偶數(shù)/奇數(shù)隨機數(shù)的機會都是安全漏洞。這種停止隨機數(shù)生成的任何可能性都是一個安全缺陷。嗯,在這個領(lǐng)域還需要面對許多重要的問題,到目前為止,這只是一個簡單的任務(wù)…
PVRB最重要的應(yīng)用似乎是游戲、彩票和Du博。的確,這是一個重要的領(lǐng)域,但區(qū)塊鏈隨機數(shù)可以用于其他更重要的領(lǐng)域。我們來看看。
共識算法
PVRB在網(wǎng)絡(luò)共識組織中起著重要的作用。區(qū)塊鏈中的交易受發(fā)送方簽名的保護,“攻擊交易”的唯一方法是在不同時刻將其包含或排除在塊(或多個塊)之外。因此,共識性算法的主要功能是建立交易的順序和包含交易的塊。此外,區(qū)塊鏈在現(xiàn)實中的一個基本特性是終結(jié)性。通常,為了確認一個塊是有效的,最重要的是,也是最終的是需要收集大多數(shù)塊生產(chǎn)者(以下簡稱BPs)的簽名,這些簽名至少涉及到向所有BPs交付一個區(qū)塊鏈,并在所有BPs之間分發(fā)簽名。隨著BPs數(shù)量的增加,所需的網(wǎng)絡(luò)消息量呈指數(shù)級增長; 因此, 需要最終結(jié)果的協(xié)商共識算法 (如超分類帳中使用的算法) 在幾十個 BpS 的參與下已經(jīng)不起作用, 因為需要大量的交互。
如果網(wǎng)絡(luò)有一個不可否認的公平的PVRB,那么您可以選擇一個BPs,并指定他為一個協(xié)議輪的“領(lǐng)導(dǎo)者”。如果我們有N個基點,M: M 》 1/2 N是誠實的: 那么使用共識的 PVRB 將允許您選擇一個誠實的領(lǐng)導(dǎo)者。如果給每個領(lǐng)導(dǎo)分配一個時間段, 在這個插槽中, 他可以生成一個塊并驗證一個鏈, 并且這些插槽是相等的, 那么誠實 Bps的區(qū)塊鏈將比惡意 Bps 形成的鏈長, 而依賴鏈長度的共識算法將更長。Graphene (EOS的前身)首次采用了為每個Bps分配相同時間間隔的原則,允許用單個簽名批準大多數(shù)塊,這大大降低了網(wǎng)絡(luò)負載,并確保了高共識速度和穩(wěn)定性。然而,在EOS中,需要使用特殊的塊(最后一個不可逆塊),它由BPs簽名的2/3 + 1來確定。這些塊用于確保最終結(jié)果(鏈叉不可能在最后一個不可逆塊之前開始)。
此外,在實際用例中,協(xié)議方案更為復(fù)雜——對提議的塊進行投票涉及多個階段,以便在丟失塊和網(wǎng)絡(luò)問題時支持網(wǎng)絡(luò);但是,即使考慮到這一點,使用PVRB的共識算法需要的BPs消息明顯更少,這使得它們比傳統(tǒng)的PBFT修改更快。
這類算法中最突出的例子是Cardano團隊開發(fā)的Ouroboros算法,該算法被宣布在數(shù)學(xué)上對BPs合謀具有可證明的抵抗能力。
在Ouroboros中,PVRB用于定義所謂的“BPs計劃”,根據(jù)該計劃,每個BPs都被分配了一個用于塊發(fā)布的時間間隔。PVRB的最大優(yōu)勢是BPs“相等”(根據(jù)它們的平衡大?。?。PVRB的公平性保證了惡意的BPs無法控制時隙的調(diào)度,因此無法操縱鏈。要選擇叉,只需要依靠鏈長就足夠了,而不需要對其塊的BPs“效用”或“重量”進行復(fù)雜的計算。
一般來說,如果需要在分散式網(wǎng)絡(luò)中隨機選擇參與者,PVRB通常比基于塊哈希值的確定性變體要好。在沒有PVRB的情況下,影響參與者選擇的能力會導(dǎo)致攻擊,當從幾個可用選項中選擇下一個腐敗參與者時,攻擊者會立即選擇其中的一些,以確保在決策過程中獲得更大的利益。而PVRB不相信這些類型的攻擊。
擴展與負載平衡
PVRB可以在減少負載和擴展支付方面提供幫助。首先,我建議閱讀Rivest的文章“用電子彩票用作小額支付”。在Emercoin網(wǎng)絡(luò)中,可以很好地描述基于該方案的協(xié)議。
該方案有幾個問題(例如,收件人可能在收到中獎彩票后立即停止為買方服務(wù)),但在特殊應(yīng)用中可以忽略這些問題,如每分鐘收費或服務(wù)的電子訂閱。然而,彩票的公平性仍然是主要的要求,而PVRB是實現(xiàn)這一要求的關(guān)鍵。
選擇一個隨機參與者對于分片協(xié)議也非常重要,分片協(xié)議的目標是水平擴展區(qū)塊鏈,允許不同的BPs只處理它們自己的交易范圍。這是一項極其繁瑣的任務(wù),尤其是在分片組合安全性方面。這和在共識算法中一樣,選擇一個隨機的BPs來指派他負責一個特定的分片也是PVRB任務(wù)。在集中式系統(tǒng)中,分片由平衡器分配:它只計算請求的哈希值并將其發(fā)送給必要的執(zhí)行器。在區(qū)塊鏈中,影響這一分配的能力可能導(dǎo)致共識攻擊。例如,攻擊者可以控制交易的內(nèi)容,監(jiān)視哪些交易屬于分片。
分片是區(qū)塊鏈中最具挑戰(zhàn)性和最嚴肅的任務(wù)之一;它的解決方案將允許建立具有出色性能和容量的分散式網(wǎng)絡(luò)。PVRB只是解決這一問題的重要模塊之一。
游戲,經(jīng)濟協(xié)議,仲裁
怎樣高估隨機數(shù)在游戲行業(yè)中的作用都不為過。它們被顯式地用于在線賭場,也被隱式地用于計算玩家行為中。對于分散式網(wǎng)絡(luò)來說,這些問題非常復(fù)雜,因為它們不能依賴于隨機數(shù)的中心來源。然而,隨機選擇可以解決許多經(jīng)濟問題,并幫助構(gòu)建更簡單、更有效的協(xié)議。假設(shè)我們的協(xié)議中存在一些關(guān)于低成本服務(wù)支付的爭議,并且這些爭議很少發(fā)生。在這種情況下,如果存在不可否認的PVRB,客戶和銷售者可以就隨機解決爭端達成一致,但具有給定的概率。例如,客戶以60%的概率贏,賣家以40%的概率贏。乍一看,這種荒謬的方法允許自動解決爭端,并在不需要第三方參與和浪費時間的情況下,以完全可預(yù)測的贏/輸份額來解決爭端。此外,概率比可以是動態(tài)的,并依賴于一些全局變量。
大量有趣的分散協(xié)議,如代幣管理的注冊中心、預(yù)測市場、鍵合曲線,以及許多其他協(xié)議,都存在經(jīng)濟博弈。它們往往存在安全漏洞,而且防御方法是相互矛盾的。用數(shù)十億代幣(“大賭注”)保護自己不受“鯨魚”攻擊的東西,可能很容易受到余額較小的數(shù)千個賬戶的攻擊。針對單一攻擊所采取的措施,例如為使一塊大牛排不盈利而創(chuàng)建的非線性傭金,通常會因另一次攻擊而失去信譽。由于這是一個經(jīng)濟博弈,可以事先計算出相應(yīng)的統(tǒng)計權(quán)重,可以簡單地用具有適當分布的隨機傭金代替常規(guī)傭金。這種概率的實現(xiàn)非常簡單:區(qū)塊鏈有可靠的隨機生成源,并且沒有復(fù)雜的計算即可。
與此同時,請記住,對單個隨機位的控制允許降低或增加概率率。因此,公平的PVRB是這些協(xié)議中最重要的組成部分。
哪里可以找到公平的隨機性?
從理論上講,分散式網(wǎng)絡(luò)中的公平隨機性允許任何協(xié)議都具有可證明的抗碰撞安全性。理由很簡單——如果網(wǎng)絡(luò)同意生成0或1位,并且少于一半的參與者不誠實,那么,如果有足夠的迭代次數(shù),網(wǎng)絡(luò)就可以保證以固定的概率就這個“位”達成一致。這是因為公平隨機機制在51%的情況下從100個參與者中選擇了51個。但這只是一種理論上的方法,因為在真正的區(qū)塊鏈中確保這種級別的安全性需要主機之間的大量消息和具有多種交互的復(fù)雜密碼術(shù)。在實際網(wǎng)絡(luò)中,任何協(xié)議增強都會立即增加潛在的攻擊向量,因此,實際的實現(xiàn)需要更多的協(xié)議增強來保證真實世界中的安全性。
這就是為什么在區(qū)塊鏈中仍然沒有足夠穩(wěn)定的PVRB用于實際測試、多次審計、負載測試和真正的攻擊,沒有這些測試,就很難稱一個產(chǎn)品是真正安全的。
盡管如此,一些有希望的方法在許多細節(jié)上存在差異,我們相信其中之一將解決實際問題。利用現(xiàn)代計算資源和將理論轉(zhuǎn)化為實際的用例。將來,我們會很高興地向您介紹PVRB實現(xiàn):現(xiàn)在有幾個實現(xiàn),每個實現(xiàn)都有自己的一組重要屬性、實現(xiàn)特性和一個好主意。由于研究隨機數(shù)的團隊很少,所以每項研究都非常重要。我們希望我們的信息能讓其他團隊在借鑒前輩經(jīng)驗的基礎(chǔ)上更快地行動。