乐趣区

Filecoin源码仓库全解析第六章如何单机部署多节点集群及矿池设计思路

欢迎大家来到第六章,经过前章《【Filecoin 源码仓库全解析】第五章:检索市场及检索矿工》的介绍,无论从定位职能,还是从设计原理,还是从工程操作角度,我们应该对目前的 Filecoin 检索市场有了更加深入的了解。

我们将在本章介绍如何在 一台机器上构建多节点 的方案和 未来矿池产品设计 的一些思路。

如果自己学习进度 ok,实践效果符合预期,应该很快也会给大家分享多机(不同配置,不同规格,不同区域)多节点部署的方案。

一、多节点的部署需求

1. 单机即可使用不同的角色职能

我们在第三章、第四章和第五章中,分别模拟了三个角色:存储提供方(存储矿工),存储需求方(存储用户)以及检索用户,小编用了两台不同的机器来实验。其实,也可以通过单机完成所有测试。

2. 对于配置比较高的机器,可增加资源利用率

虽然节点客户端对机器性能、配置要求目前比较苛刻,但是对于一些不经常处于满负荷状态,具有更高性能的机器和服务器,还是可以通过部署单机多节点方案,来增加整机资源利用率。

3. 复用公网 IP

相比于国外,公网 IP 是真的稀缺资源,目前看不到 IPV6 短时间内普及的希望 …

libp2p 所需的 mutiaddress 可通过配置端口,多路复用 …

4. 研发复合型产品

未来,随着 Filecoin 项目的不断成熟,和市场需求的不断演化,将诞生除了矿机之外的一系列复合型产品和工具型产品,为了把服务能力和边界扩大,需要统一的节点管理、控制方案,以及专门针对检索市场而设计的类 CDN 方案,存储市场的矿池方案等。

这些,都或多或少离不开多节点的部署运维工作。本文将介绍一种直接在单机上部署和管理多节点的方案。

二、创建新节点仓库

假设已编译安装了最新版的 go-filecoin 客户端,可参考:Filecoin 源码仓库全解析】第一章:搭建 Filecoin 测试节点

之后,通过指定不同的仓库路径--repodir,来创建新节点 2:

export FCRD=$HOME/.filecoin2

go-filecoin init --genesisfile=http://user.kittyhawk.wtf:8020/genesis.car --repodir=$FCRD

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

三、修改新节点配置

vim .filecoin2/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-filecoin daemon

go-filecoin daemon --repodir=$FCRD

启动 daemon 后,我们也可以对比单机节点 1 和节点 2 的配置信息,如下所示,MultiAddress 与 PeerID 一一对应,且按照不同端口配置已生成。

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

export NODE1_ADDR=$your_node1_multiaddress

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

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

如图所示,我们在新节点 2 的 Peer 集群中,查询到了原节点 1 的 multiaddress。

这样,一个初步的单机双节点集群就部署完毕了,以此类推,可以继续批量部署下去,直至机器资源满负荷运行。

之后,我们可以在单机上分别操作多节点,并设置不同角色进行前面几章所描述的测试过程了,有条件的朋友,也可以将这几章所描述的配置逻辑编写成 Shell 脚本或者加入程序控制来实现自动化。

五、Filecoin 矿池设计思路

5.1 矿池的概念

矿池从一定意义上来说,是伴随时间和市场需求演化而来,更倾向于产品的一个定义。最初起源于比特币。

在比特币的体制下,全网平均每 10 分钟产出一个区块,每个区块包含 50(现在是 12.5,每四年左右奖励减半一次)个比特币,而一个区块只可能被某一个幸运儿挖走,直接拥有所有奖励,其他人则颗粒无收,挖到的概率与矿工投入的设备算力大小成正比。

这就注定了如果比特币挖矿参与人数庞大且分散到一定程度后,挖到比特币的概率将无限接近于零,跟中彩票差不多。

这时候,如果散户要参与,资源有限,只能投入一台矿机挖矿,按照概率,要 5~10 年才能开采到一个区块,这使比特币挖矿陷入尴尬境地,让普通人几乎没有参与的可能,并不利于比特币的发展。

因此,解决的方案是 集众人之力,收益平摊 的方式,这也是矿池产品的核心,举个例子:

假设 100 万人参与比特币挖矿,全网 400P 算力,其中 90% 的矿工为 1P(1000T)以下的算力,如果投入一台 1T 矿机,将占全网算力的 40 万分之 1,理论上平均每 40 万个 10 分钟能挖到一个区块,也就是 7.6 年才能挖到一个区块然后一次性拿到 50(现在是 12.5)个比特币。那么,假如我再找 9 个拥有 1T 算力矿机的矿工,达成协定,我们总共 10 个人,其中任何一个人挖到区块,都按照每人的算力占比来进行平分,那么我们就是一个整体,总共 10T 算力,那么平均 0.76 年即可挖到一个区块,然后算下来到我们手上的就是 0.76 年开采到 5 个比特币,如果组织 100 人、1000 人、1 万人甚至 10 万人呢?如果是 10 万人,那么平均 40 分钟就能挖到 1 个区块,作为团队的一份子,我的收入将会趋于稳定,且参与度显著提高。

5.2 矿池的意义

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

5.3 Filecoin 可能存在矿池产品吗?

首先,在 DevNetworkState 监控面板上有三个关键参数我们需要了解:

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

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

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

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

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

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

公平:每个参与者每次选举只有一次试验,签名是确定的,而且 t 和 rand(t)是固定的。随机值 rand(t)在时刻 t 之前是未知的。因此,每个 Ticket 的计算值域相对公平。

保密:即攻击者没有 Mi(目前已经在网络有抵押的担保品信息),因此无法生成有效的 Ticket 和被签名的密钥。

公开可验证:可以通过给出计算值域,时刻 t 和 Mi 来说服验证者自身有效性。

其实白皮书的设计思想可以归结于下面这个公式,已被签名的 ticket 值域,同时被签名的 ticket 需要被哈希成一串较长位数编码,以防被暴力破解 (类似比特币中所使用的 Hashcash,不断尝试要满足前缀 N 个比特位都是 0 这样的条件),而 红框中的表示节点的存储有效率 Ratio,有效率是一个相对大的十进制值,需要换算成二进制的编码,才能与 Hashcash 之后的签名 Ticket 匹配做精准判断, L 与全网难度强相关,要求的前导 0 的个数越多,代表 L 难度越大。

那么,小编查阅了一下测试网目前这块的竞选算法代码实现:

Leader 的选举,目前仅比较了存储有效率与 Ticket 的值域,全网难度 L 的策略目前还未实现 …

尽管如此,综合来看:存储效率是关键,Filecoin 很大可能也将催生出矿池类产品。 理由如下:

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

5.4 Filecoin 矿池设计思路

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

我们也将在下一章《【Filecoin 源码仓库全解析】第七章:如何参与复制证明游戏测试》中,介绍 Filecoin 中的核心技术,EC 共识,复制证明,时空证明,以及目前的证明测试游戏等内容。

参考文献:

  • https://github.com/filecoin-p…
  • https://baike.baidu.com/item/…

往期系列文章回顾:

【Filecoin 源码仓库全解析】第一章:搭建 Filecoin 测试节点
【Filecoin 源码仓库全解析】第二章:如何创建账户钱包并获取 FIL Mock 代币
【Filecoin 源码仓库全解析】第三章(上):存储提供方(矿工)的配置操作

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

【Filecoin 源码仓库全解析】第四章:存储需求方(用户)的配置操作

【Filecoin 源码仓库全解析】第五章:检索市场及检索矿工

本章赞助品牌:

江西正舵者网络科技有限公司 是一家专业的大数据和分布式存储的新兴科技公司。公司团队汇聚了国内外区块链、人工智能、大数据、金融投资各个领域的经验丰富的顶尖专家,包括美国亚利桑那州大学、香港大学、中山大学、华中科技大学等国内外一流大学毕业的教授博士团队 5 人、硕士 10 人、核心技术骨干 18 人等,拥有专利技术 12 项;公司与国内外各高校、区块链实验室等建立了战略合作关系,其为正舵者科技公司带来了最前沿的科研成果、人才培养和输送。公司专注于 IPFS 应用研究和矿场项目建设,为 IPFS 生态提供最全面、专业的支持,包括矿机、矿场、托管、数据等,为不同层次参与者提供多方位,多角度的服务。

感谢 江西正舵者网络科技有限公司 (http://www.zdzkj.net) 对 嘉乐 SOHO的原创内容提供支持。

联系作者:

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

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

退出移动版