Arweave第17版白皮書解讀(四):儲存完整資料副本才是王道

作者:Gerry Wang @ Arweave Oasis,原文首發於 @ArweaveOasis 推特

在解讀(三)文中,我們透過數學推導對#SPoRes 的可行性進行了論證。文中的Bob 與Alice 一起參與了這場證明遊戲。那在#Arweave 挖礦中,協議部署了這個SPoRes 遊戲的修改版本。在挖礦過程中,協議充當了Bob 的角色,而網路中的所有礦工共同扮演Alice 的角色。 SPoRes 遊戲的每個有效證明都用於創建Arweave 的下一個區塊。具體地說來,Arweave 區塊的產生與以下參數相關:

其中:

BI = Arweave 網路的區塊索引Block Index;

800*n_p = 每個檢查點每個分區最多解鎖800 個哈希次數,n_p 是礦工儲存的大小為3.6 TB 的分區的數量,兩者相乘是該礦工每秒最大可以嘗試的哈希運算次數。

d = 網路的難度。

一個成功有效的證明是那些大於難度值的證明,而這個難度值會隨時間變化而被調整,以確保平均每120 秒挖出一個區塊。如果區塊i 與區塊(i+10)之間的時間差為t ,那麼從舊難度d_i 到新難度d_{i+10} 的調整如下計算:

其中:

公式註解:從上面兩個公式中可以看出, 網路難度的調整主要靠參數r,而r 意味著實際的區塊產生所需的時間相對於系統期望的120 秒一個區塊的標準時間的偏移參數。

新計算的難度決定了基於每個生成的SPoA 證明,挖掘區塊成功的機率,具體如下:

公式註解:經過以上推導可以得到新難度下的挖掘成功機率是舊難度下成功機率乘以參數r。

同樣,VDF 的難度也會重新計算,目的是為了保持檢查點週期在時間上能夠每秒發生一次。

完整副本的激勵機制

Arweave 透過SPoRes 機制來產生每個區塊是基於這樣一個假設:

在激勵下,無論是個體礦工還是群體合作礦工,都會以維護完整資料副本作為挖礦的最佳策略來執行。

在先前介紹的SPoRes 遊戲中,儲存資料集的同一部分的兩個副本所釋放的SPoA 雜湊數量與儲存整個資料集的完整副本是相同的,這就給礦工留下了投機行為的可能。於是Arweave 在實際部署這套機制的時候,對其作了一些修改,協議透過將每秒解鎖的SPoA 挑戰數量分成兩部分:

  • 一部分在礦工儲存的分區中指定一個分區來釋放一定數量的SPoA 挑戰;

  • 另一部分則是在Arweave 所有資料分區中隨機指定一個分區來釋放SPoA 挑戰,如果礦工沒有儲存這個分區的副本,則會失去這一部分的挑戰數量。

這裡或許你會覺得有些疑惑,SPoA 與SPoRes 之間究竟是什麼關係。共識機制是SPoRes,為什麼釋放的卻是SPoA 的挑戰?其實它們之間是一種從屬的關係。 SPoRes 是這個共識機制的總稱,其中包含了一系列需要礦工做的SPoA 證明挑戰。

為了理解這一點,我們將檢查前一節中描述的VDF 是如何被用來解鎖SPoA 挑戰的。

以上程式碼詳細表述瞭如何透過VDF(加密時鐘)來解鎖儲存分區中由一定SPoA 數量組成的回溯範圍的過程。

  1. 大約每秒鐘,VDF 雜湊鏈會輸出一個檢查點(Check);

  2. 這個檢查點Check 將與挖礦位址(addr),分區索引(index(p)),和原始VDF 種子(seed)一起用RandomX 演算法計算出一個哈希值H0,該哈希值是一個256 位元的數字;

  3. C1 是回溯偏移量,它是由H0 除以分區的大小size(p) 而產生一個餘數得來,它將是第一個回溯範圍的起始偏移量;

  4. 從這個起始偏移量開始的連續100 MB 範圍內的400 個256 KB 的資料塊,就是被解鎖出來的第一回溯範圍SPoA 挑戰。

  5. C2 是第二回溯範圍的起始偏移量,它是由H0 除以所有分區大小之和而產生的餘數得來的,它同樣也解鎖了第二回溯範圍的400 個SPoA 挑戰。

  6. 這些挑戰的限制是第二範圍內的SPoA 挑戰需要在第一個範圍的對應位置也有SPoA 挑戰。

每個已打包分區的效能

每個已打包分區的效能指的是每個分區在每個VDF 檢查點所產生的SPoA 挑戰數。當礦工儲存的是分區唯一副本Unique Replicas 時,SPoA 挑戰數量將大於礦工儲存相同資料的多個備份Copies 時的數量。

這裡的「唯一副本」概念與「備份」概念是有極大區別的,具體可以閱讀過去的文章《Arweave 2.6 也許更符合中本聰的願景》的內容。

如果礦工只存了分區的唯一副本數據,那麼每個打包過的分區將會產生所有第一回溯範圍的挑戰,然後根據存儲分區副本的數量產生落在該分區內的第二回溯範圍。若整個Arweave 編織網中共有m 個分區,礦工存放了其中n個分區的唯一副本,那麼每個打包分區的性能為:

當礦工儲存的分區是相同資料的備份時,每個打包過的分區仍然會產生所有第一回溯範圍挑戰。但只有在1/m 次情況下,第二回溯範圍會位於這個分區內。這便為這種儲存策略行為帶來了一個顯著的效能懲罰,產生SPoA 挑戰數量的比率僅為:

圖1:當一個礦工(或一組合作的礦工)完成打包他們的資料集時,給定分區的效能會提高。

圖1 中的藍色線為儲存分區唯一副本的效能perf_{unique}(n,m) ,該圖直觀地顯示了,當礦工只儲存了很少的分區副本時,每個分區的挖礦效率僅為50%。當儲存和維護所有資料集部分,即n=m 時,挖礦效率達到最大化的1。

總哈希率

總哈希率(見圖2 所示)由下列方程式給出,透過將每個分區(per partition)的值乘以n 得到:

以上公式顯示了隨著編織網絡(Weave)大小的增長,如果不存儲唯一副本數據,懲罰函數(Penalty Function)隨著存儲分區數量的增加而呈二次方增長。

圖2:唯一資料集和備份資料集的總挖礦哈希率

邊際分區效率

基於這個框架,我們來探討礦工在新增分區時面臨的決策問題,即是選擇複製一個他們已有的分區,還是從其他礦工那裡獲取新資料並打包成唯一副本。當他們從最大可能的m 個分區中已經存儲了n 個分區的唯一副本時,他們的挖礦哈希率是成比例的:

所以增加一個新分區的唯一副本,其額外收益為:

而複製一個已打包分區的(更小的)收益是:

將第一個數量除以第二個數量,我們得到礦工的相對邊際分區效率(relative marginal partition efficiency) :

圖3:礦工被激勵去建構成一個完整的副本(選項1),而不是製作他們已經擁有的資料的額外副本(選項2)

rmpe 值可被視為礦工在新增資料時複製現有分區的一種懲罰。在這個表達式中,我們可以將m 趨向無窮大來處理,然後再考慮不同n 值下的效率權衡:

  • 當礦工擁有接近完整資料集副本時,完成一個副本的獎勵最高。因為如果n 趨近於m 且m 趨向於無窮大,則rmpe 的值就為3。這意味著,接近完整副本時,尋找新資料的效率是重新打包現有資料效率的3 倍。

  • 當礦工儲存一半編織網(Weave)時,例如,當n= 1/2 m, rmpe 是2。這表示尋找新數據的礦工收益是複製現有數據收益的2 倍。

對於較低的n 值,rmpe 值趨向於但總是大於1。這意味著儲存唯一副本的收益永遠都是大於複製現有資料的收益。

隨著網路的成長(m 趨向無窮大),礦工建構成完整副本的動力將會增強。這促進了合作挖礦小組的創建,這些小組共同儲存至少一個資料集的完整副本。

本文主要介紹了Arweave 共識協議建構的細節,當然這也只是這部分核心內容的開頭。從機制介紹與程式碼中,我們可以非常直觀地了解到協議的具體細節。希望能夠幫助大家理解。

Total
0
Shares
Related Posts