【Filecoin源碼倉庫全解析】第三章(上):存儲提供方(礦工)的配置操做

歡迎你們來到第三章,通過 前章《【Filecoin源碼倉庫全解析】第二章:如何建立帳戶錢包並獲取FIL Mock代幣的內容閱讀後,咱們應該能順利在Filecoin系統中建立本身的帳戶錢包,並獲取參與測試的FIL Mock代幣了,本章,咱們將配置自身節點角色,成爲存儲提供方(礦工),參與挖礦。html

第三章部份內容和數據來源於星際大陸(IPFSMAIN)詹總的私下交流,感謝星際大陸(IPFSMAIN)團隊在此方面投入的機器資源成本和分享。linux

因爲這塊周邊內容比較多,所以拆爲上下篇兩部分來介紹。git

3.1 前章問題補充

這幾天後臺收到了很多朋友的建議和求助,在linux環境上編譯go-filecoin源碼和安裝遇到了大量的問題。github

彆着急,別沮喪,畢竟juanbenet(協議實驗室創始人)本人配置的過程也都不是一路順風:golang

好消息是,晨霧科技團隊爲你們拉取了最新的源碼,針對不是macOS的用戶,編譯好了一份目前(2月19日)最新的filecoin-Linux.tar.gz release包(內涵彩蛋,歡迎體驗),免去了編譯環節的繁瑣步驟,下載渠道以下。json

下載地址:

晨霧科技(mornmist.tech)linux版:https://github.com/mornmist/Filecoin-For-Chinese/releases/tag/0.0.2vim

3.2 身份與職能

在第二章中,咱們經過區分各個ID的概念知道了Filecoin體系中節點所扮演的兩重角色,四重身份。瀏覽器

而Filecoin做爲一個去中心化的存儲解決方案,對比目前成熟的中心化存儲解決方案,這幾種身份的職能能夠類比爲:服務器

  • 存儲礦工(Storage miners):比較像傳統互聯網中,負責專門存儲數據的Web服務器
  • 檢索礦工(Retrieval miners):比較像內容分發網絡CDN的做用,負責檢索抓取數據,服務於存儲需求方用戶。
  • 存儲客戶(Storage clients):想存儲數據的需求方用戶。
  • 檢索客戶(Retrieval clients):想檢索數據的

需求方用戶。微信

Filecoin體系中的節點同時具有這四重身份,而且集其身份所對應的功能於一身,在整個網絡中發揮着對應的職能。這也是區塊鏈網絡區別於傳統互聯網的精髓之處。你們清楚了節點所承載的角色以後,會更加好理解後續的一些測試點和操做,也能同時從產品、技術等多個角度,更加理性地去分析和評判Filecoin的系統設計。

3.3 Filecoin存儲市場(上帝)

節點之因此有多重身份與職能,主要是源於Filecoin體系中設計的市場機制。在這樣的一個機制中,需求者和提供者基於存儲合約(storage contracts)進行訂單的發現、協商(雙向選擇)和交易。

Filecoin中存在與以太坊中智能合約比較類似的設計,這塊被定義爲ActorActor在程序設計上是一個具備本身狀態和方法集的鏈上對象。這個對象將被礦工、帳戶、存儲市場 等多角色所繼承。

沒錯,存儲市場(storage market)自己也是一個Actor 爲方便理解,能夠類比爲比特幣系統中的 「上帝」 (考慮到檢索市場並不參與鏈上出塊)。

這是繼承Actor後,存儲市場(上帝)的部分接口實現:

type StorageMarket interface {
    
    //經過指定公鑰和自定的抵押FIL金額以及libp2p所要鏈接的節點ID,來建立存儲礦工角色
    CreateStorageMiner(pubk PublicKey, pledge BytesAmount, pid libp2p.PeerID) Address
    
    //檢測到礦工存在做弊行爲時,須要削減獎勵
    SlashConsensusFault(blk1, blk2 BlockHeader)
    
    //在規定的時間內沒法提供PoSt證實,抵押代幣將被削減
    SlashStorageFault(miner Address)
    
    //動態更新當前存儲市場參與者數據與總存儲量等數據
    UpdateStorage(delta BytesAmount)
    
    //全網總算力計算
    GetTotalStorage() BytesAmount
}

3.4 成爲一名存儲礦工

成爲存儲礦工:

  • 意味着默認接受Filecoin存儲市場Actor的規則,進行挖礦行爲。即 Code is law
  • 意味着將是推進Filecoin網絡共識處理流程的積極參與者,也是指望共識(EC)的區塊提議者。
  • 意味着隨時在線,等待接受客戶的存儲訂單,並提供存儲服務,並密封扇區數據,賺取FIL。
  • 意味着應該不斷地執行時空證實(PoSt),以證實可否參與出塊競選。
  • 還意味着,你規規矩矩地作了這麼多事情後,到頭來!!!真得能獲得Filecoin存儲市場Actor(上帝)所分配的額外出塊獎勵。

建立礦工ID

建立礦工身份,獲取ID,須要承諾能提供存儲服務的10個扇區(扇區大小和測試網絡環境相關,以下),

【Filecoin源碼倉庫全解析】第一章:搭建Filecoin測試節點中,測試網絡有多種類型:

  • devnet-user :針對普通用戶,扇區(SECTORS)爲256MiB
  • devnet-nightly :針對開發者用戶,扇區(SECTORS)爲1KiB,可節約封閉扇區耗時,便於測試。

測試網絡的選擇,在初始化的時候指定,並在啓動daemon過程時,須要加上:

env FIL_USE_SMALL_SECTORS=true go-filecoin daemon

承諾能提供存儲服務的扇區以後,須要抵押100FIL,設置消息的gas price爲0FIL/unit,限制1000 gas units(和以太坊的gas相似,合約函數的防死循環限制)。

brew install jq

go-filecoin miner create 10 100 --price=0 --limit=1000 --peerid QmQ43XdtJAmSwZMA8QijJd4Zo1fT9YgsKevNbr158aAmif

這樣的設置原因是:除了抵押以外,這樣不須要額外花費FIL。

執行成功後,將等待一段時間,此過程耗時取決於網絡環境,小編耗時12分鐘左右:

以後,會返回給你生成好的礦工ID,而且系統中多出了一部分的磁盤空間被此程序虛擬化成扇區空間。

啓動挖礦進程

go-filecoin mining start

Filecoin區塊鏈瀏覽器驗證

咱們能夠登陸:

http://nightly.kittyhawk.wtf:8000/

在Filecoin區塊鏈瀏覽器中查詢驗證咱們的礦工Actor:

結束挖礦進程

go-filecoin mining stop

3.5 設置併發送Ask訂單

在建立好礦工身份以後,咱們能夠初始化一個Ask訂單配置,啓動挖礦進程後,Filecoin存儲市場中的用戶,能夠根據網絡中礦工們的衆多Ask訂單價格和容量來自由選擇。

Ask訂單配置項:

  • 礦工worker地址
  • 礦工owner地址
  • FIL/byte/block的單價
  • 適用於此後多少個區塊生成的時間
  • gas單次燃燒所需的FIL費用值(參考以太坊)
  • gas limit總數(參考以太坊)

咱們經過命令行來建立一個Ask訂單,併發送至區塊鏈網絡:

export MINER_ADDR=`go-filecoin config mining.minerAddress | tr -d \"` 

export MINER_OWNER_ADDR=`go-filecoin miner owner $MINER_ADDR`

go-filecoin miner set-price --from=$MINER_OWNER_ADDR --miner=$MINER_ADDR --price=0 --limit=1000 0.0001 1000

以下圖所示:

拿到askid和chain block值後,等待區塊同步一會(通常2分鐘左右),咱們能夠經過以下方式,確認咱們的Ask訂單是否更新完成:

go-filecoin client list-asks --enc=json | jq

也能夠double check一下本地的config.json中的storagePrice屬性值是否已經更新:

vim ~/.filecoin/config.json

目前測試網在建立完成訂單後的交易過程是自動化的,同時交易的用戶方目前在選擇礦工時,是處於定向鏈接選擇,並不像如設計方案中的自由選擇, 能夠想象爲:礦工須要在早期本身模擬多個身份節點,本身給本身灌數據來測試。

「灌數據「的整個過程也很是重要,在此期間,存儲訂單會經歷三種狀態:

  • 第一種是接收訂單後,accepted
  • 第二種是密封過程當中,staged
  • 第三種是posted,達到posted,說明成功了

存儲訂單的交易成功,將會決定存儲算力Storage Power和Proven Storage這兩個重要的參數,這與礦工後續參與出塊的權益機率直接掛鉤。

咱們會在後面的《【Filecoin源碼倉庫全解析】第三章(下):存儲提供方(礦工)的配置操做》章節重點介紹這個過程。

參考文獻

本章贊助品牌:

深圳牛鏈科技有限公司 ,是一家專一存儲類IPFS礦機研發、生產、銷售、託管爲一體的高科技企業。 目前技術團隊包括IPFS硬件技術研發,IPFS協議研究,IPFS底層程序開發,IPFS應用程序研發,並在成都專門成立研發中心。2018年,研發中心團隊在研究IPFS底層協議的基礎上,開始搭建並運營IPFS高速網絡系統,並正積極研發基於IPFS的網絡應用。牛鏈科技的技術研發團隊盡心盡力研究Filecoin的運行機制,優化礦場配置,做爲一家區塊鏈技術服務提供商,致力於爲廣大用戶提供優質的信息技術服務。牛鏈但願以技術驅動效率,爲Filecoin落地提供基礎設施。

感謝 深圳牛鏈科技有限公司嘉樂SOHO的原創內容提供支持。

聯繫做者:

深夜寫做,難免有不足之處,歡迎指正和更多討論,可私信微信公衆號:jialesoho,或者加我微信:daijiale6239,若是以爲對您有幫助,能夠幫點擊好看推廣打賞支持噢,感激涕零!

(識別圖中二維碼,關注嘉樂SOHO微信公衆號)

相關文章
相關標籤/搜索