首页 > 热点新闻 > 四川马边的比特币矿场|Filecoin太空竞赛掉算力怎么办?李白手把手现场教学
路安  

四川马边的比特币矿场|Filecoin太空竞赛掉算力怎么办?李白手把手现场教学

摘要:————————分享者:币圈李白职位:6block 核心开发工程师(以下正文摘自6Block核心工程师“币圈李白”的视频直播分享,相应视频请见文末)今天的主题就

7bfcbc6c375b45ff97c5cb404b76af79

————————

分享者:币圈李白

职位:6block 核心开发工程师

(以下正文摘自6Block核心工程师“币圈李白”的视频直播分享,相应视频请见文末)

今天的主题就是如何通过官方代码里的设置把掉的算力找回来。这也是我们石榴矿池的责任,来维护社区的健康发展。掉算力有很多原因,需要逐一排除。今天讲的主要是官方提供的、写在代码里通过配置就能实现的一些手段。

01

区块链的同步

提交PoSt的第一步就是要保证你的数据是同步的,才能拿来做证明。关于同步的第一点就是通过种子节点。我们提供了两个种子节点,分别在北京和深圳。可以使用:

lotus net connect

/dns4/bootstrap1.testnet.filfox.info/tcp/16666/p2p/12D3KooW9uSxsSh3qwAPxSwwRDVqTTPg8HTBthujVYFXy7Dizb6Q

lotus net connect

/dns4/bootstrap2.testnet.filfox.info/tcp/16666/p2p/12D3KooWKths1fzziHsmeMdTdV7dgB9DzoeiGVSwcW2HCygztH9e

用这个命令连接种子节点。我们在香港还有一个节点,是给浏览器和海外用户用的,不建议国内用户连接。连接成功之后可以用:

Lotus net scores

用这个命令来查看你和各个节点的连接情况。这里首先要保证你和尽可能多的节点有连接,其次要尽可能保证你们连接的那个分数是正的,负的分数表示你们之间的连接不畅通,很难发生数据同步。打分是零的是没有尝试过连接的节点。

d155072b1848464a80355796bf2f0708

怎么增加正节点数呢?

一是利用刚才的命令添加种子节点,然后主动去连接别的节点。

以我们的香港节点和上海节点为例,他们之间的分数是2500+,证明连接非常畅通。如果连接了种子节点后就可以第一时间同步最新的tipset,保持数据同步。

02

控制ParallelFetchLimit的数量

第二个是合理控制封装的机器worker的SSD封装完迁移到HDD上,就是finalize阶段。这个阶段有一个限制是你HDD的写入速度是多少,无论是单机还是存储集群。比如你整体的写入速度是10GB/s,那如果你如果同时写入10个Sector,那么必定会造成网络堵塞。所以我们要控制好finalize的数量。

这个控制要在lotus miner的配置文件里,config.toml里面,在最后会有一个参数控制这个数量。大家如果用我们社区版软件可以看到这个参数是80,但这个是根据我们的集群配置设定的,我们的集群能够支持同时写入80个Sector。但是各位的集群可能无法支持同时写入这么大量的数据。那就要根据你自己的集群的性能进行修改。

那这个参数怎么估计呢?这个主要受两个方面的约束,一个是存储机的带宽,如果存储机的带宽是万兆,那写入速度就能支持1GB/s。然后要看你worker这边的传输速率是多少。我们之前推荐的3970速率是千兆,如果能连两个存储机的话就能同时支持20个写入,8个存储机就能支持80个写入。

d80e75073d0946d0bb8564287b93cbbd

所以大家要注意这个值,它等于你的存储集群同时能写入的sector的数量。

如果你实际写入速度更慢一些,就要把这个值调小。同时,存储的读写要留一些空余,这样才能保证WindowPoSt到来的时候,你的抽查能及时从存储的数据这边读出来,所以要留一些余地。

所以第二点就是要控制ParallelFetchLimit的数量。

03

WindowPoSt的计算

我们接着讲第三点。我们在做WindowPoSt时第一步是要同步上,拿到最新出来的块,第二是从存储那边抽取数据出来,一次先要抽查几百个甚至两千多个sector的数据。

经过前两步之后我们就要开始计算了,WindowPoSt的计算有两部分,一部分是计算一个默克尔树,另一部分是零知识证明。默克尔树这部分是在做哈希计算。大家知道,AMD的机器算哈希比较快,Intel的机器算哈希比较慢。官方的代码没有用GPU实现这部分,是用CPU去实现的。那这就告诉我们你做WindowPoSt的miner机器要用AMD的机器,这样你算这部分的时候都比Intel机器快。这就是为什么我们不能用Intel的机器算这部分。

de47f80bddb84a42945c2c087f9d1ed4

零知识证明的计算,需要显卡,最好的2080Ti放上,最好是两张。别的肯定都会慢一点。计算慢了之后抽查不一定能及时算出来,就有可能掉算力。

04

如何打包mempool里的message

第四点是最复杂的,当你证明生成好之后,message生成了,就要上链了。但是很多时候你发现message在mempool里没被打包。这个要怎么做呢?其实官方在文档里是写了这部分的,我接下来就带大家走一遍这个操作。

这个操作分为两部分。一是账户分离。什么是账户分离?大家有时候会遇到这样一个情况,就是WindowPoSt它的message生成之后,所有的messsage都有一个nonce值,这是参考以太坊的。这些message在打包上链的时候是根据nonce从小到大打包的,它一定会把你nonce值比较小的优先打包,然后再打包值大的。这就造成一个结果,就是如果你在WindwoPoSt期间,MessagePool里已经存了很多message没有上链,那你的WindowPoSt的message是最后加入的,它就要等你pool里所有的message都上链之后才能上链,即使你的证明message生成很快,最终也会堵塞在mempool里不被打包。

针对这个问题,官方在最近的版本里增加了一种方法,允许你设置多个控制账户。你可以用一个账户发你precommit和prove的消息,用另一个账户发WindowPoSt的消息,这样这个账户就不会有积压的消息,就可以第一时间被处理。

官方在这个文档里写了。我们操作用的是本地的2k的网络。首先看我们现在的地址:

Lotus wallet list

显示我们有一个地址,然后我要新增一个地址

Lotus wallet new bls

然后往新地址里打100块钱。这部分钱就是给你用来做WindowPoSt的。接下来你要把这个地址设置成发WindowPoSt消息的地址:

Lotus-miner actor control set –really-do-it 加上你的地址

然后它就会发出一条消息,把这个地址新增为我的控制地址。

那怎么看我有多少新增地址呢?可以用:

Lotus-miner actor control list –verbose

2a326cad66fb4eaea89619aa26fa5e79

可以看到这个地址现在有三个地址,一个是本地地址,一个是原来的worker地址,还有一个是我们刚新增的地址,里面有100块钱,用来做WindowPoSt。

这个地址平时里面没有交易,不会堵塞,只用来做WindowPoSt的交易。

最后一点,就是这几天在slack上热议的一个东西,优先打包。有人说大矿工只优先打包自己的,不打包别的人的。优先打包自己是官方支持的一个功能,你可以打开这个功能,没有任何问题。但不打包别人的是需要专门写代码进行开发的,而且开发这个功能对我一点好处都没有,因为打包别人的交易我也有手续费拿。

那为啥那天会有人说大矿工只打包自己的交易不打包别人的呢?这是因为官方那天停网了,他们把网关了四个小时,在这四个小时之内mempool里积压了大量消息没有上链。这些消息在网络恢复后需要四五个小时才能慢慢消化掉。由于很多矿工配置了优先打包这个功能,所以你就会看到他出的块里只有自己的消息,没有别人的。但积压处理完之后大矿工还是会产生很多消息,所以你会看到大部分是自己的,只有少量是别人的。

对于优先打包我不会去避讳这个话题,因为首先这是官方的一个功能,其次不论是比特币还是以太坊,矿工优先打包自己的消息都是非常自然的事情。比如我之前见过的某比特币矿场,都会把自己的奖励和给矿工发的币优先打包进去。矿场就会优先打包自己的交易,因为这样就能省下手续费,还能加速上链。所以优先打包并不是作恶,说这点的人只能说对区块链的历史或者技术没什么认识,他觉得这是什么大不了的事情。

区块链是以共识、以信任为准,不是举报的问题。最后我就讲一下这个官方设置,大家自行判断。

这个不能在本地环境来做。在官方的代码里有一个命令叫:

Mempool config

这是mempool默认的配置。可以看到里面有一个参数叫PriorityAddrs,这就是大家在说的优先打包。SizeLimitHigh,是说mempool里消息的上限,一旦超过这个值,就会把不重要的消息删减到SizeLimitLow为止。

099fe355b5654e738c8595db70e79b99

在修改优先级前,要先会从消息池中选消息,要用一个命令叫mempool select,默认优先级是用手续费高低来选择的。如果我要优先选自己的,就要把priorityAddrs设置成自己的地址。设置完再看一下,mempool里第一条的信息就是我们选中地址的信息。这完全是官方设计的功能。

对于中小矿工,虽然出块少,但是优先打包也是有意义的。至于要不要做,大家自己判断。

最后,如果我一天也出不了多少块,那就只能调高WindowPoSt的Gas,让别人优先打包。那怎么调高Gas呢?那还在lotusminer的config文件里,在这个文件最后大家可以看到Fees的选项,有三个值,控制了三种消息的最大手续费。大家需要调高的就是MaxWindowPoStGasFee。我们的社区版中已经在原有的默认值的基础上乘以了2.

以上就是避免掉算力的几个措施,所有代码都会以文档的形式在我们的GitHub公布:https://github.com/shannon-6block/lotus-miner。这些都是最简单的、官方支持的方法。

最后,预祝大家在太空竞赛里取得好成绩,谢谢大家!

免责声明
世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。