文章来源:互联网作者:欧易发布时间:2023-04-05 14:42:00
编者按:区块链涉及到的技术很多,从互联网底层到不明觉厉的密码学,可是往往关注币价者多而研究技术的人少。牛市的时候,大家为了炒币也会努力学习,熊市的时候,反正也没啥事,我觉得可以更加努力学习。作为一个文科生,我当然会有很多理科生看起来觉得很白痴的问题。作为一个记者,我不难找到业内懂的人用人话给我解释,而且他们往往不会当面嫌弃我。
这是小明学习笔记第六期,如果有其他有趣问题,欢迎投稿和提问。
———这是华丽丽的正文分割线———
回顾过往,小明学习笔记已经从周更变成月更,这一篇距离上一篇可以说是季更了。由于我现在的工作主要是编辑了,所以一般是带着记者出去采访和写稿,很少自己单独写稿,所以学习笔记的更新估计也是绵绵无绝期。
这期要分享的是矿池,首先要感谢 xDAG 的核心开发者谢锐,同时他也是 xDAG 官方挖矿软件的设计者,年前给我科普了很多这方面的知识。
我最早了解这个行业是在 2017 年采访 ViaBTC微比特,当时杨海坡总结,矿池就像矿工的联盟,把大家聚起来挖矿。这个确实已经是矿池非常本质而且通俗的解释。
我们都知道,随着比特币而诞生的 PoW 共识机制,其挖矿的过程本质就是在做随机数碰撞,谁猜中者这个随机数谁就可以获得记账权、成为这轮的出块人。因为是乱猜,所以单位时间内猜的次数越多,猜中的概率就越大。
随着专业矿机等设备出现,比特币、莱特币等币种全网挖矿算力增加,大部分的矿工靠自己SOLo挖矿已经很难挖到币,矿池应运而生。矿池就像一个联盟,把这些零散的矿工甚至是矿场集合起来一起挖矿,按算力占比给矿工收益,这样既可以增加挖到币的概率、也可以稳定矿工的收入,同时矿池提供的技术也有利于降低挖矿效率。
神鱼也曾经总结,矿池其实就是在分派任务给大家算。不过,我想知道得更细节,就是矿工们究竟在算什么?矿池又是怎么分配任务的呢?
《浅谈矿池和矿场(矿池篇)》这篇文章举了个例子说明挖矿的过程:“矿池将区块难度分成很多难度更小的任务下发给矿工计算,矿工完成一个任务后将结果提交给矿池,叫提交一个 share。假设全网难度要求 n 的值为 100,即前 100 个比特位为 0,矿池可能会给矿工分配一个任务,要求前 30 位为 0,然后再从所有提交的任务中,寻找有没有凑巧前 100 位为 0 的目标值。”
谢锐告诉我,理论上,矿池给矿工分配任务的方式可以有两种:
第一种,矿池只是一个节点,打包交易的还是矿工。矿池会把任务的完整信息给到到矿工,矿工打包交易、然后广播。矿工知道完整信息,但是需要填的东西比较多,签名也是矿工签的。
第二种矿池节点直接打包,给到矿工的是结果的中间状态,或者说非完整信息,矿工填完他要填的东西。块最后的组合由矿池来做。矿工把 nounce 发给矿池,签名是矿池。
“唯一不会变的是,你接入这个矿池的数据同步方式。”
看完上面两种方式,显然大部分商业运营矿池会选择第二种,挖矿收益的分配就是按照签名。如果我既是矿工也是矿池主,两种没有区别,大可选择第一种。
看到上面说的 nounce 值,你大概会有点懵逼,这其实就是我们常说的 PoW 过程中要碰撞的那个随机数,下面还会解释。
根据《精通比特币》一书,挖矿的目标是找到一个使区块头哈希值小于难度目标的 nonce。前提是选取的交易已经确定,说到这里,我们就需要来学习一下比特币的区块头结构。
表格来自《精通比特币》
在区块头里面,基本上挖矿节点能改变的东西就两个:交易和 nounce。既然挖矿的目标是让区块头哈希值小于目标,整个步骤基本上是:决定你要打包的交易并形成对应 merkle tree 根——乱猜一个 nounce —— 把 nounce 放到区块头里面哈希一下——才知道有没有小于目标哈希值,即大于目标难度。
So,基本上你所选的交易和 nounce,都无助于你“预知”最后的哈希值大小(nounce 值大,区块头哈希不一定就变大变小),你每一步都只能乱猜。别人一次可能就猜中了,你猜了几万次都还没有中,你唯一能做的就是比别人在同一时间里面猜更多次,这就是矿机在做的事情——把自己所有的精力都集中起来做一件事。
说到矿机,我问真的存在抗 ASIC 的算法吗? 谢锐总体认为本质上没有抗 ASIC,不过不同的算法会让制造 ASIC 矿机的成本更高。
任何 PoW 币种都会有一套挖矿算法/软件,ASIC 芯片就是把这个软件烧成电路。最早的芯片都是专用的,比如收音机的芯片只能做收音机的东西。FPGA(Field Programmable Gate Array) 则是可编程阵列,在硅芯片上施加电压,一个与门就可以变成非门。这类芯片应用范围更广,首先上头成本比ASIC高;而且为了做得更通用,还是有冗余,没有 ASIC 高效。所以现在大家会在电脑上设计、在FPGA上设计,然后烧 ASIC。如此类推,GPU 甚至 CPU 能做的计算类型就更多了。如果想知道 FPGA 具体为什么比 CPU 和 GPU 更高效,可以参考这篇文章。
为什么会有冗余?举个假设性的例子(不准确但有助理解),比如 5+5 ,FPGA 可能没有 5 这个概念,就要变成 1+1+1+1+1,ASIC就可以直接算 5+5。这让我想起王嘉平接受 Odaily星球日报采访时说过一句话:在计算机领域,灵活性/通用和高效往往是冲突的。
“ASIC 最强的就是并行计算 ,FPGA稍微差一点。其实本质上没有抗ASIC,只能让它反推的每一步更难,比如要求把东西放在内存里算,比如需要算方差,需要把每个数据都放进内存,GPU 到 FPGA 到 ASIC,(ASIC)需要的显存芯片可能是 GPU 的 100 倍。(要不要研发某个币种的 AISIC 矿机)只看成本和收益。”通俗来说,可以理解为研发一台挖以太坊的 ASIC 矿机比研发比特币 ASIC 矿机更难,而且同样时间下研发出来的芯片,对比起普通 CPU/GPU 效果提升不明显。比特币可能是提升了成千上万倍,以太可能提升了几倍到几十倍,效果划不来。
类似的分析也可在公开资料看到,比如耳朵财经的这段话:
“Ethereum使用了Ethash算法,前身为Dagger算法(Vitailk发明),其目的是为了抵制ASIC矿机。如何抵制ASIC矿机呢?通过将挖矿和内存带宽相捆绑,即降低其他硬件的运算优势,从而达到挖矿设备平等这一理念。
Ethash算法没有阻挡ASIC矿机的出现,只是拖延了出现的时间。
绑定内存带宽意味着可以通过提高内存带宽速度来提高算力,或者在相同内存带宽速度下降低功耗,只不过目前内存带宽价格过高以及ETH价格过低,从成本上考虑,ASIC矿机相较GPU来得不够划算。
Litecoin使用的是密码学家兼程序员Colin Percival于2009年发表的论文Stronger Key Derivation via Sequential Memory-hard Functions上所发明的scrypt算法。原理和Ethash较为相似,都是提高挖矿时内存的使用成本,延缓ASIC矿机的出现。
2014年,Zeusminer研发出了专门针对scrypt算法的ASIC矿机。这也说明通过绑定某一硬件(如内存)从而抬高挖取的使用成本是没有办法完全杜绝ASIC矿机。”
现在大部分号称抗 ASIC 的挖矿算法,都是将内存和计算捆绑。
以太中文网还整理了一下不同 PoW 算法部署 ASIC 之后挖矿效率增长倍数:
SHA256 约1000倍
Scrypt和NeoScrypt 约1000倍
X11和X16R 约1000倍
Equihash 约100倍
Cuckoo Cycle 约100倍
CryptoNight 约50倍
Ethash 约2倍
最后简单提下矿池的收益分配模式,其实这个已经有很多文章解释过。矿池的分配模式大类有两种:
第一种是实际出块情况分币:时间周期内,矿池挖到多少块,就按照算力比例分配所得挖矿收益。
这种方式的时间周期一般按挖出块的时间为止,即两次挖到块的时间之内的算力分布比例分配收益;也可以每天结算,如果你所在的矿池爆了好几个块,当天的收益就很高,如果矿池一天都没有挖到什么块,那么所有人今天都没有收益。这称为 PPLNS(Pay Per Last N Shares)。
第二种即按理论值分币:时间周期内(一般是一天),理论上矿池能得到多少收益,按照算力比例给矿工分钱,相比上一种稳定。
借用这篇文章里的一个例子:假如在某 10 分钟,你为某矿池提供了 1 T 算力,当时该矿池算力共为 100 T,全网算力 1000 T,比特币网络平均每 10 分钟出一个块,出块奖励为 12.5 个 BTC,矿池占全网总算力的十分之一,矿池收益期望值为 1.25 个 BTC,你的算力占矿池算力的百分之一,无论矿池是否挖到区块,你的收益都是理论收益 1.25 BTC。这种称为 PPS(Pay Per Share)。由于 PPS 模式下,矿池承担风险,所以费用的比率会更高。
行文至此矿池的基本知识科普得差不多了。突然想起最近(我是在年前采访的……)看文章看到以太坊的空块率多了很多,我又顺便问了一下矿池为什么要挖空块,得到的回答是省时间:“挖空块的好处,不用同步数据,也不用下载,而且上传更快,(不过短时间内)出块太多会提升难度。”
想知道得更详细,可以参考《科普入门 | 空块是什么?为什么矿工要挖空块? 》这篇文章:
“挖空块技术唯一的优势就在于,因为空块只有一条信息,空块矿工省去了‘打包’大量信息的时间。这使得空块矿工挖完这个区块,直接就可以开始下一个区块的挖矿。
如果是大矿场甚至矿池级别的硬件,这一操作说起来只是节省了几秒钟的时间,不过大矿池几秒钟时间的算力,秒秒钟几百万上下真是一点也不夸张啊。
TRC20量化交易软件 TRC20量化交易软件官方客服v6.4.8
金融动态
下载
pi炒币手机钱包 pi炒币手机钱包苹果v6.1.8
金融动态
下载
RP杠杆平台 RP杠杆平台官网登陆v6.8.4
金融动态
下载
什么是AIOZ Ntwork(AIOZ)币
金融动态
下载
什么是Nrvos Ntwork(CKB)币
金融动态
下载
Gains Ntwork(GNS)是什么币
金融动态
下载
什么是vrscal(VR)币
金融动态
下载
Mavrick Protocol(MAV)是什么币
金融动态
下载