Filecoin 將區塊鏈引入到分佈式存儲領域,Filecash 通過新的技術探索權衡安全與效率。

撰文:Luff

正如比特幣擴容之爭分叉出比特現金,在 Filecoin 誕生三年後,基於不同理念的社區人士發起了首個分叉項目 Filecash。Filecoin 是將區塊鏈引入分佈式存儲領域的第一個喫螃蟹的人,它希望通過一系列機制設計成爲存儲人類重要數據的激勵相容的網絡系統。

但複雜的系統設計使得 Filecoin 的進展舉步維艱,執着於「存儲有價值數據」的初衷讓 Filecoin 飽受爭議,主要體現爲兩點:

  • 技術方案:高證明成本導致網絡參與門檻過高
  • 經濟模型:抵押、懲罰等機制對礦工過於嚴苛

作爲 Filecoin 的分叉項目,Filecash 試圖通過方案改進來平衡社區的利益紛爭。本文主要從技術角度闡述 Filecoin 的運行方式及 Filecash 的新探索。

Filecoin 市場機制

爲更好理解 Filecoin 的技術原理,我們先簡單介紹 Filecoin 的市場機制。Filecoin 構建了兩個市場:數據存儲市場和數據檢索市場,兩個市場分別存在礦工和用戶。

分佈式存儲技術改進:從 Filecoin 到 FilecashFilecoin 存儲市場與檢索市場運行流程,來源 Filecoin 白皮書

存儲市場

存儲市場是由存儲礦工與有數據存儲需求的用戶參與的市場。存儲市場中客戶提出存儲數據的需求,而存儲礦工,提供他們的存儲空間和存儲服務。一個完整的存儲週期如下:

第一,存儲礦工提供自身價格及存儲要求至訂單簿。訂單薄是公開的,任何人都可以查看,存儲市場的服務價格是由市場所決定。
第二,當客戶的需求價格與存儲礦工的訂單相匹配時候, 交易自動撮合。
第三,驗證者驗證礦工是否存儲有效數據,採用零知識的非交互式證明進行驗證,有效保護隱私。

檢索市場

檢索市場爲鏈下市場,用戶可以通過檢索市場訪問自己所需要的數據,由檢索礦工來提供檢索服務。檢索礦工不參與區塊生成環節,直接從客戶端獲取相應服務費用。

一個完整的檢索週期如下:

第一,用戶與檢索礦工廣播出價單和報價單,如發現訂單匹配,則在鏈下訂單簿發起交易。
第二,達成交易後,雙方建立鏈下支付及數據傳輸信道完成交易。
第三,交易完成後,訂單和交易提交至區塊鏈記錄,並驗證交易結果。

Filecoin 如何實現這樣一個基於區塊鏈的數據市場?共識機制是關鍵,它決定了區塊鏈的基本運行邏輯並維護網絡安全。

Filecoin 共識機制:預期共識爲主,複製證明+時空證明爲輔

Filecoin 採用了預期共識爲主,複製證明+時空證明爲輔的混合共識技術。其中預期共識決定在一個週期內由誰產生 TipSet (Filecoin 網絡中的區塊集合),而複製證明和時空證明則維護網絡穩定安全運行。

預期共識(EC)

預期共識脫胎於權益證明共識機制(PoS),只不過將權益共識裏面的代幣權益換成了存儲。每一輪選舉一名或者多名領導礦工來創建新的區塊,礦工贏得選舉的可能性跟礦工當前的存儲能力成正比。

每一輪,選舉出來的領導礦工數期望值爲 e (某個常數,比如爲 5),被選舉出來的礦工創建新的區塊,並對網絡進行廣播。 Filecoin 區塊鏈,每個區塊高度對應到的是一個區塊集合 (Tipset) ,每個區塊集合包含數量不定的區塊,這種鏈式結構接近有向無環圖 (DAG) 。

Filecoin 希望構建一個開放的、人人可參與的、無需信任的經濟系統。首先要保證系統安全穩定運行,防止網絡攻擊。從存儲角度理解,網絡面臨兩個問題:

  • 礦工確實按照用戶需求存儲了數據的相應備份,並且數據能夠被訪問;
  • 在合同有效期內,礦工不得刪除用戶數據。

如何約束礦工實現以上兩點?Filecoin 存儲證明就是解決之道。Filecoin 存儲證明由複製證明(PoRep)與時空證明(PoSt)兩部分組成。其中複製證明用於解決第一個問題,而時空證明則解決第二個問題。

複製證明

簡單來講,複製證明就是礦工證明自己真的存儲了用戶的數據。

用其發明者 Ben Fisch 的話來解釋:

「複製證明(PoRep)是一個交互式證明系統。在這個系統中,存儲的提供者需要提供可公開驗證的證明,來表明其爲一個數據文件副本分配了獨有的空間資源,而且所存儲的數據是可檢索的。

進一步說,PoRep 使證明者能夠證明他們正在使用不低於需要的最小空間來存儲信息,並實際使用該空間來存儲有用的信息。同時,PoRep 可以有效地提取存儲的任何數據。」
分佈式存儲技術改進:從 Filecoin 到 Filecash
在複製證明過程中,存儲礦工將用戶數據存儲到扇區(一個扇區大小爲 32G 或 64G)。扇區被存滿後,礦工對扇區進行封裝,封裝是一個計算量很大的過程,它會生成數據的唯一標識碼。一旦數據被封裝,存儲礦工生成證明,然後對證明進行零知識證明壓縮,最後將壓縮結果提交到鏈上,成爲存儲承諾完成的證明。

複製證明通過四個階段來完成:

  1. 密封預交付第 1 階段(P1):在這個階段,進行 PoRep SDR 編碼。這個階段受 CPU 限制,是單線程的。這個階段預計需要幾個小時的時間,精確的時間取決於被密封的扇區的大小,當然,也取決於進行密封的機器的規格。
  2. 密封預交付第 2 階段(P2):在這個階段,Merkle 樹的生成是使用 Poseidon 哈希算法執行的。這個過程主要是 GPU 限制的,但應該預期會慢得多。當使用 GPU 時,此階段預計需要 45 分鐘到 1 小時。
  3. 密封提交階段 1(C1):這是一箇中間階段,執行生成證據所需的準備工作。它受 CPU 限制,通常在幾十秒內完成。
  4. 密封提交階段 2(C2):最後,這個密封階段涉及到創建一個 SNARK,在它被廣播到區塊鏈之前,它被用來壓縮必要的證據。這是一個 GPU 密集型過程,預計需要 20-30 分鐘才能完成。

時空證明

複製證明完成後,存儲礦工必須證明其持續存儲了用戶數據,這將通過時空證明完成。時空證明是向存儲礦工發出加密挑戰的過程,只有直接封裝扇區的礦工才能正確回答。存儲礦工必須在嚴格的時間限制內應對這一挑戰。Filecoin 中時空證明有兩大挑戰:WindowPoSt 和 WinningPoSt,此處不作展開。

分佈式存儲技術改進:從 Filecoin 到 Filecash時空證明底層機制,來源 Filecoin 白皮書

Filecoin 安全機制

Filecoin 白皮書中提到複製證明可有效防止女巫攻擊、生成攻擊和外包攻擊。但需要考慮一個問題:複製證明作爲一種證明算法,本身可以否被僞造?答案是肯定的,事實上任何公開的證明都可以被僞造(攻擊),機制設計的目的就是提高攻擊者的成本,讓其攻擊成本高於獲利就能避免攻擊。

不難想象這樣一種攻擊行爲:

礦工在存儲用戶數據的時候發起複製證明,然後在複製證明完成後刪除數據;而在需要時空證明的時候再做一次複製證明。這樣,存儲礦工別沒有持續保存用戶數據的備份,但卻依舊能夠完成整個存儲證明而獲得獎勵。

其實在 Filecoin 存儲證明中,複製證明與時空證明是相互依賴的。Filecoin 通過兩個證明過程的時間要求來避免攻擊。具體來說,時空證明必須在很短的時間內完成,否則無效;而複製證明如果不能在很短的時間內完成的話,就不能發起攻擊。當這兩個時間的差距越大,安全性就越高。Filecoin 網絡對證明時間的要求:

  • 時空證明要在小於一個區塊時間內完成(小於 30s),時空證明的時間是網絡設定的;
  • 複製證明被設計成通過數小時才能完成,複製證明的時間消耗是由於算法的複雜性造成的。

單純從安全角度考慮,複製證明所消耗的時間越長,對網絡而言越安全,可以從以下兩個角度考慮延長複製證明所消耗的時間:

  • 算法長度:步驟越多的算法需要的時間越長
  • 算法可並行性:並行度可以通過增加資源減少運算時間

具體來說,當前 Filecoin 複製證明所採用的 SDR 算法在這兩方面都保證了足夠的強度。

算法長度通過多步驟計算實現:比如在複製證明中要計算 11 層 labels,這個層數可以調整,層數越多,時間越長;
每層計算之間強依賴關係來去並行化:在計算 labels 時,每一步的計算都依賴上一步的結果,所以不能通過增加資源的方式來縮短計算時間;

但是,安全的代價往往是高成本。Filecoin 在保證網絡安全性的同時帶來了幾個問題:

  • 高昂的計算成本降低了網絡的經濟效率,類似 PoW 一樣通過消耗昂貴的計算資源僅僅達成存儲證明,這一點與 Filecoin 白皮書提倡的「有用共識」相悖;
  • 複雜的證明過程提升了對礦機硬件配置的要求,特別是 CPU、GPU 與 RAM 上的成本。

分佈式存儲技術改進:從 Filecoin 到 Filecash主流 Filecoin 礦商 CPU 與 GPU 配置對比

Filecash 的技術權衡

儘管 Protocol Labs 一直在優化複製證明算法,例如計劃升級到 NSE 算法以改善成本和檢索延遲,但短期內仍然無法解決效率問題。在安全性與成本的權衡中,Filecash 選擇了適當降低安全性,換取更低的參與門檻。

Filecoin 計算資源消耗主要集中在複製證明第一階段,Filecash 方案優化也主要在這個階段,體現爲以下幾點:

  1. 升級 P1 核心算法,將 SHA256 算法升級爲 SHA512。由於 AMD 處理器支持 SHA256 擴展,這樣會使得 AMD 處理器在 P1 階段具備極大優勢,可能使用英特爾處理器計算 P1 過程需要 30 個小時,而是用 AMD 處理器去只需要 4 個小時。這將導致大量閒置的英特爾機器因爲不具備經濟效益,無法參與 Filecoin 網絡。而升級到 SHA512 算法 Filecash 可同時接納不同處理器機器。
  2. 將 P1 階段計算層數由 11 層減爲 8 層。參考一些容量證明項目,8 層的計算層數已經能夠提供足夠的安全性,但是卻可以大大提高經濟效益。
  3. 修改扇區大小爲 16G,降低內存佔用量。目前 Filecoin 的扇區大小是 32G 和 64G,這就要求礦工的電腦也至少需要 64G 的內存。一般的普通用戶或者家用電腦無法滿足這個配置需求,他們將被排除在系統之外。通過降低扇區大小,可以讓更多相對低配置的設備(比如家用電腦)參與到早期網絡。

Filecash 技術方案核心邏輯是在於降低生態的參與門檻,讓大量的閒置的設備,還有家庭的客戶能夠參與到網絡,給網絡提供共識。強壯的共識能爲生態保駕護航,強壯的共識底層能爲生態吸引更多開發者和使用者,活躍的生態才能爲礦工提供穩定的挖礦收益,穩定的挖礦收益促進更多礦工參與到挖礦行爲中,生態形成良性循環。

Filecoin 的預期共識機制相當於在 PoS 基礎上引入複雜證明過程,在太空競賽第一階段中表現出的網絡性能令人擔憂,以至於交易手續費激增,脫離了實際應用場景。針對 TPS 不足,內容無法有效審查等問題,Filecash 調整了共識機制採用了:DPoS + PoRep + PoSt 混合共識。網絡圍繞礦工開展一系列經濟活動,礦工作爲底層支撐提供共識和 Token;DPOS 節點作爲核心承載,提供可靠的高 TPS 和網絡可用性。同時,Filecash 針對虛擬機、跨鏈、預言機等多個組件進行重新設計和優化,使 Filecash 網絡能夠無縫的與 ETH\DOT\BTC 等成熟區塊鏈進行交互,解決區塊鏈間應用生態互通困難的問題。

分佈式存儲領域新格局

Filecoin 早已聲名在外,而 Filecash 作爲後起之秀能否撼動 Filecoin 還未可知。但是在 Filecoin 團隊與社區礦工的紛爭之下,關於分叉的聲音越來越盛。可以預料的是,隨着 Filecoin 主網上線,分佈式存儲領域會冒出許多新面孔,它們會探索和 Filecoin 不一樣的道路。

與其說,Filecash 是在向 Filecoin 發起挑戰,不如說 Filecash 是在爲分佈式存儲領域探索新的可能。

畢竟,歷史沒有記住第一個喫螃蟹的人,卻記住了螃蟹的美味。