[IPFS挖矿教程] 【Filecoin源码仓库解析】单机部署多节点集群与矿池设计思路

[复制链接]
17297 |0
发表于 2019-3-27 09:14:29 | 显示全部楼层 |阅读模式
一、多节点的部署需求

1.单机即可使用不同的角色职能   
   三个角色:存储提供方(存储矿工),存储需求方(存储用户)以及检索用户,小编用了两台不同的机器来实验。其实,也可以通过单机完成所有测试。

2.对于配置比较高的机器,可增加资源利用率        虽然节点客户端对机器性能、配置要求目前比较苛刻,但是对于一些不经常处于满负荷状态,具有更高性能的机器和服务器,还是可以通过部署单机多节点方案,来增加整机资源利用率。
3.复用公网IP        相比于国外,公网IP是真的稀缺资源,目前看不到IPV6短时间内普及的希望...libp2p所需的mutiaddress可通过配置端口,多路复用...

4.研发复合型产品        未来,随着FIL项目的不断成熟,和市场需求的不断演化,将诞生除了矿机之外的一系列复合型产品和工具型产品,为了把服务能力和边界扩大,需要统一的节点管理、控制方案,以及专门针对检索市场而设计的类CDN方案,存储市场的矿池方案等。
二、创建新节点仓库
    安装最新版的go-fileDavinci客户端,之后,通过指定不同的仓库路径--repodir,来创建新节点2:

exportFCRD=$HOME/.fileDavinci2
go-fileDavinciinit--genesisfile=http://user.kittyhawk.wtf:8020/genesis.car--repodir=$FCRD

        成功后,将生成与之前默认初始化文件夹.fileDavinci一样结构的的.fileDavinci2,如图所示:

三、修改新节点配置
vim.fileDAC2/config.json

        修改默认值,重新设置新节点2的api.address和swarm.address的监听端口:
{
"api":{
"address":"/ip4/127.0.0.1/tcp/3455"
...
},
...
"swarm":{
"address":"/ip4/0.0.0.0/tcp/6011"
}
}

四、节点互联
        在本机上,分别启动原节点1和新节点2:
go-fileDavincidaemon
go-fileDACdaemon--repodir=$FCRD        启动daemon后,我们也可以对比单机节点1和节点2的配置信息,如下所示,MultiAddress与PeerID一一对应,且按照不同端口配置已生成。

        我们将原节点的multiaddress记录至临时变量NODE1_ADDR中:

exportNODE1_ADDR=$your_node1_multiaddress
        
        通过go-fileDACswarmconnect$NODE1_ADDR--repodir=$FCRD,将新节点2与原节点1建立P2P连接。

        成功后并通过go-fileDACswarmpeers--repodir=$FCRD复查连接状态:

        如图所示,我们在新节点2的Peer集群中,查询到了原节点1的multiaddress。
        这样,一个初步的单机双节点集群就部署完毕了,以此类推,可以继续批量部署下去,直至机器资源满负荷运行。
        
        之后,我们可以在单机上分别操作多节点,并设置不同角色进行前面几章所描述的测试过程了,有条件的朋友,也可以将这几章所描述的配置逻辑编写成Shell脚本或者加入程序控制来实现自动化。

五、FIL矿池设计思路
5.1矿池的概念
        矿池从一定意义上来说,是伴随时间和市场需求演化而来,更倾向于产品的一个定义。最初起源于BTC。
        在BTC的体制下,全网平均每10分钟产出一个区块,每个区块包含50(现在是12.5,每四年左右奖励减半一次)个BTC,而一个区块只可能被某一个幸运儿挖走,直接拥有所有奖励,其他人则颗粒无收,挖到的概率与矿工投入的设备算力大小成正比。
        这就注定了如果BTC挖矿参与人数庞大且分散到一定程度后,挖到BTC的概率将无限接近于零,跟中彩票差不多。
        这时候,如果散户要参与,资源有限,只能投入一台矿机挖矿,按照概率,要5~10年才能开采到一个区块,这使BTC挖矿陷入尴尬境地,让普通人几乎没有参与的可能,并不利于BTC的发展。
        因此,解决的方案是集众人之力,收益平摊的方式,这也是矿池产品的核心,举个例子:
        假设100万人参与BTC挖矿,全网400P算力,其中90%的矿工为1P(1000T)以下的算力,如果投入一台1T矿机,将占全网算力的40万分之1,理论上平均每40万个10分钟能挖到一个区块,也就是7.6年才能挖到一个区块然后一次性拿到50(现在是12.5)个BTC。        
        那么,假如我再找9个拥有1T算力矿机的矿工,达成协定,我们总共10个人,其中任何一个人挖到区块,都按照每人的算力占比来进行平分,那么我们就是一个整体,总共10T算力,那么平均0.76年即可挖到一个区块,然后算下来到我们手上的就是0.76年开采到5个BTC,如果组织100人、1000人、1万人甚至10万人呢?如果是10万人,那么平均40分钟就能挖到1个区块,作为团队的一份子,我的收入将会趋于稳定,且参与度显著提高。

5.2矿池的意义
  • 降低了BTC等虚拟数字货币开采的难度,降低了开采门槛,真正实现了人人皆可参与的BTC挖矿理念。
  • 提高了产业化程度,促进了更稳定的区块链服务。
  • 更合理的商业模式,完善了虚拟数字货币行业的产品形态。

    5.3FIL可能存在矿池产品吗?
            首先,在DevStatusState监控面板上有三个关键参数我们需要了解:

  • ProvenStorage:存储矿工已提交PoSt并得到系统验证的存储量。




  • StoragePower:表示存储有效率,即赢得挖掘下一个区块的可能性。





  • %ofBlocksMined已被挖掘出的区块全网占比

            其次,是竞选算法的设计与实现完整度:

  • 竞选算法:使用选票参与竞选,获得选举的条件。


            从FIL的白皮书的设计可知,一个好的竞选算法,应当满足至少如下的几个特点:

    公平:每个参与者每次选举只有一次试验,签名是确定的,而且t和rand(t)是固定的。随机值rand(t)在时刻t之前是未知的。因此,每个Ticket的计算值域相对公平。
    保密:即攻击者没有Mi(目前已经在网络有抵押的担保品信息),因此无法生成有效的Ticket和被签名的密钥。
    公开可验证:可以通过给出计算值域,时刻t和Mi来说服验证者自身有效性。
            其实白皮书的设计思想可以归结于下面这个公式:



            已被签名的ticket值域,同时被签名的ticket需要被哈希成一串较长位数编码,以防被暴力破解 (类似BTC中所使用的Hashcash,不断尝试要满足前缀N个比特位都是0这样的条件) ,而红框中的表示节点的存储有效率Ratio,有效率是一个相对大的十进制值,需要换算成二进制的编码,才能与Hashcash之后的签名Ticket匹配做精准判断,L与全网难度强相关,要求的前导0的个数越多,代表L难度越大。      
             同时,小编也查阅了一下测试网目前这块的竞选算法代码实现:

            Leader的选举,目前仅比较了存储有效率与Ticket的值域,全网难度L的策略目前还未实现...
            尽管如此,综合来看:存储效率是关键,FIL很大可能也将催生出矿池类产品。 理由如下:

  • 1.在相同的时间内,只要某个矿工节点所提供的存储增量的速度大于全网存储增量的速度,那么该节点的StoragePower将显著提升。
  • 2.存储订单的选择在测试网并未实现撮合,是由用户来主动选择,那么用户选择的倾向很大程度取决于矿工的QoS和报价。存储有效率更高的矿工提供QoS的信任感更强,同时获得的区块奖励更多,可以以更低的报价单提供服务,那么将导致更多的订单流向存储有效率更高的矿工节点。雪球越滚越大...
  • 3.越早参与,存储越久数据的矿工节点将更有优势,当全网存储量达到一个很大的基数时,新矿工短时间内将难以获得较大的出块可能,将随BTC系统一样,节点矿工将形成马太效应。

    5.4FIL矿池设计思路

            如图,设计了一个粗略的FIL矿池产品架构,复杂的系统都是由基础的模块迭代而来,欢迎对此感兴趣的朋友做更深入的交流和探讨。

         

    欢迎访问赛道中国官方网站,更多产品优惠等你来拿!
    http://www.ipfs-fil.com

    【Filecoin源码仓库解析】单机部署多节点集群与矿池设计思路.jpg

    【Filecoin源码仓库解析】单机部署多节点集群与矿池设计思路.jpg
  • 回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表