Lotus -Filecoin挖矿


  • administrators

    Lotus是什么

    构建(编译)和安装

    启动节点Daemon

    获取测试代币,创建矿工

    初始化矿工,开始挖矿

    数据存储

    搜索与检索

    总结

    Lotus是什么

        Lotus 是 Filecoin 分布式存储网络的实验性实现,也就是说 Lotus 是 Filecoin 规范的另一个实现,跟 go-filecoin 项目类似, 它也实现了钱包、矿工、存储证明、时空证明(PoST)、数据存储、检索等一系列的功能, 只不过 Lotus 是 Filecoin 规范的简单实现,而 go-filecoin 是一个更完整的实现。
    
    
    
       那什么是 Filecoin 规范呢?简单的说就是白皮书里面提到的构建 DSN 网络的 Filecoin 协议,协议里面写明了如何实现一个全球性的分布式存储网络,并把全球的闲置存储空间利用起来。
    

    构建(编译)和安装

       1、安装 Go 1.13 以上的版本
    
        2、安装依赖软件库
    
    
    
        3、克隆项目到本地,并切换到项目根目录
    
    
    
    
    
         4、编译源代码,并安装到本地
    
    
    
        因需要从 Github 下载很多依赖组件,  导致整个过程时间有点长, 两种解决方案,第一种方案是上梯子,这种方式简单粗暴,有风险,不推荐;第二种方案是把编译环境搭建在现有的服务器上,编译完成之后把编译好的可执行文件拷贝到本地就可以了。
    
         5、节点安装和配置
    
        如果是初次运行 Lotus 的话,就不必进行任何初始化和配置,因为当前 Lotus 构建版本默认使用 build 目录中的创世区块和引导文件自动加入 Lotus 开发网络。
    
        但是如果你之前有运行过 Lotus, 请执行下面的清理脚本:
    

    启动节点Daemon

          1、可以新打开一个终端窗口,检查是否已连接到网络:
    
    
    
           2、接下来需要等待节点同步数据,可以通过以下方式跟踪同步状态:
    
    
    
        会看到类似下图的返回信息,其中 height: 是当前同步的区块高度。如果同步完成了这个值会编程 0, 也可以去 https://lotus-metrics.kittyhawk.wtf/chain 查看当前开发网络最新区块高度和其他网络指标。
    
    
    
       让人惊喜的是,笔者发现开发网络的统计最新区块出块时间指标显示的居然是中文,说明 Filecoin 协议实验室也意识到了大部分矿工来自中国,给协议实验室点个赞。
    

    获取测试代币,创建矿工

        获取测试代币的地址为 https://lotus-faucet.kittyhawk.wtf/
    
        Lotus 获取开发网代币有两种方式,一种是 [Send Funds] 这个接口每次请求会给你的钱包地址充值 0.0000000005 个测试代币,并且为了防止薅羊毛,接口请求的次数是有限制的。每个 IP 每 5 分钟发出一次请求,初始并发次数为5,最大并发数为 20。
    
        下面我们来看下当前网络创建一个矿工需要抵押多少代币:
    

    lotus state pledge-collateral
    21.719350748900198182
    21.7 个!!!也就是说,如果靠薅羊毛,你就是薅到明年,也不够你创建一个矿工。

       所以 Lotus 还提供了另外一种申请测试代币的方式:[Create Miner],就是直接申请一笔足够创建矿工的资金,同时帮你创建一个矿工。这个接口一个地址只能调用一次,每次调用费时大概 5 分钟,一般我们都是直接用这个接口去申请代币。
    

    初始化矿工,开始挖矿

       创建矿工成功之后,Faucet 页面会返回类似下面的指令。
    

    lotus-storage-miner init --actor=t0394 -owner=t3qtzwoevzlzzfbnovoj3gf3l62rlhx3elub5otw7oyalmorhgb6o3dfjcoaub5yzp7zoa53ynffgra7he5aja
    这条命令把矿工相应的信息提交到区块链,如果上链成功的话(这个过程将花费 30-60s),此命令应成功返回。

      下图是执行过程,主要是获取用于生成 PoSts 的参数到本地(/var/tmp/filecoin-proof-parameters)。
    
    
    
        运行矿工,开始挖矿:
    

    lotus-storage-miner run
    你可以通过下面的方式查看矿工信息:

    ~$ lotus-storage-miner info
    Miner: t0394 # 矿工 ID
    Power: 0 / 888370369416 (0.00%) # 当前矿工的存储算力
    Sealed Sectors: 0 # 已经密封的扇区
    Sealing Sectors: 0 # 等待密封的扇区
    Pending Sectors: 0 # 正在追加的扇区
    Failed Sectors: 0 # 密封失败的扇区

    存储数据

    自动存储随机数据

      Lotus 允许我们密封一些随机数据以开始生成PoSts,这点如果要在 go-filecoin 网络实现的话,需要自己写额外的刷单脚本。
    

    ~$ lotus-storage-miner store-garbage
    1
    返回的是订单的序号,在单一节点是递增的(1,2,3…)。

        现在你可以使用矿工 ID 检查矿工存储算力和扇区使用情况:
    

    查看全网算力

    $ lotus-storage-miner state power

    查看指定矿工的算力

    $ lotus-storage-miner state power <miner>

    查看指定矿工的扇区密封状态

    $ lotus-storage-miner state sectors <miner>
    存储指定的数据

     导入数据到节点
    

    创建一个简单文件

    $ echo "Hi my name is $USER" > hello.txt

    导入数据

    $ lotus client import ./hello.txt
    bafkreifgxbfutlcrbfnwpk5gx6o5of4mpleqvbkt5thphvbnsg6mnasp3q

    查看当前节点的所有 <Data CID>

    $ lotus client local
    bafkreifgxbfutlcrbfnwpk5gx6o5of4mpleqvbkt5thphvbnsg6mnasp3q hello.txt 23 ok查看矿工订单价格
    $ lotus client query-ask t0394
    Ask: t0394
    Price per Byte: 3
    发起一笔存储交易

    $ lotus client deal bafkreifgxbfutlcrbfnwpk5gx6o5of4mpleqvbkt5thphvbnsg6mnasp3q t0394 3 10
    bafyreibcvxlzzfqgwic3tyuayndgctzszttnnyemlbn4e7us6iimcd3mvi
    Bash

       这里笔者发现一个问题,就是这里提交订单成功了,但是我在运行矿工的终端却发现了报错信息:
    

    2019-10-20T06:52:17.187+0800 INFO deals deals/handler.go:165 Deal bafyreibcvxlzzfqgwic3tyuayndgctzszttnnyemlbn4e7us6iimcd3mvi updated state to 2
    2019-10-20T06:52:17.196+0800 INFO deals deals/handler_states.go:155 waiting for channel message to appear on chain
    2019-10-20T06:52:17.217+0800 INFO deals deals/handler.go:165 Deal bafyreibcvxlzzfqgwic3tyuayndgctzszttnnyemlbn4e7us6iimcd3mvi updated state to 5
    2019-10-20T06:52:17.217+0800 ERROR deals deals/handler.go:167 deal bafyreibcvxlzzfqgwic3tyuayndgctzszttnnyemlbn4e7us6iimcd3mvi failed: minimum price: 690
    github.com/filecoin-project/lotus/chain/deals.(*Handler).onUpdated
    /var/www/go/src/lotus/chain/deals/handler.go:167
    github.com/filecoin-project/lotus/chain/deals.(*Handler).Run.func1
    /var/www/go/src/lotus/chain/deals/handler.go:135
    2019-10-20T06:52:17.219+0800 ERROR deals deals/handler_utils.go:30 deal bafyreibcvxlzzfqgwic3tyuayndgctzszttnnyemlbn4e7us6iimcd3mvi failed: minimum price: 690
    github.com/filecoin-project/lotus/chain/deals.(*Handler).failDeal
    /var/www/go/src/lotus/chain/deals/handler_utils.go:30
    github.com/filecoin-project/lotus/chain/deals.(*Handler).onUpdated
    /var/www/go/src/lotus/chain/deals/handler.go:168
    github.com/filecoin-project/lotus/chain/deals.(*Handler).Run.func1
    /var/www/go/src/lotus/chain/deals/handler.go:135
    Bash

       报错内容大概是交易的 Price 值太小了,最小为 690. 但是问题是我上面查询出来的明明是 3 ,既然有最小值怎么订单又是发送成功的。
    
       关于这个问题我们工程师在 Lotus 的 GitHub 项目上创建了一个 issue,对这个问题有兴趣的同学可以跟踪一下,地址为: https://github.com/filecoin-project/lotus/issues/426
    
         如果想知道数据数据密封的进度,再次执行 lotus-storage-miner info :
    

    ~$ lotus-storage-miner info
    Miner: t0394
    Power: 889192448 / 943248642952 (0.00%)
    Sealed Sectors: 63
    Sealing Sectors: 291
    Pending Sectors: 0
    Failed Sectors: 0
    下面我们简单分析一下 Lotus 挖矿的整个过程,由于 lotus-storage-miner run 打印了详细的日志信息,因此我们通过分析日志就可以清晰的知道整个挖矿的流程,具体做了哪些事情。

    2019-10-20T07:06:05.288+0800 INFO storageminer storage/miner.go:122 committing sector
    2019-10-20T07:08:22.128+0800 WARN storageminer storage/post.go:35 PoSts already running 8468
    2019-10-20T07:12:50.288+0800 INFO storageminer storage/miner.go:122 committing sector
    2019-10-20T07:16:03.681+0800 WARN storageminer storage/post.go:35 PoSts already running 8468
    2019-10-20T07:19:45.438+0800 INFO storageminer storage/miner.go:122 committing sector
    2019-10-20T07:21:49.554+0800 WARN storageminer storage/post.go:35 PoSts already running 8468
    2019-10-20T07:21:49.556+0800 INFO storageminer storage/post.go:121 running PoSt {"delayed-by": 0, "chain-random": "hRnfQ1MxjBRgWC99bvtufOEiMxt50/VB5jGOnartsNBVRqlTyGWWdmYcOYgkN8ahCDAh1EtjvvQhJiHn1tawX2JSVIUtc0LOJlSCm6C4ds5IhsCs5OvQfNO6XnBNERaI", "ppe": 8468, "height": 8448}
    2019-10-20T07:21:49.558+0800 WARN storageminer storage/post.go:35 PoSts already running 8468
    2019-10-20T07:24:16.683+0800 INFO storageminer storage/post.go:133 submitting PoSt {"pLen": 192, "elapsed": 147.127304159}
    2019-10-20T07:24:16.683+0800 INFO storageminer storage/post.go:155 mpush
    2019-10-20T07:24:16.704+0800 INFO storageminer storage/post.go:162 Waiting for post bafy2bzaced7iklxtorijackxgnnv7kwvgocz473sgcostj2i4ocretlm2z6f6 to appear on chain
    ...
    Bash

    1、矿工接收到客户端发送过来的数据包之后立即进行封包(sealing) 操作,完成封包之后进行 committing sector (提交打包好的 sector)

    2、运行时空证明(running PoSts)

    3请求将 PoSts 上链(Waiting for post bafxxx to appear on chain)

    4、上链成功,返回上链区块高度("height": 8448)

        下面截图可以让你看到一些更详细的信息
    
    
    
        而且从日志中我们可以看出,我用的笔记本的封包速度大概是4分钟一个。 这个速度一般,而且 8 核的 CPU 资源几乎全被 Lotus 占满了。
    

    搜索与检索

       如果已将数据与矿工存储在网络中,则可以按CID搜索它:
    

    通过 CID 搜索数据

    $ lotus client find <Data CID>
    LOCAL
    RETRIEVAL <miner>@<miner peerId>-<deal funds>-<size>
    从矿工那里检索数据:

    $ lotus client retrieve <Data CID> <outfile>

    比如检索我们刚刚存储的数据

    Lotus client retrieve bafkreifgxbfutlcrbfnwpk5gx6o5of4mpleqvbkt5thphvbnsg6mnasp3q hello.txt
    上面的指令将启动检索交易并将数据写入hello.txt。(此过程可能需要一些时间。)

    总结

       总体来说, Lotus 的整体挖矿体验比 go-filecoin 要好一个档次,可能是因为它是 轻量级 实现,整个流程体验下来不会卡壳。所以 Lotus 作为 Filecoin 的备用网络,让我们对 Filecoin 网络的健壮性又多了一些信心。
    
        1、Lotus 的 API 完善程度很高,几乎不用通过统计页面,直接通过命令行工具就可以获取想要知道的整个网络信息。
    
         2、Lotus 实现了多种扇区大小,因此具有许多不同存储配置的矿工都可以在网络上进行挖矿。之前我们用低配置的笔记本电脑在测试 go-filecoin 的时候每 30 分钟才能完成一个 sector,现在Lotus版本只需要 4 分钟。因为 Lotus 扇区小一些,也正因为如此,你能在很短时间内体验一次整个挖矿流程。
    
         3、Lotus 的存储挖矿功能是作为一个单独的模块(lotus-storage-miner)实现的,因此高级矿工可以根据自己的特定硬件配置优化其挖矿过程(我们会针对此问题专门写一篇如何优化的文章,敬请关注)。
    
          4、Lotus 还提供了Pond UI 作为CLI的替代,这对于那些不熟悉命令行操作的同学是非常友好的,直接通过图形界面完成上述操作。(针对此问题,我们后期也会专门写一篇如何使用 Pond 的教程,敬请关注)。

Log in to reply
 

转让域名

This domain for sale!

Email:filapp@protonmail.com

Twitter:

https://twitter.com/RalapXStartUp

Telegram:

https://t.me/bigdog403
  • X

    It shouldn't be a significant centralization risk. The costs of buying your own GPUs or starting a new outsourced proving service will be pretty low. Even if many people decide to use third-party provers, there should be a competitive and well-distributed market.

    阅读更多
  • X

    We're working really hard to reduce sealing and proving costs. We really want to support smaller miners, but not at the cost of security. It's always possible to make things faster and cheaper through later optimizations, but it's hard to make things more secure.

    阅读更多
  • X

    Why here! We will make this customizable, right now in lotus its set to some pretty big value. We might even make a special mode for 'filler storage', storage youre adding just for power that doesnt have any real deals associated with it.

    阅读更多
  • X

    Details around faults and recovery can be found in the spec (https://github.com/filecoin-project/specs/). The protocol will accommodate both realistic operational needs for good miners and service providers, while maintaining the security of the protocol and Quality of Service for Clients' data. Having a data storage service offline is not good for Clients, and are not good for the service. At the same time, temporary power failures happen, and the protocol needs to accommodate them to some extent. As we get closer to mainnet, we will set cryptoecon parameters and policies, and we will explain them clearly for everyone.

    阅读更多

Looks like your connection to Filecoin中文网 was lost, please wait while we try to reconnect.