歡迎你們來到第四章,通過前章 【Filecoin源碼倉庫全解析】第三章(下):存儲提供方(礦工)的配置操做的內容閱讀後,咱們應該會對Filecoin市場機制中的礦工對象有了更詳細的認知,對礦工事務的生命週期有了具象化地理解。html
本章,咱們將重點介紹存儲需求方(用戶)的配置操做,並反過來驗證第三章中存儲礦工後續挖取新塊的過程,幫助你們融會貫通,並在工程上驗證整個挖礦行爲的生命週期。git
咱們在3.2章節中,描述了Filecoin體系下的各個身份和角色,其中,存儲客戶(Storage clients)定位爲想存儲數據的需求方用戶,也是Filecon所指望構建的雙邊市場中十分重要的一環,類比滴滴打車的乘車者。github
Filecoin存儲市場(上帝)將以公開透明的方式,搭建一個被記錄在鏈上的訂單池,供全部存儲需求方(客戶)選擇和匹配存儲提供方(礦工)。shell
在Filecoin存儲網絡之上,咱們須要先將所存數據導入自身Filecoin節點客戶端,並按照與IPFS很相似(應該是複用了)的處理流程進行了文件切片、散列處理和DAG創建,並生成子文件索引和內容ID(即:CID,在2.2章詳細介紹過)。json
echo "Hi my name is jialesoho"> jialesoho.txt export CID=`go-filecoin client import ./jialesoho.txt` # 反向驗證是否成功導入 go-filecoin client cat $CID
export CID=`go-filecoin client import ~/Desktop/your_test_img.jpg` go-filecoin client cat $CID > image.png && open image.png
export CID=`go-filecoin client import ~/Desktop/your_test_video.mp4`
在3.5章節中,咱們模擬了礦工角色,併成功發送了ask訂單至Filecoin存儲市場之中,這裏,咱們再啓動一臺機器模擬用戶節點,對全網的Ask訂單池進行查詢,並根據存儲端(礦工)報價選擇交易對象:安全
go-filecoin client list-asks --enc=json | jq
執行上述命令,遍歷訂單池後,會獲得形以下方的json對象,解釋一下每一個字段意義:微信
{ "Miner": "fcqllepeqmcq9qnjff3rqfaz02ks8dvmandx4sa2d",//礦工ID "Price": "2.5",//價格,單位FIL/byte/block "Expiry": 588,//多少區塊高度後訂單過時 "ID": 0,//同一個礦工ID可能具有多個Ask訂單,用ID區分 "Error": null// }
若是須要在終端中依賴礦工ID來進行control+F
快速選定,建議直接鍵入go-filecoin client list-asks
網絡
當咱們在Ask訂單池上選定好心儀的訂單和礦工ID後,即可經過以下指令簽約了:ide
go-filecoin client propose-storage-deal <miner> <data> <ask> <duration>
以下圖所示,若選定存儲協議成功,將直接更新訂單狀態爲accepted
,並返回DealID
。post
如上圖所示,大部分朋友可能會遇到:
Error: error creating payment: context deadline exceeded
這邊小編復現了這個場景,並針對這個問題,和一些熱心的讀者交流(感謝詹總,東方風來、chinmusic),分析了一些可能形成的緣由和解決方案,你們能夠對號入座試試:
用戶子彈不夠...天然沒法支付訂單...,請檢查餘額,或者不要傳太大的數據,注意單價是按照 byte (FIL/byte/block)來計算。
確保礦工節點在線,且是mining狀態。
Filecoin體系中,節點網絡與IPFS節點網絡拓撲相似,每個節點的鄰居集羣是有限的,經過彼此的鄰居來間接創建聯繫是很常見的,所以,頗有可能礦工節點和用戶節點彼此並不直接相連,而須要吐槽的是,在測試網階段,官方建議咱們在確保礦工節點在線的同時,也須要直接將兩個節點相鏈接。
咱們能夠經過minerAddrsID來搜索礦工節點ID,並經過節點ID搜索其網絡地址multiAddrs,並直接創建P2P鏈接操做以下:
export peerID=`go-filecoin addresss lookup minerID` export multiAddrs=`go-filecoin swarm findpeer $peerID` go-filecoin swarm connect $multiAddrs
注意:
目前測試網的出塊收益是直接劃到worker礦工帳戶下的,而咱們看到,經過剛纔上方描述的p2p鏈接過程,是能夠經過worker礦工的minerAddrsID層層索引到對方節點的IP地址,這對於收益方是存在至關大的安全隱患。
這不,官方這段時間就作了以下調整,將來,將出塊收益直接劃到owner帳戶下,帳戶ID並不用暴露在交易市場中,提升了帳戶的安全性。
若是是devnet-user,小於單個扇區所分配的256MB便可。
go-filecoin mpool ls | xargs -L1 go-filecoin mpool rm
具體原因可追蹤此 issue:https://github.com/filecoin-p...
當咱們使用go-filecoin client propose-storage-deal <miner> <data> <ask> <duration>
接受訂單後,用戶節點將與存儲端礦工節點創建微支付傳輸通道(防止單點故障,儘量保證雙方權益),即:傳輸百分之多少的piece數據,才支付對應百分之多少的FIL金額,這種微支付過程至關於把一手交錢一手交貨這件事又作到了極致,拆分得更細小了,一直到最終整個文件傳輸完成。咱們能夠來看一下微支付中每一個細分Payments的接口實現:
type Payments interface { //創建每一個pieceID所對應的微支付事務 Setup(target Address, piece Cid, value TokenAmount) ID //生成鏈上支付憑證 MakeVouchers(id ID, start, end BlockHeight, count int) []Voucher //異常後恢復支付憑證 RedeemVoucher(v Voucher, proof Proof) }
同時,爲了防止女巫攻擊,Filecoin中節點與節點之間的數據傳輸,也會使用到IPFS中的bitswap模塊(信用分系統)來過濾惡意節點和做弊節點。
以後,存儲端礦工節點會在必定時間間隔(可配置,默認爲120秒)自動啓動密封(seal)過程,即:獲取以前微支付通道中暫存區域的全部數據,並將其密封到礦工的承諾存儲區域中。此時,訂單狀態將轉爲staged
。 注意,此過生成PoRep和PoSt的生成,比較耗存儲端礦工機器資源:
在密封完成而且礦工在鏈上生成憑證信息後,訂單狀態將移至posted
。
咱們能夠經過go-filecoin client query-storage-deal <dealID>
來查詢訂單狀態,也能夠經過go-filecoin client payments <dealID>
來查詢這筆訂單的鏈上憑證信息:
以下圖所示:
登陸Filecoin網絡儀表盤:http://user.kittyhawk.wtf:8010/
因爲在第一章中,咱們對存儲端礦工節點設置了心跳連接,存儲端礦工節點的數據信息會不間斷地同步至Filecoin全網監控儀表盤上:
搜索了一下jialesohoHK
,找到了咱們的存儲端礦工節點信息,值得關注得是StoragePower
與ProvenStorage
兩個參數此時都有了數值,咱們的存儲端礦工節點此時擁有了本身的算力:0.05%,即參與新塊的生成的權益機率爲萬分之五,此值計算與存儲量證實(Proof of Storage)邏輯強相關。
有機器資源多的朋友,能夠在測試過程當中增長存儲交易訂單成單量,從而拉高ProvenStorage
數值,進而提升StoragePower
算力,這樣,後續參與出塊的機率將大大增長。
同時,儀表盤也帶給了咱們許多其餘統計,例如:近30天,IPFSMain(星際大陸團隊)是測試礦工的主力軍(有資源真心好),而且算力增加集中在2月18-20號左右,出塊率提高顯著,爲優秀的中國礦工團隊點贊!
擴展:PoSt與PoRep的生命週期這塊還沒深挖,後面值得單獨開章節研究,這裏留個口子。
至此,咱們也經過工程操做,反向驗證了第三章中所描述的存儲礦工生命週期。
咱們將在下一章《【Filecoin源碼倉庫全解析】第五章:檢索服務(礦工)的配置操做》中介紹與存儲市場並駕齊驅而又息息相關的檢索市場,以及檢索服務(礦工)的基本配置操做。
【Filecoin源碼倉庫全解析】第一章:搭建Filecoin測試節點
【Filecoin源碼倉庫全解析】第二章:如何建立帳戶錢包並獲取FIL Mock代幣
【Filecoin源碼倉庫全解析】第三章(上):存儲提供方(礦工)的配置操做
【Filecoin源碼倉庫全解析】第三章(下):存儲提供方(礦工)的配置操做
礦世大陸:一家專業的製造IPFS智能挖礦設備科技企業,提供智能硬件的設計、開發、製造及OEM 生產服務,同時知足客戶在挖礦環節的配套需求,提供輕錢包支持、POC 礦池支持、存證算力合約平臺支持、礦場託管等綜合性服務。爲企業級客戶提供整套商業模式輸出、運營指導、市場指導、市值管理、商業落地方案,提供專屬挖礦軟件開發,系統維護、ERC20代幣制做、錢包開發、POC礦池開發、算力合約平臺開發等區塊鏈礦業技術開發服務。公司總部位於華中地區最大的城市武漢,擁有最成熟完整的產業供應鏈,咱們的服務輻射全球,用戶遍佈世界。咱們置身於區塊鏈革命的第一線,投身IPFS生態建設,咱們堅信IPFS將爲世界帶來更好的上網體驗,創造更大的商業價值。
感謝 礦世大陸(http://www.ksminer.com/) 對 嘉樂SOHO的原創內容提供支持。
本人從業經驗有限,難免有不足之處,歡迎指正和更多討論,可私信微信公衆號:jialesoho,或者加我微信:daijiale6239,若是以爲對您有幫助,能夠幫點擊好看推廣和打賞支持噢,感激涕零!
(識別圖中二維碼,關注嘉樂SOHO微信公衆號)