欢迎你们来到第三章,通过 前章《【Filecoin源码仓库全解析】第二章:如何建立帐户钱包并获取FIL Mock代币的内容阅读后,咱们应该能顺利在Filecoin系统中建立本身的帐户钱包,并获取参与测试的FIL Mock代币了,本章,咱们将配置自身节点角色,成为存储提供方(矿工),参与挖矿。html
第三章部份内容和数据来源于星际大陆(IPFSMAIN)詹总的私下交流,感谢星际大陆(IPFSMAIN)团队在此方面投入的机器资源成本和分享。linux
因为这块周边内容比较多,所以拆为上下篇两部分来介绍。git
这几天后台收到了很多朋友的建议和求助,在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
在第二章中,咱们经过区分各个ID的概念知道了Filecoin体系中节点所扮演的两重角色,四重身份。浏览器
而Filecoin做为一个去中心化的存储解决方案,对比目前成熟的中心化存储解决方案,这几种身份的职能能够类比为:服务器
需求方用户。微信
Filecoin体系中的节点同时具有这四重身份,而且集其身份所对应的功能于一身,在整个网络中发挥着对应的职能。这也是区块链网络区别于传统互联网的精髓之处。你们清楚了节点所承载的角色以后,会更加好理解后续的一些测试点和操做,也能同时从产品、技术等多个角度,更加理性地去分析和评判Filecoin的系统设计。
节点之因此有多重身份与职能,主要是源于Filecoin体系中设计的市场机制。在这样的一个机制中,需求者和提供者基于存储合约(storage contracts)进行订单的发现、协商(双向选择)和交易。
Filecoin中存在与以太坊中智能合约比较类似的设计,这块被定义为Actor
,Actor
在程序设计上是一个具备本身状态和方法集的链上对象。这个对象将被矿工、帐户、存储市场 等多角色所继承。
没错,存储市场(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 }
成为存储矿工:
Code is law
。建立矿工身份,获取ID,须要承诺能提供存储服务的10个扇区(扇区大小和测试网络环境相关,以下),
在【Filecoin源码仓库全解析】第一章:搭建Filecoin测试节点中,测试网络有多种类型:
测试网络的选择,在初始化的时候指定,并在启动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
咱们能够登陆:
http://nightly.kittyhawk.wtf:8000/
在Filecoin区块链浏览器中查询验证咱们的矿工Actor:
go-filecoin mining stop
在建立好矿工身份以后,咱们能够初始化一个Ask订单配置,启动挖矿进程后,Filecoin存储市场中的用户,能够根据网络中矿工们的众多Ask订单价格和容量来自由选择。
Ask订单配置项:
咱们经过命令行来建立一个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
目前测试网在建立完成订单后的交易过程是自动化的,同时交易的用户方目前在选择矿工时,是处于定向链接选择,并不像如设计方案中的自由选择, 能够想象为:矿工须要在早期本身模拟多个身份节点,本身给本身灌数据来测试。
“灌数据“的整个过程也很是重要,在此期间,存储订单会经历三种状态:
存储订单的交易成功,将会决定存储算力Storage Power和Proven Storage这两个重要的参数,这与矿工后续参与出块的权益几率直接挂钩。
咱们会在后面的《【Filecoin源码仓库全解析】第三章(下):存储提供方(矿工)的配置操做》章节重点介绍这个过程。
深圳牛链科技有限公司 ,是一家专一存储类IPFS矿机研发、生产、销售、托管为一体的高科技企业。 目前技术团队包括IPFS硬件技术研发,IPFS协议研究,IPFS底层程序开发,IPFS应用程序研发,并在成都专门成立研发中心。2018年,研发中心团队在研究IPFS底层协议的基础上,开始搭建并运营IPFS高速网络系统,并正积极研发基于IPFS的网络应用。牛链科技的技术研发团队尽心尽力研究Filecoin的运行机制,优化矿场配置,做为一家区块链技术服务提供商,致力于为广大用户提供优质的信息技术服务。牛链但愿以技术驱动效率,为Filecoin落地提供基础设施。
感谢 深圳牛链科技有限公司 对嘉乐SOHO的原创内容提供支持。
深夜写做,难免有不足之处,欢迎指正和更多讨论,可私信微信公众号:jialesoho,或者加我微信:daijiale6239,若是以为对您有帮助,能够帮点击好看推广和打赏支持噢,感激涕零!
(识别图中二维码,关注嘉乐SOHO微信公众号)