主页 > imtoken苹果版下载链接 > 了解采矿紧急情况 | 技术选型0122
了解采矿紧急情况 | 技术选型0122
本文约2600字,阅读时间约7分钟。
早上去上班,刚打开电脑准备学习。 突然接到老板的电话,说某客户网络存在大量挖矿病毒,需要我们帮忙解决。
作为一个不起眼的保安小子,二话不说,拿起电脑就赶往了客户现场。
到了现场,我大致了解了情况。 客户的网络还是比较复杂的(大学校园网),之前爆发过一轮,涉及内网服务器,个人PC等。
涉及服务器的挖掘是由弱 ssh 密码引起的。 经过一波emergency+baseline,基本解决了问题。
但涉及个人用户的挖矿业务屡禁不止,主要原因是学校个人PC动态复杂,无法进行终端统一管控。
但是,在多次事故中,客户也很苦恼,但遇到我这种机智的人,“黄师傅的腿,一定要接上”。
1个
矿业初步勘查
客户网络部署了360AISA全流程威胁分析系统,先上去看看情况。 要过滤其他警报,请求基本上是这样的:
挖矿通用协议:
1.设置生成协议
Setgenerate 协议接口代表了 CPU 挖掘的时代。
在论文中etc矿池搭建,中本聪描述了“1 CPU 1 Vote”的理想数字民主概念。 初始版本客户端有挖矿功能,客户端挖矿非常简单。 当然,只有同步数据后才能进行挖矿。
2. 上班协议
Getwork协议代表GPU挖矿时代。 需求主要是由于挖矿程序与节点客户端的分离,以及区块链数据与挖矿组件的分离。
使用客户端节点直接挖矿需要同步完整的区块链,数据和程序紧密结合。 也就是说,如果有多台电脑进行挖矿,每台电脑都需要同步一个单独的区块链数据。
这实际上是没有必要的。 对于矿工来说,至少一个全节点就够了。 同时,GPU挖矿时代的到来也需要一种协议来与客户端节点进行交互。
3.获取块模板
Getblocktemplate协议诞生于2012年年中,当时矿池已经出现。 与Getwork相比,Getblocktemplate协议最大的区别在于该协议允许矿工自行构建区块。 这样,节点和挖矿就完全分离了。
对于Getwork来说,区块链是一个黑盒子,Getwork对区块链一无所知,他只知道修改数据字段的4个字节。
对于Getblocktemplate,整个区块链是透明的。 getblocktemplate 拥有区块链上所有与挖矿相关的信息,包括待确认的交易池。 getblocktemplate 可以选择包含在区块中的交易。
4.阶层
矿池使用Getblocktemplate协议与节点客户端交互,使用Stratum协议与矿工交互。 这是最典型的矿池建设模式。
另外,为了让之前使用Getwork协议挖矿的软件也能连接到矿池进行挖矿,矿池一般也支持Getwork协议,通过层挖代理机制(Stratum mining proxy)来实现.
要知道矿池刚出现的时候etc矿池搭建,显卡挖矿还是主力军,Getwork使用起来非常方便。 另外,一些早期的FPGA矿机是用Getwork实现的。
Stratum使用TCP与矿池通信,数据传输过程基于JSON-RPC。
这时,我第一次看到了雾。 在AISA上最先看到的是Stratum特有的通讯流量。
矿机可以使用以下8种方式向矿池发送数据:
矿池可以使用以下7种方式向矿机发送数据:
矿机与矿池交互过程:
值得注意的是,以上是标准的Stratum。 由于加密货币种类繁多,不同加密货币所使用的通信协议会有所不同。
比如常见的XMR(Monero)挖矿程序xmrig和xmr-stak都会修改上述协议。 门罗币简化了上述流程,使用登录方式进行鉴权和订阅。 矿池收到登录信息后,如果验证通过,则直接下发任务——这样就将标准Stratum协议的三种通信压缩为一种,大大降低了通信流量。
JSON-RPC:
官方的定义是:JSON-RPC是一种无状态(HTTP说的,巧了,我也是无状态的)轻量级RPC协议。
1. 中国
RPC即Remote Procedure Call,字面意思是远程过程调用。 就是从本地机器远程调用执行服务器上的一个函数。