挖矿知识入门手册电子版(挖矿知识入门手册电子版下载)
前言:
在数字货币的生态体系中,挖矿无疑是最熟悉的一个词,工作量证明、打包交易、块播……各种专业术语让人眼花缭乱,粗略了解整个流程后就能略知一二。但现实中,大多数人并不知道这些名词之间的函数关系是什么,还有一些在数字货币领域沉浮多年的资深人士。
刚开始学习的时候,发现很多细节上的痛点都没有连贯易懂的答案,知识点都是片状的、孤立的,耽误了人们对这个重要过程的系统认知。所以我把自己有过的疑问总结成几篇文章,从初学者的角度自问自答,深入浅出。
数字货币是一种技术性很强的投资产品。只有深入了解其机理,才能对其前景做出最准确的判断。
挖矿知识手册入门 第一部分:底层知识储备
这一节我会介绍和挖掘相关的基础基础知识,其中会设计一些数学和编程的知识,不过你不用担心。我会用最简单的语言解释,保证专业知识变得没有任何门槛难以理解。
了解了必要的原理后,在下一篇文章中,我会结合本章内容,从应用层面进行实际分析。
Q1:什么是采矿?为什么在挖掘过程中拥有高计算能力如此重要?
答:首先用一句众所周知的话来概括:挖矿的过程就是生产比特币的过程。
矿工们需要一起竞争来得出一个数字。当计算出的数字小于系统给出的目标值时,他们可以宣布挖矿成功,然后获得系统奖励的比特币(目前是12.5个比特币)。
在这个过程中,矿工只能通过暴力破解(试号)来“碰瓷”,除了大量重复的机械计算,没有任何捷径。这就是计算能力如此重要的原因:你的计算能力越强(计算能力越大),你算出正确答案的优先级就会比别人高——这方面人海战术,三个臭皮匠远远胜过一个诸葛亮。
所以才会出现矿和池。
Q2:什么是矿机、矿、矿池、节点?他们之间是什么关系?
答:矿机是专门为解决问题而出现的机器。按照出现的顺序,是CPU矿机,GPU矿机,ASIC矿机。
起初,一群人使用CPU(内存)进行计算和挖掘,这意味着需要大量的CPU来集中计算能力。但是,在这个过程中,他们发现使用CPU进行计算简直是大材小用,很多计算单元根本没有使用。你怎么能用牛刀杀鸡呢?况且费用还是很贵的。
这时人们发现GPU(显卡)所能处理的并行计算正好可以满足挖矿的需求,于是转向用GPU挖矿,大大降低了成本,提高了性价比。但是在越来越多的矿机进入市场后,人们不再满足于GPU的运算速度,于是出现了大量的ASIC矿机,也就是专用集成电路矿机。这个挖矿机根据货币算法不同有不同的型号,专门挖各种数字货币。
ASIC矿机的出现,瞬间让计算能力的世界变得不公平。越来越多的资本进入市场,开始大量采购矿机进行集中开采。他们把这些采矿机器安排在电力和租金都很便宜的深山里,同时不分昼夜地进行计算。这时候就形成了一个矿。
但随着市场的扩大,矿逐渐不那么占优势了。由于各方计算能力的上升,矿山自己挖自己的区块越来越难,区块的不确定性也很难保证利润能负担得起成本。
于是矿上决定保温,他们把自己的计算能力聚集在一起,最终成为一个矿池。一方面,批量生产的概率大大提高,可以分一杯羹;另一方面,就算块没挖到,矿池也会给他们固定的保底收益,也就是块放出来后获得的比特币人头会被矿池拿走——不过别人虽然吃肉,毕竟自己的实力跟不上,来点汤也不错,不是吗?
所以一句话,矿机汇聚成矿,矿汇聚成成矿池,涓涓细流成河流,河流流入大海。
现在,在数字货币网络中,节点不再是个人设备。任何矿或矿池都可以视为一个大节点,后者已经远远超越个人设备节点,成为比特币网络的主力军。
Q3:什么是工作证明?它和前面回答中提到的目标值有什么关系?
答:首先我们要知道hash是什么。
SHA-256算法主要用于比特币挖掘。我们不需要知道这个算法的具体机制,只需要知道一个数A经过SHA-256运算后会变成一个长度为256位的数B,然后B就叫做A的哈希值
不同数字的哈希值永远不会相同,而且这个过程是不可逆的,即A可以通过SHA-256得到B,如果只知道B,那么永远无法反推出数字A。所以即使系统给了一个值C(已经哈希过了),也没有人能推断出这个值在哈希之前是什么数,只能一个一个地试着计算。当有人计算出一个小于系统给定的C值的杂凑数时,可以证明计算成功。
此时,矿工为寻求答案而进行的计算尝试的过程称为工作证明。
总而言之:
系统给出的值C即是目标值; 矿工每计算一次,都是工作量证明(proof-of-work)的具体体现。所以工作量证明(proof-of-work)即是证明矿工们为了得到答案确实进行了计算; 再具体一些,我们设定一个参数nonce,作为工作量证明的计数器。nonce初始值为0,每进行一次计算数值加1。
Q4:系统如何自动判断是否需要调整挖矿难度?还有怎么调整才能让输出速度稳定在十分钟一个?
答:众所周知,系统将比特币提现速度设定为1 /10分钟。但这并不是绝对固定的,因为块的速度与整个网络中每个节点的计算能力有关。
从下面https://btc.com/stats/diff网站的数据中,我们可以发现:
实际卸载速度并不是正好10分钟,而是在一定范围内小范围波动。当某些节点的计算能力很强时,它可以更容易地解决数学问题,也就是更快地挖块。此时,系统会根据某段时间内方块制作的平均时间做出相应的难度调整:
如果平均值小于10分钟,会增加解题难度,即把目标值设小一些;当目标值减小时,找到一个比它更小的哈希值变得越来越困难(比如掷骰子到3分以下的概率总是小于掷骰子到6分以下的概率)。反之亦然。
在这里,系统会每14天评估计算一次难度,并进行难度调整。
其中包括:
设d=14天=60*24*14=20160分钟
在这14天里,将开挖的块数:p=6*24*14=2016。
那么平均时间avg t1 =p/d
当avg t1小于上一周期的avg t0时,会增加难度,反之亦然。
我们需要注意的是,挖矿速度与比特币交易的数量和金额无关,只与整个网络的计算能力有关。而且计算力跟电费成本和现在的币价有关,因为如果币价太低,覆盖不了挖矿的成本,就会有大量矿工离开。此时系统的计算能力会降低,挖掘的难度也会相应降低。但由于系统每14天就会调整一次,比特币的挖掘难度会略有滞后。
10分钟的封锁速度在一开始也是中本聪的一个权衡。如果太快,会导致分叉概率增加(关于分叉和孤块,下文会详细介绍);如果太慢,交易确认就会变得太长。