今天IPFS Filecoin的各種群炸開了鍋,原因是Filecoin內(nèi)部開發(fā)人員透露,下一個Filecoin的測試網(wǎng)絡(luò)需要搭配GPU。而且Filecoin內(nèi)部測試使用的
今天IPFS/Filecoin的各種群炸開了鍋,原因是Filecoin內(nèi)部開發(fā)人員透露,下一個Filecoin的測試網(wǎng)絡(luò)需要搭配GPU。而且Filecoin內(nèi)部測試使用的是2080ti的顯卡。
同時,聊天記錄表明,下一個測試網(wǎng)絡(luò)需要在一個區(qū)塊時間內(nèi)完成PoST的計算。晚上下了一下最新的go-filecoin的代碼,看了看。奇怪的是,最新代碼的共識部分(EC)以及節(jié)點選舉流程和之前沒有多大的差別。
1. 目前節(jié)點選舉流程
核心邏輯在go-filecoin/internal/pkg/mining/worker.go文件中的Mine函數(shù),由以下幾步組成:
· 創(chuàng)建下一個區(qū)塊的Ticket
獲取上一個Tipset中的最小的Ticket,并使用NextTicket函數(shù)生成下一個區(qū)塊的Ticket。計算方式非常簡單,就是對上一個Tipset中的最小的Ticket進行簽名。目前簽名支持兩種算法:BLS以及SECP256K1。默認采用SECP256K1算法。
· 延遲一個區(qū)塊時間
一個區(qū)塊時間(BlockTime)默認是30秒。目前的代碼實現(xiàn)直接采用Delay。從TODO可以看出,這一部分設(shè)計中是想采用VDF。但是,目前代碼還沒有完全實現(xiàn)。
· 從前面一些區(qū)塊獲取Election Ticket
從前面一些區(qū)塊中獲取最小的Ticket,作為Election Ticket。從前面一些區(qū)塊選舉,是為了保證隨機性。
· 生成Election Proof
獲取了Election Ticket,并對其簽名,生成Election Proof。
· 確定是否是Winner
通過IsElectionWinner函數(shù)判斷是否是Winner。邏輯也非常明了,查看Election Proof是否小于有效存儲率。如果小于,說明是Winner,可以生產(chǎn)區(qū)塊。
整個邏輯非常清楚,計算過程也沒有復雜的計算,最復雜的計算也就是簽名。目前的區(qū)塊生成流程沒有必要使用GPU。問題來了,下一版本的區(qū)塊生成流程變了。
2. 下一版本的節(jié)點選舉流程
下一版本的區(qū)塊鏈生成流程,沒有公開源代碼。但是,在Filecoin的設(shè)計文檔已經(jīng)有體現(xiàn):
https://filecoin-project.github.io/specs/#algorithms__proof_of_spacetime__election_post
PoST的部分多了一個算法:Election PoST。Election PoST,目的是在生成區(qū)塊的時候,綁定PoST的計算。也就是說,一個節(jié)點需要生成區(qū)塊,必須提供PoST的計算和證明。
設(shè)計文檔給出了大致的生成區(qū)塊的算法:
· 隨機數(shù)生成(Sample randomness)
也就是從前面一些區(qū)塊獲取一個Ticket,并簽名,簽名結(jié)果作為隨機數(shù)。
· 確定Partial Ticket
從上述獲取的隨機數(shù),確定K次挑戰(zhàn)的Sector以及相應(yīng)的數(shù)據(jù)。由這些數(shù)據(jù),上一步驟生成的隨機數(shù)和節(jié)點的ID生成Partial Ticket。
· 生成PoST證明
如果Partial Ticket的系數(shù)小于節(jié)點的存儲率的話,說明節(jié)點是Winner,可以生成區(qū)塊。在生成區(qū)塊前,必須生成PoST證明。
顯而易見,新的區(qū)塊生成流程,需要在一個區(qū)塊時間內(nèi),生成PoST證明。PoST證明生成,涉及K次零知識證明(zk-SNARK)的證明計算,相當來說,計算時間較長。通過GPU加速,可以縮短PoST證明的時間。
總結(jié):
Filecoin采用了新的節(jié)點選舉算法,在區(qū)塊生成時,必須提供PoST的證明。新的設(shè)計導致對PoST證明的性能有要求。GPU是目前加速PoST證明生成的可行方案。(Star Li)
關(guān)鍵詞: 新Filecoin 測試網(wǎng)絡(luò) GPU