请选择 进入手机版 | 继续访问电脑版

tokentop

Filecoin太空竞赛掉算力怎么办?李白手把手现场教学

石榴矿业6block 发表于 4 天前 |
石榴矿业6block | 注册会员 | 发表于 2020-9-15 11:06:43 | 显示全部楼层 |阅读模式
————————
分享者:币圈李白
职位: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
用这个命令来查看你和各个节点的连接情况。这里首先要保证你和尽可能多的节点有连接,其次要尽可能保证你们连接的那个分数是正的,负的分数表示你们之间的连接不畅通,很难发生数据同步。打分是零的是没有尝试过连接的节点。
怎么增加正节点数呢?
一是利用刚才的命令添加种子节点,然后主动去连接别的节点。
以我们的香港节点和上海节点为例,他们之间的分数是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个写入。
所以大家要注意这个值,它等于你的存储集群同时能写入的sector的数量。
如果你实际写入速度更慢一些,就要把这个值调小。同时,存储的读写要留一些空余,这样才能保证WindowPoSt到来的时候,你的抽查能及时从存储的数据这边读出来,所以要留一些余地。
所以第二点就是要控制ParallelFetchLimit的数量。
03
WindowPoSt的计算
我们接着讲第三点。我们在做WindowPoSt时第一步是要同步上,拿到最新出来的块,第二是从存储那边抽取数据出来,一次先要抽查几百个甚至两千多个sector的数据。
经过前两步之后我们就要开始计算了,WindowPoSt的计算有两部分,一部分是计算一个默克尔树,另一部分是零知识证明。默克尔树这部分是在做哈希计算。大家知道,AMD的机器算哈希比较快,Intel的机器算哈希比较慢。官方的代码没有用GPU实现这部分,是用CPU去实现的。那这就告诉我们你做WindowPoSt的miner机器要用AMD的机器,这样你算这部分的时候都比Intel机器快。这就是为什么我们不能用Intel的机器算这部分。
零知识证明的计算,需要显卡,最好的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
可以看到这个地址现在有三个地址,一个是本地地址,一个是原来的worker地址,还有一个是我们刚新增的地址,里面有100块钱,用来做WindowPoSt。
这个地址平时里面没有交易,不会堵塞,只用来做WindowPoSt的交易。
最后一点,就是这几天在slack上热议的一个东西,优先打包。有人说大矿工只优先打包自己的,不打包别的人的。优先打包自己是官方支持的一个功能,你可以打开这个功能,没有任何问题。但不打包别人的是需要专门写代码进行开发的,而且开发这个功能对我一点好处都没有,因为打包别人的交易我也有手续费拿。
那为啥那天会有人说大矿工只打包自己的交易不打包别人的呢?这是因为官方那天停网了,他们把网关了四个小时,在这四个小时之内mempool里积压了大量消息没有上链。这些消息在网络恢复后需要四五个小时才能慢慢消化掉。由于很多矿工配置了优先打包这个功能,所以你就会看到他出的块里只有自己的消息,没有别人的。但积压处理完之后大矿工还是会产生很多消息,所以你会看到大部分是自己的,只有少量是别人的。
对于优先打包我不会去避讳这个话题,因为首先这是官方的一个功能,其次不论是比特币还是以太坊,矿工优先打包自己的消息都是非常自然的事情。比如我之前见过的某比特币矿场,都会把自己的奖励和给矿工发的币优先打包进去。矿场就会优先打包自己的交易,因为这样就能省下手续费,还能加速上链。所以优先打包并不是作恶,说这点的人只能说对区块链的历史或者技术没什么认识,他觉得这是什么大不了的事情。
区块链是以共识、以信任为准,不是举报的问题。最后我就讲一下这个官方设置,大家自行判断。
这个不能在本地环境来做。在官方的代码里有一个命令叫:
Mempool config
这是mempool默认的配置。可以看到里面有一个参数叫PriorityAddrs,这就是大家在说的优先打包。SizeLimitHigh,是说mempool里消息的上限,一旦超过这个值,就会把不重要的消息删减到SizeLimitLow为止。
在修改优先级前,要先会从消息池中选消息,要用一个命令叫mempool select,默认优先级是用手续费高低来选择的。如果我要优先选自己的,就要把priorityAddrs设置成自己的地址。设置完再看一下,mempool里第一条的信息就是我们选中地址的信息。这完全是官方设计的功能。
对于中小矿工,虽然出块少,但是优先打包也是有意义的。至于要不要做,大家自己判断。
最后,如果我一天也出不了多少块,那就只能调高WindowPoSt的Gas,让别人优先打包。那怎么调高Gas呢?那还在lotusminer的config文件里,在这个文件最后大家可以看到Fees的选项,有三个值,控制了三种消息的最大手续费。大家需要调高的就是MaxWindowPoStGasFee。我们的社区版中已经在原有的默认值的基础上乘以了2.
以上就是避免掉算力的几个措施,所有代码都会以文档的形式在我们的GitHub公布:https://github.com/shannon-6block/lotus-miner。这些都是最简单的、官方支持的方法。
最后,预祝大家在太空竞赛里取得好成绩,谢谢大家!
﹏粉黛佳人ゞ | 新手上路 | 发表于 4 天前 | 显示全部楼层
如果RDP/SSH出现登录时报用户名口令出错时,广东快乐十分可以使用admin登录界面,江苏快3 报表管理-登录报表-授权明细的最后一列得到出错原因然后反馈给厂商.体彩七星彩经过我们后台代码进行检测,幸运飞艇我们确认ssh代理程序源代码中没有调用任何libssh版本代码
您需要登录后才可以发帖 登录 | 立即注册  

本版积分规则

发表主题
返回顶部 返回列表