【Filecoin原始碼倉庫全解析】第六章:單機部署多節點叢集與礦池設計思路

買賣虛擬貨幣

       歡迎大家來到第六章,經過前章《【Filecoin原始碼倉庫全解析】第五章:檢索市場及檢索礦工》的介紹,無論從定位職能,還是從設計原理,還是從工程操作角度,我們應該對目前的Filecoin檢索市場有了更加深入的瞭解。

        我們將在本章介紹如何在一臺機器上構建多節點的方案和未來礦池產品設計的一些思路。

        如果自己學習進度ok,實踐效果符合預期,應該很快也會給大家分享多機(不同配置,不同規格,不同區域)多節點部署的方案。

一、多節點的部署需求

1.單機即可使用不同的角色職能

        我們在第三章、第四章和第五章中,分別模擬了三個角色:儲存提供方(儲存礦工),儲存需求方(儲存使用者)以及檢索使用者,小編用了兩臺不同的機器來實驗。其實,也可以透過單機完成所有測試。

2.對於配置比較高的機器,可增加資源利用率

        雖然節點客戶端對機器效能、配置要求目前比較苛刻,但是對於一些不經常處於滿負荷狀態,具有更高效能的機器和伺服器,還是可以透過部署單機多節點方案,來增加整機資源利用率。

3.複用公網IP

        相比於國外,公網IP是真的稀缺資源,目前看不到IPV6短時間內普及的希望...libp2p所需的mutiaddress可透過配置埠,多路複用...

4.研發複合型產品

        未來,隨著Filecoin專案的不斷成熟,和市場需求的不斷演化,將誕生除了礦機之外的一系列複合型產品和工具型產品,為了把服務能力和邊界擴大,需要統一的節點管理、控制方案,以及專門針對檢索市場而設計的類CDN方案,儲存市場的礦池方案等。

        這些,都或多或少離不開多節點的部署運維工作。本文將介紹一種直接在單機上部署和管理多節點的方案。

二、建立新節點倉庫

        假設已編譯安裝了最新版的go-filecoin客戶端,可參考:【Filecoin原始碼倉庫全解析】第一章:搭建Filecoin測試節點

        之後,透過指定不同的倉庫路徑--repodir,來建立新節點2:

export FCRD=$HOME/.filecoin2

go-filecoin init --genesisfile=http://user.kittyhawk.wtf:8020/genesis.car --repodir=$FCRD

        成功後,將生成與之前預設初始化資料夾.filecoin一樣結構的的.filecoin2,如圖所示:

三、修改新節點配置

vim .filecoin2/config.json

        修改預設值,重新設定新節點2的api.address和swarm.address的監聽埠:

{
"api": {
"address": "/ip4/127.0.0.1/tcp/3455"
...
},
...
"swarm": {
"address": "/ip4/0.0.0.0/tcp/6011"
}
}

四、節點互聯

        在本機上,分別啟動原節點1和新節點2:

go-filecoin daemon

go-filecoin daemon --repodir=$FCRD

        啟動daemon後,我們也可以對比單機節點1和節點2的配置資訊,如下所示,MultiAddress與PeerID一一對應,且按照不同埠配置已生成。

        我們將原節點的multiaddress記錄至臨時變數NODE1_ADDR中:

export NODE1_ADDR=$your_node1_multiaddress

        透過go-filecoin swarm connect $NODE1_ADDR --repodir=$FCRD,將新節點2與原節點1建立P2P連線。

        成功後並透過go-filecoin swarm peers --repodir=$FCRD複查連線狀態:

        如圖所示,我們在新節點2的Peer叢集中,查詢到了原節點1的multiaddress。

        這樣,一個初步的單機雙節點叢集就部署完畢了,以此類推,可以繼續批次部署下去,直至機器資源滿負荷執行。

        之後,我們可以在單機上分別操作多節點,並設定不同角色進行前面幾章所描述的測試過程了,有條件的朋友,也可以將這幾章所描述的配置邏輯編寫成Shell指令碼或者加入程式控制來實現自動化。

五、Filecoin礦池設計思路

5.1 礦池的概念

        礦池從一定意義上來說,是伴隨時間和市場需求演化而來,更傾向於產品的一個定義。最初起源於比特幣。

        在比特幣的體制下,全網平均每10分鐘產出一個區塊,每個區塊包含50(現在是12.5,每四年左右獎勵減半一次)個比特幣,而一個區塊只可能被某一個幸運兒挖走,直接擁有所有獎勵,其他人則顆粒無收,挖到的概率與礦工投入的裝置算力大小成正比。

        這就註定瞭如果比特幣挖礦參與人數龐大且分散到一定程度後,挖到比特幣的概率將無限接近於零,跟中彩票差不多。

        這時候,如果散戶要參與,資源有限,只能投入一臺礦機挖礦,按照概率,要5~10年才能開採到一個區塊,這使比特幣挖礦陷入尷尬境地,讓普通人幾乎沒有參與的可能,並不利於比特幣的發展。

        因此,解決的方案是集眾人之力,收益平攤的方式,這也是礦池產品的核心,舉個例子:

        假設100萬人參與比特幣挖礦,全網400P算力,其中90%的礦工為1P(1000T)以下的算力,如果投入一臺1T礦機,將佔全網算力的40萬分之1,理論上平均每40萬個10分鐘能挖到一個區塊,也就是7.6年才能挖到一個區塊然後一次性拿到50(現在是12.5)個比特幣。        

        那麼,假如我再找9個擁有1T算力礦機的礦工,達成協定,我們總共10個人,其中任何一個人挖到區塊,都按照每人的算力佔比來進行平分,那麼我們就是一個整體,總共10T算力,那麼平均0.76年即可挖到一個區塊,然後算下來到我們手上的就是0.76年開採到5個比特幣,如果組織100人、1000人、1萬人甚至10萬人呢?如果是10萬人,那麼平均40分鐘就能挖到1個區塊,作為團隊的一份子,我的收入將會趨於穩定,且參與度顯著提高。

5.2 礦池的意義

  • 降低了比特幣等虛擬數字貨幣開採的難度,降低了開採門檻,真正實現了人人皆可參與的比特幣挖礦理念。

  • 提高了產業化程度,促進了更穩定的區塊鏈服務。

  • 更合理的商業模式,完善了虛擬數字貨幣行業的產品形態。

5.3 Filecoin可能存在礦池產品嗎?

        首先,在DevNetworkState監控面板上有三個關鍵引數我們需要了解:

  • ProvenStorage:儲存礦工已提交PoSt並得到系統驗證的儲存量。

  • StoragePower:表示儲存有效率,即贏得挖掘下一個區塊的可能性。

  • %of BlocksMined 已被挖掘出的區塊全網佔比

        其次,是競選演算法的設計與實現完整度:

  • 競選演算法:使用選票參與競選,獲得選舉的條件。

        從Filecoin的白皮書的設計可知,一個好的競選演算法,應當滿足至少如下的幾個特點:

公平:每個參與者每次選舉只有一次試驗,簽名是確定的,而且t和rand(t)是固定的。隨機值rand(t)在時刻t之前是未知的。因此,每個Ticket的計算值域相對公平。

保密:即攻擊者沒有Mi(目前已經在網路有抵押的擔保品資訊),因此無法生成有效的Ticket和被簽名的金鑰。

公開可驗證:可以透過給出計算值域,時刻t和Mi來說服驗證者自身有效性。

        其實白皮書的設計思想可以歸結於下面這個公式:

        已被簽名的ticket值域,同時被簽名的ticket需要被雜湊成一串較長位數編碼,以防被暴力破解 (類似比特幣中所使用的Hashcash,不斷嘗試要滿足字首N個位元位都是0這樣的條件) ,而紅框中的表示節點的儲存有效率Ratio,有效率是一個相對大的十進位制值,需要換算成二進位制的編碼,才能與Hashcash之後的簽名Ticket匹配做精準判斷,L與全網難度強相關,要求的前導0的個數越多,代表L難度越大。

         同時,小編也查閱了一下測試網目前這塊的競選演算法程式碼實現:

        Leader的選舉,目前僅比較了儲存有效率與Ticket的值域,全網難度L的策略目前還未實現...

        儘管如此,綜合來看:儲存效率是關鍵,Filecoin很大可能也將催生出礦池類產品。理由如下:

  • 1.在相同的時間內,只要某個礦工節點所提供的儲存增量的速度大於全網儲存增量的速度,那麼該節點的StoragePower將顯著提升。

  • 2.儲存訂單的選擇在測試網並未實現撮合,是由使用者來主動選擇,那麼使用者選擇的傾向很大程度取決於礦工的QoS和報價。儲存有效率更高的礦工提供QoS的信任感更強,同時獲得的區塊獎勵更多,可以以更低的報價單提供服務,那麼將導致更多的訂單流向儲存有效率更高的礦工節點。雪球越滾越大...

  • 3.越早參與,儲存越久資料的礦工節點將更有優勢,當全網儲存量達到一個很大的基數時,新礦工短時間內將難以獲得較大的出塊可能,將隨比特幣系統一樣,節點礦工將形成馬太效應。

5.4 Filecoin礦池設計思路

        如圖,設計了一個粗略的Filecoin礦池產品架構,複雜的系統都是由基礎的模組迭代而來,歡迎對此感興趣的朋友做更深入的交流和探討。

        我們也將在下一章《【Filecoin原始碼倉庫全解析】第七章:如何參與複製證明遊戲測試》中,介紹Filecoin中的核心技術,EC共識,複製證明,時空證明,以及目前的證明測試遊戲等內容。

參考文獻:

  • https://github.com/filecoin-project/go-filecoin/wiki/More-HowTos

  • https://baike.baidu.com/item/�%BF池/18622658?fr=aladdin

往期精彩回顧

免責聲明:

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

推荐阅读

;