區塊鏈 - Filecoin為什麼需要GPU?

買賣虛擬貨幣

今天IPFS/Filecoin的各種群炸開了鍋,原因是Filecoin內部開發人員透露,下一個Filecoin的測試網路需要搭配GPU。而且Filecoin內部測試使用的是2080ti的顯示卡。

同時,聊天記錄表明,下一個測試網路需要在一個區塊時間內完成PoST的計算。晚上下了一下最新的go-filecoin的程式碼,看了看。奇怪的是,最新程式碼的共識部分(EC)以及節點選舉流程和之前沒有多大的差別。

1. 目前節點選舉流程

核心邏輯在go-filecoin/internal/pkg/mining/worker.go檔案中的Mine函式,由以下幾步組成:

· 建立下一個區塊的Ticket

獲取上一個Tipset中的最小的Ticket,並使用NextTicket函式生成下一個區塊的Ticket。計算方式非常簡單,就是對上一個Tipset中的最小的Ticket進行簽名。目前簽名支援兩種演算法:BLS以及SECP256K1。預設採用SECP256K1演算法。

· 延遲一個區塊時間

一個區塊時間(BlockTime)預設是30秒。目前的程式碼實現直接採用Delay。從TODO可以看出,這一部分設計中是想採用VDF。但是,目前程式碼還沒有完全實現。

· 從前面一些區塊獲取Election Ticket

從前面一些區塊中獲取最小的Ticket,作為Election Ticket。從前面一些區塊選舉,是為了保證隨機性。

· 生成Election Proof

獲取了Election Ticket,並對其簽名,生成Election Proof。

· 確定是否是Winner

透過IsElectionWinner函式判斷是否是Winner。邏輯也非常明瞭,檢視Election Proof是否小於有效儲存率。如果小於,說明是Winner,可以生產區塊。

整個邏輯非常清楚,計算過程也沒有複雜的計算,最複雜的計算也就是簽名。目前的區塊生成流程沒有必要使用GPU。問題來了,下一版本的區塊生成流程變了。

2. 下一版本的節點選舉流程

下一版本的區塊鏈生成流程,沒有公開原始碼。但是,在Filecoin的設計文件已經有體現:

https://filecoin-project.github.io/specs/#algorithms__proof_of_spacetime__election_post

PoST的部分多了一個演算法:Election PoST。Election PoST,目的是在生成區塊的時候,繫結PoST的計算。也就是說,一個節點需要生成區塊,必須提供PoST的計算和證明。

設計文件給出了大致的生成區塊的演算法:

· 隨機數生成(Sample randomness)
也就是從前面一些區塊獲取一個Ticket,並簽名,簽名結果作為隨機數。

· 確定Partial Ticket
從上述獲取的隨機數,確定K次挑戰的Sector以及相應的資料。由這些資料,上一步驟生成的隨機數和節點的ID生成Partial Ticket。

· 生成PoST證明
如果Partial Ticket的係數小於節點的儲存率的話,說明節點是Winner,可以生成區塊。在生成區塊前,必鬚生成PoST證明。

顯而易見,新的區塊生成流程,需要在一個區塊時間內,生成PoST證明。PoST證明生成,涉及K次零知識證明(zk-SNARK)的證明計算,相當來說,計算時間較長。透過GPU加速,可以縮短PoST證明的時間。

總結:

Filecoin採用了新的節點選舉演算法,在區塊生成時,必須提供PoST的證明。新的設計導致對PoST證明的效能有要求。GPU是目前加速PoST證明生成的可行方案。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;