云主机
只要加密货币还在流行,针对云主机/服务器的恶意挖行为就会存在,最常见的是基于CPU进行挖的币种(比如门罗币)。
比起自己购买显卡或者搭建矿场(以基于显卡为主,比如比特币),在现阶段云平台成为趋势的情况下,使用云平台更“绿色”地挖,也是黑产团队很合理的利益趋势。
*最近看应急响应发现矿马比较多的一点记录
——————————以下都是来自网络上的搜索结果——————————
GPU和CPU芯片区别:为何要用GPU挖*?
CPU和GPU之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景。CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂。而GPU面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。
GPU采用了数量众多的计算单元和超长的流水线,但只有非常简单的控制逻辑并省去了Cache。而CPU不仅被Cache占据了大量空间,而且还有有复杂的控制逻辑和诸多优化电路,相比之下计算能力只是CPU很小的一部分。
什么类型的程序适合在GPU上运行?
(1)计算密集型的程序。所谓计算密集型(Compute-intensive)的程序,就是其大部分运行时间花在了寄存器运算上,寄存器的速度和处理器的速度相当,从寄存器读写数据几乎没有延时。可以做一下对比,读内存的延迟大概是几百个时钟周期;读硬盘的速度就不说了,即便是SSD, 也实在是太慢了。
(2)易于并行的程序。GPU其实是一种SIMD(Single Instruction Multiple Data)架构, 他有成百上千个核,每一个核在同一时间最好能做同样的事情。
CPU会利用较高的主频、cache、分支预测等技术,使处理每条指令所需的时间尽可能少,从而减低具有复杂跳转分支程序执行所需的时间。GPU则通过数量丧心病狂的流处理器实现大量线程并行,使同时走一条指令的数据变多,从而提高数据的吞吐量。
举个GPU通用计算教材上比较常见的例子,一个向量相加的程序,你可以让CPU跑一个循环,每个循环对一个分量做加法,也可以让GPU同时开大量线程,每个并行的线程对应一个分量的相加。CPU跑循环的时候每条指令所需时间一般低于GPU,但GPU因为可以开大量的线程并行地跑,具有SIMD(准确地说是SIMT)的优势。
算法
挖算法类型挖算法主要分为两种:需要使用大量硬件资源用于计算是POW算法。不需要使用大量硬件资源用于计算,但需要用币挖*是POS算法。POW算法出了新币种都说自己是POW。POS算法喜欢标新立异,只要出了新算法,起个新名字,都说自己不是POS。POW各种算法之间的差别很大,POS各种算法之间的差别很小,主要是名字上的差别。
POW算法比POS更安全。无论POW,还是POS,想让网络安全和稳定,全网确认时间最少是90秒。当然,可以把一个块拆分开,出块的时候先出块头,块头出来了,再出块的内容。这样可以减少全网确认时间。
不同币种的算法介绍
比特币(Bitcoin)是Sha256算法,中本聪设计的时候提出了人人挖的理念。比特币最初是钱包挖,后来有了CPU挖*程序,再后来有了显卡挖*程序,2012年有了ASIC挖。早期很多山寨币都是使用的Sha256算法,比特币矿机出现后,这些山寨币由于全网算力低,经常被51%攻击,就存活不下去了。
大部分币的开发团队都反对ASIC,使用各种不能用于ASIC挖的算法,很少有开发团队希望自己的币能被ASCI挖*。
莱特币(Litecoin)是Scrypt算法,对内存依赖很高。2013年,比特币和莱特币价格大涨。那时候莱特币还是显卡挖,认为做不出来ASCI,大量新出现的山寨币使用Scrypt算法。机枪池大量出现,矿工在矿池挖莱特币,矿池实际让矿工挖的是同算法其它收益更高的币,矿池还是支付给矿工莱特币。矿池在交易平台大量砸盘卖出挖到的这个币,一直跌到挖收益很低,这个币基本就完了,矿池再换挖其它币用机枪池挖*。2014年,莱特币矿机被做出来了,芯片内集成了存储。
合并采矿是在矿池实现的。被合并采矿的币必须支持,才能和主链合并采矿。在几乎不影响主链挖*收益的同时,更多的挖出被合并采矿的币,是矿池的竞争力。
比特股PTS(Bitshares PTS)是2013年发布的,开发团队提出了人人挖的理念,并表示只能CPU挖。过了才2个多月,就有公开的显卡挖*程序了。
质数币(Primecoin)让挖计算有意义的数据。以前各种币挖都是进行无意义的计算,质数币的计算是用来寻找大质数,这是有意义的。质数币刚开始也是CPU挖,很快就有第三方做出来了显卡挖程序。
黎曼币(Riecoin)使用了改进的计算质数算法。黎曼币的算法涉及到数论极其极其复杂,需要片上存储和大内存,只能CPU挖*,做不出来显卡挖程序和ASIC。黎曼币挖程序算法的作者是卡内基梅隆大学计算机科学终身副教授,他把算法公开在了自己博客上。
恒久币(Aeternity)设计出了布谷鸟(Cuckoo)算法,核心散列函数是cuckaroo和cuckatoo。需要片上存储,适合CPU挖,CPU的缓存就是片上存储。当然,需要的存储空间不能超过CPU缓存。不适合显卡挖,显卡GPU的片上存储有限,板载存储显存需要外排序,效率能有CPU的10%就不错了。恒久币最初希望手机CPU能挖,设计了布谷鸟算法,后来恒久币还是放弃了手机CPU挖。恒久币实际使用的算法,需要的存储空间远远超过了CPU缓存,就适合显卡挖*。
古灵币(Grin)算法中需要的存储空间也远远超过了CPU缓存,也是适合显卡挖*。
门罗币(Monero)是CPU挖*,用了AES-NI指令,不适合手机CPU挖。门罗币开发团队一直反对ASIC,并声称出现ASIC就硬分叉换算法。2018年,门罗币ASIC出现后,门罗币开发团队就对门罗币换了新算法并进行硬分叉。门罗币新链和旧链都获得了交易平台和矿池的支持,ASIC还能继续在旧链挖。矿机商又改进ASIC,制造出来了能挖新链的ASIC,门罗币开发团队再次换算法硬分叉。矿机商和开发团队持续升级争斗,门罗币换了很多算法,也出来了很多链。钱包有很多版本,用户在使用时不方便,造成了很多用户和矿工流失。各个版本的门罗币发展的都不好。
真正CPU挖的币就只有黎曼币,但黎曼币没有发展起来。由于很多做CPU挖的币,要么做出来了显卡挖程序,要么做出来了ASIC。以后就很少有开发团队提起人人挖的理念,不再想着做CPU挖*的币了。
达世币(Dash)是X11算法,开创了主节点概念。达世币在开始是显卡挖,开发团队不希望ASIC挖,后来还是出现了ASIC。达世币主节点需要一直在线才有收益,主节点不参与计算,网络安全由POW保障,POW负责给主节点发币,主节点只领币。不要把主节点的概念和POS弄混了,主节点和POS不能共存。达世币主节点验证算法最初很简单,但没有任何安全可言,就不断改进主节点验证算法,后来变得极其复杂。其它主节点币,都是用的达世币主节点算法,只是用的版本不同。
X13、X16R等算法,都是X11算法的变种,设计之初都希望抵御ASIC,但随着市场越来越大,还是会做出来ASIC。
以太坊(Ethereum)出块时间10多秒,全网需要20多个确认,全网确认时间也5分钟了。以太坊挖需要大内存和大内存带宽,适合显卡挖。GPU运算,显存存储,GPU和显存之间带宽足够。以太坊虽然出来了ASIC,但制造门槛高,比显卡优势大不了多少,没有把显卡挖*给淘汰了。
双挖是在本地实现的。在以太坊挖*访问显卡显存的等待时间,双挖其它的显卡币。
Nicehash和Miningrigrentals是算力交易平台,能买卖很多算法的算力。以前只有机枪矿池才能做到某种算力挖同种算法的小币种,现在能直接通过平台买算力很方便。
信用币(Credits)实现了抵押挖和借贷功能,使用显卡挖。挖*的时候,如果不抵押币,难度会很高,抵押了币难度会降低。如果没有币抵押,可以在钱包中向第三方借贷。信用币很少有人知道。
比原链(Bytom)开发团队主动迎合ASIC,刚开始就ASIC挖,后来发现显卡挖效率更高。开发团队主动迎合ASIC是很不好的。
爆裂币(Burstcoin)是硬盘挖,虽然叫POC算法,但应该属于POW算法分类下。先向硬盘写入数据,挖过程是查询数据,查询完等待。由于有等待时间,挖收益与硬盘速度无关,只与硬盘容量有关。最近,已经有显卡和硬盘共用的挖程序了,硬盘中写入的是压缩数据,查询的时候由显卡解压缩,显卡已经提高了1倍硬盘利用率。随着挖程序的继续优化,硬盘利用率还能进一步提升。显卡的参与,已经违背了这个算法设计的初衷。另外,硬盘挖每个区块需要等待计算结果,这就造成了网络不安全,不需要51%算力就能发动攻击,大概只需要20%-30%的算力就能发动攻击。
点点币(PPcoin)是POS算法,使用很少的硬件用于计算,需要用币挖。点点币挖不需要一直运行钱包,一个月运行一次钱包,挖*收益也差不多。有些POS算法的币,需要一直运行钱包才有收益。
比特股(Bitshares)是鉴证人,有101个。EOS是超级节点,有21个。比特股和EOS,既不属于POW,也不属于POS。鉴证人和超级节点,也被称为代理节点。需要全网投票选出代理节点,由代理节点挖*。
51%攻击不能直接修改任意地址的币,可以无效掉正在进行的任意交易,包括无效掉别人的挖产出。拥有51%的算力,就可以获得全网100%的挖产出。51%攻击继续加大算力,可以回滚交易记录,把已经确认的交易再回滚掉。回滚掉自己的交易,达到双重支付的目的。想回滚的交易越久,需要的算力越大,回滚难度也越大。