欢迎你们来到第四章,通过前章 【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微信公众号)