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

買賣虛擬貨幣

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

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

由於這塊周邊內容比較多,因此拆為上下篇兩部分來介紹。

3.1 前章問題補充

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

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

        好訊息是,晨霧科技團隊為大家拉取了最新的原始碼,針對不是macOS的使用者,編譯好了一份目前(2月19日)最新的filecoin-Linux.tar.gz release包(內涵彩蛋,歡迎體驗),免去了編譯環節的繁瑣步驟,下載渠道如下:

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

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 jqgo-filecoin miner create 10 100 --price=0 --limit=1000 --peerid QmQ43XdtJAmSwZMA8QijJd4Zo1fT9YgsKevNbr158aAmif

這樣的設定緣由是:除了抵押之外,這樣不需要額外花費FIL。

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

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

1)啟動挖礦程序

go-filecoin mining start


2)Filecoin區塊鏈瀏覽器驗證

我們可以登入:

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

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

3)結束挖礦程序

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原始碼倉庫全解析】第三章(下):儲存提供方(礦工)的配置操作》章節重點介紹這個過程。

參考文獻

  • https://github.com/filecoin-project/specs/blob/master/storage-market.md

  • https://github.com/filecoin-project/go-filecoin/wiki/Mining-Filecoin

免責聲明:

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

推荐阅读

;