Arweave 2.6 也許更符合中本聰的願景

中級3/24/2024, 6:13:29 PM
本文認爲中本聰的願景 — — 人人都可以用 CPU 參與的共識,始終沒有得到實現。這一點,Arweave 的機制迭代可能更加忠實於中本聰原初的願景,而 2.6 版本讓 Arweave 網路開始真正地符合了中本聰的預期。

寫在前面

大概還有一個月,#Bitcoin 就要開始下一輪減半。但筆者認爲中本聰的願景 — — 人人都可以用 CPU 參與的共識,始終沒有得到實現。這一點,Arweave 的機制迭代可能更加忠實於中本聰原初的願景,而 2.6 版本讓 Arweave 網路開始真正地符合了中本聰的預期。它較於先前的版本,做大幅度改進,就爲了實現:

  • 限制硬件加速,通用級 CPU + 機械硬盤就可以參與系統的共識維護,從而降低存儲成本;
  • 將共識成本盡可能引向有效的數據存儲,而不是高耗能的哈希軍備競賽;
  • 激勵礦工建立自己的完整 Arweave 數據集副本,允許數據更快地路由和更加分布式地存儲。

共識機制

基於以上目標,2.6 版本的機制大致如下:

  • 在原本的 SPoRA 機制中新增一個組件稱爲哈希鏈(Hash Chain),它就是之前提及的加密算法時鍾,每秒會生成一個 SHA-256 的挖礦哈希(Mining Hash)。
  • 礦工在自己存儲的數據分區中選擇一個分區的索引,將其與挖礦哈希,挖礦地址一起作爲挖礦輸入信息來開始挖礦。
  • 在礦工選擇的分區中生成一個回溯範圍 1,並在編織網路中的隨機位置再生成一個回溯範圍 2。
  • 依次使用回溯範圍 1 內的回溯數據塊(Chunk)來計算,嘗試是否是區塊解決方案。如果計算結果大於當前網路難度,礦工獲得出塊權;如果沒有成功,就計算回溯範圍中的下一個回溯塊。
  • 範圍 2 中的回溯數據塊也可能被計算驗證,但那裏的解決方案需要範圍 1 的哈希。

圖 1: 2.6 版本的共識機制示意圖

來認識一下在此機制中出現的各種名詞概念:

Arweave 數據(Arweave Data):又稱“編織網路”。網路中的所有數據都被分割成一個一個的數據塊,英文名稱 Chunk(上圖中像“磚牆”一樣的一個個塊就是 chunk)。這些塊可以在 Arweave 網路中均勻分布,並通過默克爾樹的方式來爲每一個數據塊建立尋址方案(也稱爲 Global Offset 全局偏移量),以此來識別編織網路中任何位置的數據塊。

數據塊(Chunk):每個數據塊的大小通常爲 256 KB。礦工要贏得出塊權就必須對相應數據塊進行打包與哈希處理,並在 SPoRA 挖礦過程中證明他們存儲了數據副本。

分區(Partition):「分區」是在 2.6 版本中新增的概念。每 3.6TB 爲一個分區。分區從編織網路的開始處(索引爲 0)一直編號到覆蓋整個編織網路的分區數量。

回溯範圍(Recall Range):回溯範圍也是 2.6 版本中的新增概念。它是編織網路中從特定偏移量開始、長度爲 100MB 的一系列連續的數據塊(Chunk)。按 256 KB 一個數據塊來算,在一個回溯範圍中包括了 400 個數據塊。該機制中,會有兩個回溯範圍,下文會作詳細解釋。

潛在解決方案(Potential Solutions):回溯範圍內的每個 256KB 數據塊都將是獲得出塊權的潛在解決方案。作爲挖礦過程的一部分,每個數據塊都會被哈希處理,來測試它是否滿足網路的難度要求。如果滿足,礦工就贏得了出塊權並獲得挖礦獎勵。如果不滿足,礦工將繼續嘗試回溯範圍內的下一個 256KB 塊。

哈希鏈(Hash Chain):哈希鏈是 2.6 版本的關鍵更新,它在之前的 SPoRA 上添加的一個加密時鍾,起到了限制最大哈希量的限速作用。哈希鏈通過使用 SHA-256 函數對一段數據進行連續次哈希而生成的。這個過程不能並行計算(消費級 CPU 就可以輕鬆做到),哈希鏈通過進行一定數量的連續哈希處理來達成延遲 1 秒的效果。

挖掘哈希(Mining Hash):在進行足夠數量的連續哈希之後(即經過了 1 秒的延遲),哈希鏈產出一個被認爲對挖礦有效的哈希值。值得注意的是,挖礦哈希在所有礦工之間是一致的,並且所有礦工都可以驗證。

介紹完所有必要的名詞概念後,我們可以通過如何獲得最佳策略來一起更好地理解 2.6 版本是如何運作的。

最佳策略

Arweave 的總目標之前已經多次介紹,就是最大化網路上存儲數據副本的數量。但存什麼?怎麼存?其中也有不少要求與門道。這裏我們來討論如何採取一個最佳策略。

Replicas 與 Copies

自 2.6 版本之後,筆者在各種技術資料裏就頻繁看到兩個詞,Replicas 與 Copies。這兩個概念翻譯成中文都可以是副本的意思,但其實它們之間有着非常大的差別,這也爲我在理解機制的時候造成了不小的障礙。爲了便於理解,我傾向於將 Replicas 翻譯成「副本」,將 Copies 翻譯成「備份」。

Copies 備份是指單純地對數據進行復制,相同數據的備份之間沒有差異。

Replicas 副本的意思講究其唯一性,是在對數據進行了一次唯一性處理後再存儲的行爲。Arweave 網路鼓勵的是對副本的存儲,而不是單純的備份存儲。

Note: 在 2.7 版本中共識機制變成了 SPoRes,即爲 Succinct Proofs of Replications 簡潔的復制證明,就是以副本存儲展開的,我將在未來再行解讀。

打包唯一副本(Packing unique replicas)

唯一副本在 Arweave 機制中非常重要,礦工想要獲得出塊權,就必須將所有數據都以特定的格式打包處理,以形成屬於自己的唯一副本,這是先決條件。

如果你想要跑一個新的節點,想着直接拷貝其它礦工已經打過包的數據是不行的。你首先需要將 Arweave 編織網路中的原始數據下載同步下來(當然你不想全部下載,只下載部分也可以,還可以設置自己的數據政策,過濾掉有風險的數據),然後通過 RandomX 函數來打包這些原始數據的每一個數據塊,讓其成爲潛在的挖礦解決方案。

打包過程包括提供一個 Packing Key 打包密鑰給 RandomX 函數,讓它通過多次運算而生成的結果用於打包原始數據塊。解壓已打包數據塊的過程也是一樣,提供打包密鑰,用通過多次運算生成的結果去解壓已打包數據塊。

在 2.5 版本中,Packing Key 備份是由 chunk_offset(數據塊的偏移量,也可以理解成數據塊的位置參數)和 tx_root(交易根)關聯後的 SHA256 哈希。這保證了每次挖掘礦解決方案都來自於特定區塊中數據塊的唯一副本。如果一個數據塊在破壞網路中不同位置存在多個備份,每個備份都需要單獨備份成唯一副本。

在 2.6 版本中,這個備份密鑰被擴展爲 chunk_offset、tx_root 和 miner_address(礦工地址)關聯後的 SHA256 哈希。這意味着每個副本也對每個挖礦地址都是唯一的。

存儲完整副本的優勢

算法建議礦工去構建一個唯一的完整副本,而不是被多次復制的部分副本,這使得網路中數據均勻分布。

這部分怎麼理解呢?我們通過下面兩張圖的對比來理解。

首先讓我們先假設整個 Arweave 斷裂網路一共產生了 16 個數據分區。

第一種情況:

  • 礦工鮑勃嫌下載數據太費時,所以只下載了破壞網路的前4個分區的數據。
  • 爲了能夠最大化這 4 個分區的挖礦副本,鮑勃靈機一動,把這4個分區的數據復制了 4 份,並分別用不同的4個挖礦地址將它們組成4個唯一副本資源來填充自己的存儲空間,所以現在在 Bob 的存儲空間中有 16 個分區。這樣沒有問題,符合唯一副本的規則。
  • 接下來,Bob 可以在每秒獲得挖礦哈希(Mining Hash)的時候,爲分區每個生成一個回溯範圍物質其中的數據塊進行侵犯測試。這使得 Bob 在一秒內獲得 400* 16=6400 次潛在挖礦解決方案。
  • 但鮑勃也爲他的小聰明代價第二,因爲他必須損失了一個回溯範圍的挖礦機會,看到這些的那些「小問號」了嗎?它們代表了相關的第二次一個回溯範圍在 Bob 的硬盤中是找不到的,因爲他們標志着 Bob 沒有存儲的數據分區中。當然運氣好,也有比較低的指示燈象徵着 Bob 存儲的 4 個分區中,這一點也就 25%,即 1600 個潛在解決方案。
  • 所以這個策略讓 Bob 每秒有 6400+1600=8000 個潛在解決方案。

圖 2:第一種情況,Bob 的「小聰明」策略

第二種情況:

那我們再看看第二個情況。由於兩個回溯範圍的機制安排,一個更優的策略就是存儲問題多的唯一副本。如圖 3 所示。

  • 礦工Alice就不像 Bob 那樣「聰明伶俐」,她本分地下載了所有 16 個分區的分區數據,並且只用一個挖礦地址將 16 個備份組成唯一副本。
  • 因爲 Alice 也是 16 個分區,所以第一個回溯範圍的總潛在解決方案與 Bob 一致,也是 6400 個。
  • 但在這種情況下,Alice 獲得了所有第二個回溯範圍潛在解決方案。那就是額外的 6400 個。
  • 所以這讓 Alice 策略每秒有 6400+6400=12800 個潛在解決方案。優勢不言而喻。

圖 3:Alice 的策略,顯然有更大的優勢

回溯範圍的作用

也許你會奇怪,在 2.5 版本之前都是隨機地通過函數哈希出單個回溯塊的偏移量再次讓礦工查找並給出存儲證明,爲什麼到了 2.6 會是哈希出一個回溯範圍呢?

原因其實很好理解,回溯範圍是由連續的數據塊組成的,這種結構不爲別的,其目的就是讓機械硬盤(HDD)的讀取頭的移動量最小化。這種方式帶來的物理上的優化使 HDD 的讀取性能可以與更昂貴的 SSD 硬盤(SSD)放在一起。這就像給SSD綁住了一只手與一只腳,當然能夠每秒傳輸四個回溯範圍擁有昂貴的 SSD,還是有一點點的速度優勢。但相比更便宜的 HDD,其計數將是促使礦工選擇的關鍵指標。

哈希鏈的驗證

現在我們來討論下一個新區塊的驗證問題。

要接受一個新區塊,驗證者需要對區塊生產者同步過來的新塊作驗證,方法是可以用自己生成的挖礦哈希來驗證新區塊的挖礦哈希。

如果驗證者不在哈希鏈的當前頭部,則每個挖礦哈希包括 25 個 40 毫秒的檢查點。這些檢查點是連續哈希 40 毫秒的結果,它們組合到一起便代表了來自前一個挖礦的哈希開始的一秒間隔。

驗證者在將新收到的區塊傳播給其他節點之前,將在40毫秒內快速完成驗證前 25 個檢查點,如果驗證成功,則引發傳播區塊,並繼續完成剩餘檢查點的驗證。完整的檢查點是通過全部驗證剩餘檢查點而完成的。前 25 個檢查點之後是 500 個驗證的檢查點,然後是 500 個驗證的檢查點,每個小組後續的 500 個檢查點點的間隔加倍。

哈希鏈在產生挖礦哈希時,必須按順序單線進行。但驗證者驗證檢查點時可以進行哈希驗證,這可以讓驗證區塊的時間變得更短,提高效率。

圖 4:哈希鏈的驗證過程

哈希鏈的種子

如果礦工或礦池擁有更快的 SHA256 哈希運算能力,他們的哈希鏈可能會領先於網路中的其他節點。 隨着時間的流逝,這個區塊速度優勢可能會積累成巨大的哈希鏈偏移,產生的挖礦哈希與其餘驗證者不同步。這可能導致一系列不可控的分叉和重組現象。

爲了減少這種哈希鏈偏移的可能性,Arweave 通過在固定間隔上使用來自歷史區塊的令牌來同步全局哈希鏈。這會定期爲哈希鏈提供新的種子,從而使各個礦工的哈希鏈與一個已驗證的區塊同步。

哈希鏈種子的間隔是每 50 * 120 個挖礦哈希(50 代表區塊數量,120 代表一個區塊生產週期 2 分鍾內的挖礦哈希數量)選擇一個新的種子區塊。這使得種子區塊大約每~50個Arweave區塊出現一次,但由於區塊時間存在一些變化,種子區塊可能會比 50 個區塊出現得更早晚一些。

圖 5:哈希鏈種子的生成方式

以上是作者花了一些時間從 2.6 規範中摘選出來的內容,從這些可以看出,Arweave 從 2.6 開始就已經實現了低功耗,下面,更加去中心化的思想機制來運行整個網路。中本聰的願景,在Arweave中得到了實踐。

Arweave 2.6:https://2-6-spec.arweave.dev/https://2-6-spec.arweave.dev/

聲明:

  1. 本文轉載自[PermaDAO],著作權歸屬原作者[Arweave Oasis],如對轉載有異議,請聯系Gate Learn團隊,團隊會根據相關流程盡速處理。

  2. 免責聲明:本文所表達的觀點和意見僅代表作者個人觀點,不構成任何投資建議。

  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得復制、傳播或抄襲經翻譯文章。

Arweave 2.6 也許更符合中本聰的願景

中級3/24/2024, 6:13:29 PM
本文認爲中本聰的願景 — — 人人都可以用 CPU 參與的共識,始終沒有得到實現。這一點,Arweave 的機制迭代可能更加忠實於中本聰原初的願景,而 2.6 版本讓 Arweave 網路開始真正地符合了中本聰的預期。

寫在前面

大概還有一個月,#Bitcoin 就要開始下一輪減半。但筆者認爲中本聰的願景 — — 人人都可以用 CPU 參與的共識,始終沒有得到實現。這一點,Arweave 的機制迭代可能更加忠實於中本聰原初的願景,而 2.6 版本讓 Arweave 網路開始真正地符合了中本聰的預期。它較於先前的版本,做大幅度改進,就爲了實現:

  • 限制硬件加速,通用級 CPU + 機械硬盤就可以參與系統的共識維護,從而降低存儲成本;
  • 將共識成本盡可能引向有效的數據存儲,而不是高耗能的哈希軍備競賽;
  • 激勵礦工建立自己的完整 Arweave 數據集副本,允許數據更快地路由和更加分布式地存儲。

共識機制

基於以上目標,2.6 版本的機制大致如下:

  • 在原本的 SPoRA 機制中新增一個組件稱爲哈希鏈(Hash Chain),它就是之前提及的加密算法時鍾,每秒會生成一個 SHA-256 的挖礦哈希(Mining Hash)。
  • 礦工在自己存儲的數據分區中選擇一個分區的索引,將其與挖礦哈希,挖礦地址一起作爲挖礦輸入信息來開始挖礦。
  • 在礦工選擇的分區中生成一個回溯範圍 1,並在編織網路中的隨機位置再生成一個回溯範圍 2。
  • 依次使用回溯範圍 1 內的回溯數據塊(Chunk)來計算,嘗試是否是區塊解決方案。如果計算結果大於當前網路難度,礦工獲得出塊權;如果沒有成功,就計算回溯範圍中的下一個回溯塊。
  • 範圍 2 中的回溯數據塊也可能被計算驗證,但那裏的解決方案需要範圍 1 的哈希。

圖 1: 2.6 版本的共識機制示意圖

來認識一下在此機制中出現的各種名詞概念:

Arweave 數據(Arweave Data):又稱“編織網路”。網路中的所有數據都被分割成一個一個的數據塊,英文名稱 Chunk(上圖中像“磚牆”一樣的一個個塊就是 chunk)。這些塊可以在 Arweave 網路中均勻分布,並通過默克爾樹的方式來爲每一個數據塊建立尋址方案(也稱爲 Global Offset 全局偏移量),以此來識別編織網路中任何位置的數據塊。

數據塊(Chunk):每個數據塊的大小通常爲 256 KB。礦工要贏得出塊權就必須對相應數據塊進行打包與哈希處理,並在 SPoRA 挖礦過程中證明他們存儲了數據副本。

分區(Partition):「分區」是在 2.6 版本中新增的概念。每 3.6TB 爲一個分區。分區從編織網路的開始處(索引爲 0)一直編號到覆蓋整個編織網路的分區數量。

回溯範圍(Recall Range):回溯範圍也是 2.6 版本中的新增概念。它是編織網路中從特定偏移量開始、長度爲 100MB 的一系列連續的數據塊(Chunk)。按 256 KB 一個數據塊來算,在一個回溯範圍中包括了 400 個數據塊。該機制中,會有兩個回溯範圍,下文會作詳細解釋。

潛在解決方案(Potential Solutions):回溯範圍內的每個 256KB 數據塊都將是獲得出塊權的潛在解決方案。作爲挖礦過程的一部分,每個數據塊都會被哈希處理,來測試它是否滿足網路的難度要求。如果滿足,礦工就贏得了出塊權並獲得挖礦獎勵。如果不滿足,礦工將繼續嘗試回溯範圍內的下一個 256KB 塊。

哈希鏈(Hash Chain):哈希鏈是 2.6 版本的關鍵更新,它在之前的 SPoRA 上添加的一個加密時鍾,起到了限制最大哈希量的限速作用。哈希鏈通過使用 SHA-256 函數對一段數據進行連續次哈希而生成的。這個過程不能並行計算(消費級 CPU 就可以輕鬆做到),哈希鏈通過進行一定數量的連續哈希處理來達成延遲 1 秒的效果。

挖掘哈希(Mining Hash):在進行足夠數量的連續哈希之後(即經過了 1 秒的延遲),哈希鏈產出一個被認爲對挖礦有效的哈希值。值得注意的是,挖礦哈希在所有礦工之間是一致的,並且所有礦工都可以驗證。

介紹完所有必要的名詞概念後,我們可以通過如何獲得最佳策略來一起更好地理解 2.6 版本是如何運作的。

最佳策略

Arweave 的總目標之前已經多次介紹,就是最大化網路上存儲數據副本的數量。但存什麼?怎麼存?其中也有不少要求與門道。這裏我們來討論如何採取一個最佳策略。

Replicas 與 Copies

自 2.6 版本之後,筆者在各種技術資料裏就頻繁看到兩個詞,Replicas 與 Copies。這兩個概念翻譯成中文都可以是副本的意思,但其實它們之間有着非常大的差別,這也爲我在理解機制的時候造成了不小的障礙。爲了便於理解,我傾向於將 Replicas 翻譯成「副本」,將 Copies 翻譯成「備份」。

Copies 備份是指單純地對數據進行復制,相同數據的備份之間沒有差異。

Replicas 副本的意思講究其唯一性,是在對數據進行了一次唯一性處理後再存儲的行爲。Arweave 網路鼓勵的是對副本的存儲,而不是單純的備份存儲。

Note: 在 2.7 版本中共識機制變成了 SPoRes,即爲 Succinct Proofs of Replications 簡潔的復制證明,就是以副本存儲展開的,我將在未來再行解讀。

打包唯一副本(Packing unique replicas)

唯一副本在 Arweave 機制中非常重要,礦工想要獲得出塊權,就必須將所有數據都以特定的格式打包處理,以形成屬於自己的唯一副本,這是先決條件。

如果你想要跑一個新的節點,想着直接拷貝其它礦工已經打過包的數據是不行的。你首先需要將 Arweave 編織網路中的原始數據下載同步下來(當然你不想全部下載,只下載部分也可以,還可以設置自己的數據政策,過濾掉有風險的數據),然後通過 RandomX 函數來打包這些原始數據的每一個數據塊,讓其成爲潛在的挖礦解決方案。

打包過程包括提供一個 Packing Key 打包密鑰給 RandomX 函數,讓它通過多次運算而生成的結果用於打包原始數據塊。解壓已打包數據塊的過程也是一樣,提供打包密鑰,用通過多次運算生成的結果去解壓已打包數據塊。

在 2.5 版本中,Packing Key 備份是由 chunk_offset(數據塊的偏移量,也可以理解成數據塊的位置參數)和 tx_root(交易根)關聯後的 SHA256 哈希。這保證了每次挖掘礦解決方案都來自於特定區塊中數據塊的唯一副本。如果一個數據塊在破壞網路中不同位置存在多個備份,每個備份都需要單獨備份成唯一副本。

在 2.6 版本中,這個備份密鑰被擴展爲 chunk_offset、tx_root 和 miner_address(礦工地址)關聯後的 SHA256 哈希。這意味着每個副本也對每個挖礦地址都是唯一的。

存儲完整副本的優勢

算法建議礦工去構建一個唯一的完整副本,而不是被多次復制的部分副本,這使得網路中數據均勻分布。

這部分怎麼理解呢?我們通過下面兩張圖的對比來理解。

首先讓我們先假設整個 Arweave 斷裂網路一共產生了 16 個數據分區。

第一種情況:

  • 礦工鮑勃嫌下載數據太費時,所以只下載了破壞網路的前4個分區的數據。
  • 爲了能夠最大化這 4 個分區的挖礦副本,鮑勃靈機一動,把這4個分區的數據復制了 4 份,並分別用不同的4個挖礦地址將它們組成4個唯一副本資源來填充自己的存儲空間,所以現在在 Bob 的存儲空間中有 16 個分區。這樣沒有問題,符合唯一副本的規則。
  • 接下來,Bob 可以在每秒獲得挖礦哈希(Mining Hash)的時候,爲分區每個生成一個回溯範圍物質其中的數據塊進行侵犯測試。這使得 Bob 在一秒內獲得 400* 16=6400 次潛在挖礦解決方案。
  • 但鮑勃也爲他的小聰明代價第二,因爲他必須損失了一個回溯範圍的挖礦機會,看到這些的那些「小問號」了嗎?它們代表了相關的第二次一個回溯範圍在 Bob 的硬盤中是找不到的,因爲他們標志着 Bob 沒有存儲的數據分區中。當然運氣好,也有比較低的指示燈象徵着 Bob 存儲的 4 個分區中,這一點也就 25%,即 1600 個潛在解決方案。
  • 所以這個策略讓 Bob 每秒有 6400+1600=8000 個潛在解決方案。

圖 2:第一種情況,Bob 的「小聰明」策略

第二種情況:

那我們再看看第二個情況。由於兩個回溯範圍的機制安排,一個更優的策略就是存儲問題多的唯一副本。如圖 3 所示。

  • 礦工Alice就不像 Bob 那樣「聰明伶俐」,她本分地下載了所有 16 個分區的分區數據,並且只用一個挖礦地址將 16 個備份組成唯一副本。
  • 因爲 Alice 也是 16 個分區,所以第一個回溯範圍的總潛在解決方案與 Bob 一致,也是 6400 個。
  • 但在這種情況下,Alice 獲得了所有第二個回溯範圍潛在解決方案。那就是額外的 6400 個。
  • 所以這讓 Alice 策略每秒有 6400+6400=12800 個潛在解決方案。優勢不言而喻。

圖 3:Alice 的策略,顯然有更大的優勢

回溯範圍的作用

也許你會奇怪,在 2.5 版本之前都是隨機地通過函數哈希出單個回溯塊的偏移量再次讓礦工查找並給出存儲證明,爲什麼到了 2.6 會是哈希出一個回溯範圍呢?

原因其實很好理解,回溯範圍是由連續的數據塊組成的,這種結構不爲別的,其目的就是讓機械硬盤(HDD)的讀取頭的移動量最小化。這種方式帶來的物理上的優化使 HDD 的讀取性能可以與更昂貴的 SSD 硬盤(SSD)放在一起。這就像給SSD綁住了一只手與一只腳,當然能夠每秒傳輸四個回溯範圍擁有昂貴的 SSD,還是有一點點的速度優勢。但相比更便宜的 HDD,其計數將是促使礦工選擇的關鍵指標。

哈希鏈的驗證

現在我們來討論下一個新區塊的驗證問題。

要接受一個新區塊,驗證者需要對區塊生產者同步過來的新塊作驗證,方法是可以用自己生成的挖礦哈希來驗證新區塊的挖礦哈希。

如果驗證者不在哈希鏈的當前頭部,則每個挖礦哈希包括 25 個 40 毫秒的檢查點。這些檢查點是連續哈希 40 毫秒的結果,它們組合到一起便代表了來自前一個挖礦的哈希開始的一秒間隔。

驗證者在將新收到的區塊傳播給其他節點之前,將在40毫秒內快速完成驗證前 25 個檢查點,如果驗證成功,則引發傳播區塊,並繼續完成剩餘檢查點的驗證。完整的檢查點是通過全部驗證剩餘檢查點而完成的。前 25 個檢查點之後是 500 個驗證的檢查點,然後是 500 個驗證的檢查點,每個小組後續的 500 個檢查點點的間隔加倍。

哈希鏈在產生挖礦哈希時,必須按順序單線進行。但驗證者驗證檢查點時可以進行哈希驗證,這可以讓驗證區塊的時間變得更短,提高效率。

圖 4:哈希鏈的驗證過程

哈希鏈的種子

如果礦工或礦池擁有更快的 SHA256 哈希運算能力,他們的哈希鏈可能會領先於網路中的其他節點。 隨着時間的流逝,這個區塊速度優勢可能會積累成巨大的哈希鏈偏移,產生的挖礦哈希與其餘驗證者不同步。這可能導致一系列不可控的分叉和重組現象。

爲了減少這種哈希鏈偏移的可能性,Arweave 通過在固定間隔上使用來自歷史區塊的令牌來同步全局哈希鏈。這會定期爲哈希鏈提供新的種子,從而使各個礦工的哈希鏈與一個已驗證的區塊同步。

哈希鏈種子的間隔是每 50 * 120 個挖礦哈希(50 代表區塊數量,120 代表一個區塊生產週期 2 分鍾內的挖礦哈希數量)選擇一個新的種子區塊。這使得種子區塊大約每~50個Arweave區塊出現一次,但由於區塊時間存在一些變化,種子區塊可能會比 50 個區塊出現得更早晚一些。

圖 5:哈希鏈種子的生成方式

以上是作者花了一些時間從 2.6 規範中摘選出來的內容,從這些可以看出,Arweave 從 2.6 開始就已經實現了低功耗,下面,更加去中心化的思想機制來運行整個網路。中本聰的願景,在Arweave中得到了實踐。

Arweave 2.6:https://2-6-spec.arweave.dev/https://2-6-spec.arweave.dev/

聲明:

  1. 本文轉載自[PermaDAO],著作權歸屬原作者[Arweave Oasis],如對轉載有異議,請聯系Gate Learn團隊,團隊會根據相關流程盡速處理。

  2. 免責聲明:本文所表達的觀點和意見僅代表作者個人觀點,不構成任何投資建議。

  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得復制、傳播或抄襲經翻譯文章。

เริ่มตอนนี้
สมัครและรับรางวัล
$100