资讯专栏INFORMATION COLUMN

【Filecoin源码仓库全解析】第三章(上):存储提供方(矿工)的配置操作

rose / 1636人阅读

摘要:我们会在后面的源码仓库全解析第三章下存储提供方矿工的配置操作章节重点介绍这个过程。参考文献本章赞助品牌深圳牛链科技有限公司,是一家专注存储类矿机研发生产销售托管为一体的高科技企业。感谢深圳牛链科技有限公司对嘉乐的原创内容提供支持。

欢迎大家来到第三章,经过 前章《【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 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源码仓库全解析】第三章(下):存储提供方(矿工)的配置操作》章节重点介绍这个过程。

参考文献

https://github.com/filecoin-p...

https://github.com/filecoin-p...

本章赞助品牌:

深圳牛链科技有限公司 ,是一家专注存储类IPFS矿机研发、生产、销售、托管为一体的高科技企业。 目前技术团队包括IPFS硬件技术研发,IPFS协议研究,IPFS底层程序开发,IPFS应用程序研发,并在成都专门成立研发中心。2018年,研发中心团队在研究IPFS底层协议的基础上,开始搭建并运营IPFS高速网络系统,并正积极研发基于IPFS的网络应用。牛链科技的技术研发团队全力以赴研究Filecoin的运行机制,优化矿场配置,作为一家区块链技术服务提供商,致力于为广大用户提供优质的信息技术服务。牛链希望以技术驱动效率,为Filecoin落地提供基础设施。

感谢 深圳牛链科技有限公司 对嘉乐SOHO的原创内容提供支持。

联系作者:

深夜写作,不免有不足之处,欢迎指正和更多讨论,可私信微信公众号:jialesoho,或者加我微信:daijiale6239,如果觉得对您有帮助,可以帮点击好看推广打赏支持噢,感激不尽!

(识别图中二维码,关注嘉乐SOHO微信公众号)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/24589.html

相关文章

  • Filecoin源码仓库解析三章(下):存储供方矿工配置操作

    摘要:我们将在下一章源码仓库全解析第四章下存储需求方的配置操作中重点介绍存储需求方用户的配置操作,并反过来验证第三章中存储矿工后续挖取新块的过程,帮助大家融会贯通,并在工程上验证整个挖矿行为的生命周期。目前已成为华中区最大最具影响力的垂直媒体。 不好意思,这篇加了点八卦: 本来是不太想说这事的,从18年看到现在,不少见圈里的朋友和友商互相吐槽乃至攻击...最近还闹得比较大。这里说两句:区块链...

    曹金海 评论0 收藏0
  • Filecoin源码仓库解析】第四章:存储需求方(用户)配置操作

    摘要:之后,存储端矿工节点会在一定时间间隔可配置,默认为秒自动启动密封过程,即获取之前微支付通道中暂存区域的所有数据,并将其密封到矿工的承诺存储区域中。 欢迎大家来到第四章,经过前章 【Filecoin源码仓库全解析】第三章(下):存储提供方(矿工)的配置操作的内容阅读后,我们应该会对Filecoin市场机制中的矿工对象有了更详细的认知,对矿工事务的生命周期有了具象化地理解。 本章,我们将重...

    isaced 评论0 收藏0
  • Filecoin源码仓库解析】第六章:如何单机部署多节点集群及矿池设计思路》

    摘要:我们将在本章介绍如何在一台机器上构建多节点的方案和未来矿池产品设计的一些思路。本文将介绍一种直接在单机上部署和管理多节点的方案。最初起源于比特币。 欢迎大家来到第六章,经过前章《【Filecoin源码仓库全解析】第五章:检索市场及检索矿工》的介绍,无论从定位职能,还是从设计原理,还是从工程操作角度,我们应该对目前的Filecoin检索市场有了更加深入的了解。 我们将在本章介绍如何在一台...

    BDEEFE 评论0 收藏0
  • Filecoin源码仓库解析】第七章:了解PoRep与PoSt并参与复制证明游戏

    摘要:如上图,验证过程可以表述为验证者会按照一定的规则向矿工提起挑战,挑战是随机生成的,矿工不能提前获知。三时空证明如图所示,可以理解为矿工一定时间内持续地生成复制证明和接受挑战和验证的过程,并通过这个过程,更新全网存储算力。 欢迎大家来到第七章,经过前章《【Filecoin源码仓库全解析】第六章:如何单机部署多节点集群及矿池设计思路》的介绍,我们分享了如何在单机部署多节点集群的知识以及矿池...

    shixinzhang 评论0 收藏0
  • Filecoin源码仓库解析】第一章:搭建Filecoin测试节点

    摘要:情人节,项目开放了核心源码仓库,并更新了下的诸多核心成果,这意味着,已然度过了最困难的难点攻关期,进入到了全民公测阶段。年月日,开源了核心源码库,开启全民公测阶段。 2019.2.14 情人节,Filecoin项目开放了核心源码仓库go-filecoin,并更新了 filecoin-project organization下的诸多核心成果,这意味着,Filecoin已然度过了最困难的难...

    张春雷 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<