波卡的隨機性|PolkadotWiki

波卡作為一條PoS 鏈,隨機性至關重要。波卡的隨機性如何產生?為什麼要選擇這種方案呢?在本章wiki 中給出了說明。 Polkadot Wiki 是波卡官方文檔,PolkaWorld 目前正在翻譯和連載中。

隨機性

在權益證明(PoS)區塊鏈中,隨機性對於驗證人職責的公平且不可預測分配很重要。

計算機並不擅長隨機數,因為它們是確定性設備(相同的輸入始終會產生相同的輸出)。通常大家在計算機上(例如在遊戲應用程序中)所說的“隨機數” 實際上是偽隨機的。也就是說,它們依賴於用戶或其他類型的Oracle(預言機)提供的足夠隨機的種子,例如氣象站的大氣噪聲、你的心律,甚至是熔岩燈,它都可以從中產生一系列看似隨機的數字。但是給定相同的種子,將始終生成相同的序列。

然而,這些輸入將根據時間和空間而變化,而且不可能將相同的結果輸入到全球特定區塊鏈的所有節點中。如果節點獲得不同的輸入並用它來出塊,則會發生分叉。顯然,現實世界的無序狀態不適合用作區塊鏈隨機性的種子。

如今生產環境中有兩種主要的解決區塊鏈隨機性的方法:RANDAO 和VRF。 Polkadot 使用VRF。

VRF

可驗證隨機函數(VRF)是一種數學運算,需要一些輸入並產生一個隨機數以及該提交者生成該隨機數的真實性證明。任何挑戰者都可以驗證該證明,以確保隨機數生成有效。

Polkadot 中使用的VRF 與Ouroboros Praos 中使用的VRF 大致相同。 Ouroboros 的隨機性對於出塊來說是安全的,並且對於BABE 也運行得很好。它們的不同之處在於,Polkadot 的VRF 不依賴於中央時鐘(問題變成了“誰控制中央時鐘?”),而是取決於它自己的過去結果來確定現在和將來的結果,並且它使用時隙號(slot number)作為時鐘仿真器來估計時間。

具體操作如下:

時隙(slots)是時間的離散單位,長度為六秒。每個時隙可以包含一個塊,但也可以不包含一個塊。時隙構成了時期(epochs)—— 在Polkadot上,2400個時隙構成了一個時期,即每個時期為4 小時。

在每個時隙中,每個驗證人都會“擲骰子”。他們執行將以下內容作為輸入的函數(VRF):

密鑰- 專門為“擲骰子” 製作的鑰匙Epoch 隨機值- 上一個(N-2) 之前的epoch 中各個塊的VRF 值的哈希值,因此過去的隨機性會對當前的待確認隨機性(N)產生影響時隙數(slot number)

輸出為兩個值:RESULT(隨機值)和PROOF(證明隨機值已正確生成的證明)。

然後將RESULT 與在協議(具體來說是在Polkadot Host 中)的實現中定義的閾值進行比較。如果該值小於閾值,那麼得出此數字的驗證人將是該插時隙的可行出塊候選者。然後,驗證人嘗試創建一個塊,並將該塊與先前獲得的PROOF 和RESULT 一起提交到網絡中。

釣魚人(fisherman)- 監視網絡的收集人和驗證人錯誤行為的節點,將驗證中繼鏈區塊。由於非法投擲將產生非法區塊,並且由於釣魚人將在驗證人產生的每個區塊中訪問RESULT 和PROOF,因此他們很容易自動報告作弊的驗證人。

總結一下:在VRF 下,每個驗證人都會為自己擲出一個數字,並根據閾值對其進行檢查,如果隨機擲出的骰子低於該閾值,則會生成一個區塊。觀察網絡並報告不良行為的釣魚人事後會驗證這些投擲的有效性,並向系統報告任何作弊行為(例如,有人儘管擲出的數量超過閾值,但仍然假裝成出塊者)。

精明的讀者會注意到,由於這種工作方式,某些時隙可能沒有驗證人作為出塊候選者,因為所有驗證人候選者的得分都太高而錯過了閾值。我們闡明瞭如何解決此問題,並確保與Wiki 頁面的共識部分的Polkadot 出塊時間保持幾乎一致。

RANDAO

另一種獲取鏈上隨機性的方法是以太坊的RANDAO 方法。 RANDAO 要求每個驗證人通過對某些種子執行數千個哈希來進行準備。之後驗證人在回合中發布最終的哈希值,並且從每個參與者進入遊戲中得出隨機數。只要一名誠實的驗證人參加,隨機性就被認為是安全的(在經濟上進行攻擊不可行)。

RANDAO 可以選擇使用VDF 進行增強。

VDFs

可驗證延遲函數( Verifiable Delay Functions )是指即使在並行計算機上也要花費規定時間才能完成的計算。它們產生獨特的輸出,可以公用共設置獨立有效地對其進行驗證。通過將RANDAO 的結果輸入VDF,會引入延遲,從而使任何攻擊者企圖影響當前隨機性的嘗試都將過時。

VDF 一般需要通過ASIC 設備來實現,這類設備需要與其他類型的節點分開運行。儘管只有一台就足以保證系統的安全,並且它們將是開源的並且幾乎免費分發,但是運行這類設備既不便宜也不受激勵,對於選擇這種方法的區塊鏈用戶而言將產生不必要的摩擦。

擴展資料

Polkadot 在隨機數和抽籤上的研究- 包含了在證明機制之間作出選擇的理由:https://research.web3.foundation/en/latest/polkadot/BABE/Babe.html關於Pokadot 中用到的隨機數的討論- W3F 研究員討論波卡中的隨機性及其使用場景和假設:https://github.com/paritytech/ink/issues/57

原文:

https://wiki.polkadot.network/docs/en/learn-randomness



分享至:

作者:PolkaWorld

本文為PANews入駐專欄作者的觀點,不代表PANews立場,不承擔法律責任。

文章及觀點也不構成投資意見

圖片來源:PolkaWorld如有侵權,請聯絡作者刪除。

關注PANews官方賬號,一起穿越牛熊
推薦閱讀
2025-10-01 13:07
2025-09-15 00:34
2025-07-31 08:45
2025-03-12 03:00
2025-03-10 06:19
2025-02-08 09:14

熱門文章

行業要聞
市場熱點
精選讀物

精選專題

App内阅读