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