主页 > imtoken下载手机版 > 区块链学习笔记 7 - 比特币挖矿

区块链学习笔记 7 - 比特币挖矿

imtoken下载手机版 2023-07-01 05:28:03

七、比特币挖矿

如前所述,比特币有两种节点,一种是全节点,一种是轻节点

节点的全节点职责

全节点一般一直在线,在本地硬盘上维护完整的区块链信息,并在内存中维护UTXO集合以快速验证交易的正确性并监控比特币网络网站上的交易信息,进而验证每笔交易的合法性,是否有合法的签名,是否是双花,全节点要决定哪些交易会打包进区块,那么默认情况下,只要是合法的交易,该交易手续费符合要求,打包进去,同时监控其他矿工挖出的区块,验证其合法性,那么这个验证从三个方面来验证。首先,验证每笔交易必须是合法的,包括造币。比如区块奖励是否被篡改,区块奖励现在是12.5个比特币,是否被篡改,出块是否满足难度要求。用外行的话来说,检查块头。取哈希值后,检查前面是否有足够的零,同时检查区块头中难度目标值的设置是否正确。然后,全节点必须每两周根据比特币协议的要求调整挖矿。挖矿难度,第三点,检查这个区块是否在延伸最长的合法链。然后是采矿。前面的步骤都是为挖矿做准备。这一步才是真正带来收益的挖矿。这分为两部分。首先是决定沿着哪条链挖掘。在保存的情况下,应该沿着最长的合法链条进行挖掘。当出现等长的分叉时,选择哪个分叉,默认选择最先听到的分叉。

在这里插入图片描述

轻节点的职责

轻节点一般不会一直在线,轻节点不需要保存整个区块链,保存每个区块的头部就足够了。这个大小差了将近1000倍,也就是存储了整个块,只存储了块头,差不多是1000倍的大小。轻节点不需要保存所有交易。只要保存了与自己相关的交易,大部分交易的合法性是无法验证的,因为不保存完整的交易信息就无法检测双花,只有与自己相关的交易的合法性无法检测互联网上发布的区块的正确性,因为无法检测区块中包含的交易是否合法,但是可以验证挖矿的难度,发布的区块是否满足难度要求,这个轻节点可以已验证。因为在挖矿时只使用区块头的信息来计算哈希值,而区块头的信息是轻节点保留的,所以虽然轻节点没有办法检查这些包含的交易的合法性块发布在网络上,但是可以检查发布的块是否满足难度要求。轻节点假设发布这个区块的全节点不会发布非法交易,因为发布这样的交易对他不利。 ,轻节点只能检测哪条链最长,不知道哪条合法链最长。轻节点假设矿工是理性的,不会沿着非法链挖,因为挖一个区块的成本是非常大的。所谓的工作量证明,需要大量的工作才能挖出一个区块。如果发现挖出的区块包含非法交易,那将是徒劳的。因此,轻节点假定为完整节点。矿工不会做这种事情。

在这里插入图片描述

挖矿笔记

比特币的安全性是如何保证的

在比特币网络上,大多数节点都是轻节点,如果你只是想转账,不需要挖矿,那么你不需要运行全节点,使用轻节点即可。在挖矿过程中,如果有人发布了一个区块,则该区块是合法的,并且最长的合法链正在被延长。此时,应该停止现有的挖矿,并在本地重新组装一个候选块。 ,然后重新挖矿,因为如果你想沿着这个新发布的区块往下挖,本地组装的区块中包含的交易会发生变化,一些交易可能会包含在新发布的区块中。此外,区块头中的内容也会发生变化。例如,区块头包含由交易所组成的 Merkcle 树的根哈希值,以及指向前一个区块的指针。这些也会发生变化,因此需要停止现有的挖矿,重新组装一个候选区块,然后从头开始挖矿。这样做不是很可惜吗?我挖了很久,挖了很久。现在,其他人已经发布了一个新的。块,我之前挖过白,要重新拼块,然后继续挖,这算不算可惜,其实也不可惜,因为前面说了,挖矿的一个属性是无记忆的,也可以称为无进度,所以,无论是继续挖原块还是停下来换一个新组装的块比特币的安全性是如何保证的,成功的概率都是一样的,只要满足要求的nonce值当前不是挖出来,不管之前挖了多久,对最终结果没有影响,所以这并不可惜,即使一个合法的区块被挖出来,发布,放到区块链上,也没有意味着胜利现在,可能发布的区块最终没有成为最长的合法链,可能还有其他人同时发布了一个区块,或者有一些不为人知的双重支出,从而最终导致该区块中的一些交易变得矛盾

比特币的安全性

比特币的安全性从两个方面得到保障。

一方面是密码学的保证,另一方面是共识机制。

加密保证是没有你的私钥,其他人无法伪造你的签名,因此他们无法转移你账户中的钱,前提是系统中的大部分计算能力可用。有实力的矿工好,遵守协议,不接受没有合法签名的交易。没有这个,密码担保就没用了,就像去银行取钱一样,取钱如果你必须出示合法证明,然后银行工作人员可以给你钱,那么这个合法证明就相当于一个密码签名。密码学的本质确保其他人无法伪造您的签名,因此无法伪造您的签名。有很多方法可以伪造你的身份。同时,银行的工作人员也必须遵守规定,不会给没有合法证件的人钱。只有将这两者结合起来,才能确保其他人无法从您的帐户中取钱。

采矿设备

挖矿设备的演进趋势越来越专业化。都可以用来挖矿,但是仔细想想,如果你买一台专门用来挖矿的电脑,其实是很不划算的。计算机中的大部分内存都是空闲的,挖矿只用于它。只有一小部分内存,CPU中的大部分组件也处于空闲状态,因为挖矿中计算hash值的操作只用到了通用CPU中的一小部分指令,而硬盘还有很多其他资源也闲置了,那又怎样? , 随着比特币挖矿难度的增加,用CPU挖矿和用通用电脑挖矿很快就会变得无利可图,因为性价比太低了,所以这台挖矿设备会转移到第一代第二代GPU ,第一代是CPU,GPU挖矿比CPU挖矿好很多,只要GPU适合大规模并行计算,比如深度学习,GPU用的比较多,还有大量的矩阵乘法,但是用GPU挖矿其实有点浪费。 GPU 专为通用并行计算而设计。如果是用来挖矿的,里面还有很多组件是闲置的。

比特币的安全性是如何保证的

例如,使用对于浮点数运算的组件,这些组件对于深度学习是非常重要的。深度学习计算梯度需要使用浮点运算,而比特币挖矿使用整数运算,因此GPU对CPU非常重要。程度有所提高,但还是有很多浪费。顺便说一句,近年来GPU的价格上涨很快,有人将其归因于深度学习的普及。事实上,许多 GPU 都用于挖矿。 ,现在有好消息。现在比特币挖矿难度增加了,用GPU挖矿已经不划算了。它已经超过了GPU的计算能力范围。因此,因为挖矿竞争而购买它的人并不多。 GPU更多,剩下的CPU用于深度学习和游戏等应用。一些新开发的加密货币也是用GPU挖矿的,现在用ASIC芯片挖矿,ASIC,Application Specific Integrated Circa,这是专门为挖矿而设计的芯片,上面没有多余的电路逻辑,整体设置好了用于比特币挖矿和哈希值计算的操作,

他的性价比是最高的,这个芯片除了挖矿什么都做不了,而为某种加密货币设置的ASIC芯片只能挖这个币,不能做别的。 ,除非两种加密货币使用同一个挖矿谜题,否则挖矿时要解决的谜题称为挖矿谜题。当一些加密货币新发行时,他们故意使用现有的挖矿难题来解决启动问题。挖矿难题和比特币一样,可以吸引更多人来挖矿。这种情况称为合并挖掘。除了这种情况,只有一个芯片只能挖一种加密货币。 ASIC芯片的开发周期很长。一个芯片从设计、流片到最终生产需要一个很长的周期。像比特币这样的ASIC芯片可能需要一年的时间,而这已经是非常快的了,也就是说,与通用芯片相比,这个研发速度基本上是芯片史上的一个奇迹,如果在这么长的一段时间内. ,如果比特币价格发生剧烈变化,前期投入的研发费用可能会白费。从历史上看,比特币的价格变化是比较剧烈的。已经发生了好几次,比特币的价格在几个月内下跌了 80%,然后才慢慢回升。这在股市中基本上是不可想象的。如果比特币价格大幅下跌,挖矿可能会亏本。

可能不足以支付电费,这是使用 ASIC 芯片挖矿的情况。即使在比特币发展的黄金时期,价格一直在上涨,此时挖矿是有利可图的,但竞争越来越激烈,定制的ASIC芯片可能在几个月内就过时了,你不得不重新购买一个新的、更强大的芯片相当于一场军备竞赛。研究表明,ASIC矿机刚推出时,大部分利润都是在推出的前两个月获得的,因为此时他的算力是同类产品中最强的。基本上前两个月,你可以获得整个生命周期一半的利润。之后可能会被淘汰,以后会出现更强的矿机,所以说到底什么时候买ASIC矿机,时机很重要。现在一般来说,是需要提前预定的,也就是买ASIC矿机,要先付钱,过了很长一段时间,厂家才能放矿机。对你来说,如果厂家不能及时发货,对矿工的伤害是很大的。一些不法厂商生产ASIC矿机后,并没有立即提供给用户,而是先用矿机挖矿。挖了一段时间,赚了比特币,等着黄金时间赚比特币,过了前两个月矿机发给用户,他找借口说我的矿机还在在生产测试中,其实在现实生活中,也可以看出比特币的算力有了明显的提升。通常,大型制造商生产了新的矿机。所以,在比特币浪潮中比特币的安全性是如何保证的,真正赚大钱的不一定是挖矿的,而是卖矿机的。

综上所述,挖矿的趋势是从一般到专业化。

CPU是通用计算,GPU是通用并行计算,ASIC已经成为专门用于挖矿的,现在基本上ASIC是用来挖矿的,他除了挖矿什么都做不了,他过时之后,基本上是废除。我不希望 CPU 和 GPU 用于其他事情。很多人认为这种情况不好。这不符合我一开始说的去中心化的概念,也有悖于比特币的设计。初衷,最民主的情况是大家都用CPU挖矿,用家里的普通电脑就行,不管你是不是搞IT的,家里有电脑,你就可以用它来挖矿。

进入GPU时代后,普通家用电脑挖矿难度很大,GPU噪音很大。如果一台电脑配备了四个GPU,运行后噪音会很大。大,基本上人不能呆在房间里。稍后,我们将讨论一些称为替代采矿难题的新加密货币。设计这个的出发点是ASIC抗性,可以抗ASIC芯片化。目的是让通用计算机也能参与挖矿过程。

挖矿的另一个趋势是大型矿池的出现。单个使用 ASIC 芯片的矿工在平均收入方面是有利可图的,但他的收入是不稳定的,例如在比特币系统中,平均每十分钟产生一个块。这适用于所有矿工。平均而言,十分钟就会出块,但如果是矿工的话,他可能要挖很长时间。用 ASIC 矿机挖一个区块需要一到两年的时间,目前的奖励是 12.5BTC,这还是很值钱的,有几万美元。这就像买彩票一样。中彩票的概率很小,但如果挖到了,就中大奖了。单个矿工还有其他问题。除了挖矿,他还有全节点的其他职责,这就是本文开头的全节点的职责。全节点还有很多事情要做,他的任务还是挺繁重的。所谓矿石,就是把所有的矿工组织成一个整体。矿池的结构是一个全节点会驱动很多台矿机,一个矿池一般有一个矿。主池管理器连接到许多矿工。这个矿工只负责计算哈希值。全节点的其他职责由矿工承担。 ASIC芯片只能负责计算哈希值,不能执行全节点的其他功能。矿工出现的另一个目的是解决收入不稳定的问题。单个矿工的收入不稳定,所以大家一起工作。获得收益后大家一起分配,这就涉及到如何分配的问题,矿池一般有两种组织形式,一种像一个大型数据中心,也就是一些互联网公司有上千台服务器,那么一个大矿池里有上千台矿机,如果这些矿工属于同一个组织,收益分配无所谓。有时,矿工来自不同的组织。第二种组织方式是分布式的。矿工和矿主不在同一个地方,可能是分布式的。在世界各地,矿工都要加入矿池,矿工也要加入矿池,就是按照与矿池的通信协议联系矿工,然后矿工分配计算任务哈希值给它,矿工计算后,将结果返回给矿工,以后有区块奖励时参与分红。

比特币的安全性是如何保证的

那么如果矿工来自世界各地,而不是来自同一个组织,那么收益应该如何分配?可以均匀分布吗?在这种情况下,其他矿工无论好坏都是一样的。有些矿工可能不工作,因为你要挖矿,还要交电费,所以尽量少挖,因为收益的分配是根据每个矿工的贡献来分配的。也就是说,这个地方也需要工作量证明来证明每个矿工所做的工作。如何证明每个矿工做了多少工作?事实上,这很简单。为什么矿工的收入不稳定,因为挖矿太难了。如果挖矿难度降低,矿工的收入就会变得稳定。如何降低难度?例如,原始矿工需要找到一个 nonce,并使用这个 nonce 来计算块头的哈希值。前面至少有 70 个零的块是合法块。这是原始要求。现在我们降低挖矿难度,比如我们只需要前面有60个零。这被称为一个份额,这个份额被称为几乎在有效块被挖出之后,它被提交给矿工。矿工对它没有用处。除了证明矿工的工作量外,它没有其他用途。矿工不可能发布区块并获得其他奖励。因为这个区块是不合法的,所以矿工会记录每个矿工提交了多少股。未来,矿工实际挖出合法区块后,区块奖励将根据每个矿工提交的数量而定。工作量,分配这个share的个数,这个方法是可行的。

每个矿工挖地雷的概率取决于他尝试的随机数。他尝试的随机数越多,他能找到的份额就越多,因此他可以使用该矿工提交的份额数量作为他完成工作量的衡量标准。

有可能一些矿工和矿工会惹麻烦。比如他挖了一个合法的区块,但是没有提交给矿工,这样就ok了,所以对他来说,没有经济但是矿池之间有竞争关系。可以故意派一些矿工加入竞争对手的矿池进行挖矿,以对抗竞争对手。通过这种方式,它会起到破坏性的作用,相当于这些矿工仍然参与分红,其他矿工挖出的区块的奖励也会被分配。

以下是矿池的统计数据。

下图为各国矿池分布比例,

在这里插入图片描述

中国矿池占算力的81%,远超其他国家,因此中国矿池的算力整体在比特币体系中具有绝对优势。

比特币的安全性是如何保证的

在这里插入图片描述

如果看单个矿池,2014年曾经有一个矿池叫GHash.IO,占了大部分算力。全球一半以上的算力在当时引起了恐慌。这 51% 的计算能力足以发动攻击。此事件公布后,GHash.IO矿池主动大幅降低算力占比,以免动摇大家对比特币的信心。

在这里插入图片描述

这是目前的算力分布,似乎没有那么集中。上面提到的GHash矿池已经不存在了,早就停止运营了,当然,挖矿的中心化程度还是比较大的,几个大的矿池占了相当大的比例,但是没有一个矿池占了一半以上,所以好像比较安全,

但这可能只是表面现象。假设一个机构拥有一半以上的算力,他不一定把所有的算力都放在一个矿池里,而是可以将算力分散隐藏在很多矿石中。里面,平时是零散的,隐藏的。当你想发起攻击时,你可以专注于发起攻击。矿工切换到矿池非常容易。这也是矿池带来的危险。如果没有矿池,一个矿工将不得不投入大量的硬件成本来购买足够多的矿机来实现系统中一半以上的算力。

拥有矿池后,他可能只占算力的一小部分。只要他能吸引到足够多的矿工,也就是不知道真相的群众,加入足够多的矿池,仅此而已。 一般来说,矿池中的矿场主要收取一定比例的区块奖励作为管理费。如果他想管理和经营矿石,他也必须有一定的收入。管理费是按一定比例提取的,有的以出块为基准。交易费用按奖励比例提取。在发起攻击之前,一些恶意矿池可能会故意将管理费降低到特别低的水平,甚至亏本获利。在吸引足够多的矿工加入后,他们将发起攻击。事实上,这是大型矿池的一个缺点,这使得 51% 攻击更容易。如果某个矿池占算力的一半以上,就可以发起分叉攻击,抵制。

A->B,(A向B转移大量比特币),经过6次确认,比特币被认为是安全的,然后,A在钱面前发起分叉攻击,将其转交给自己, 分叉攻击, 使下面的链成为最长的合法链, 这似乎是一个很长的追赶之路, 比上面的要长, 如果攻击者有 51% 的算力, 下面的链增长速度更快比上面的链条,最终会成为最长的合法链条。届时,转账交易A->B将被回滚。

比特币的安全性是如何保证的

在这里插入图片描述

为什么说攻击者中的矿工是不知道真相的人,因为矿工只计算哈希值,不知道互联网上的交易是什么,区块是什么发布,不知道双花的出现,也不知道这种分叉攻击的存在。另外,不要把51%的阈值作为绝对阈值,达到51%%可以发起攻击,低于51%不能发起攻击。这其实是一个概率,每个矿池本身占用的算力比例是一个估计,而且是不断变化的。这是第一种 Fork 攻击。

抵制、封锁、禁运。

例如,攻击者不喜欢一个账户,比如账户A,他怀疑这个账户,参与了一些非法交易,想要封锁这个账户,所有与A相关的交易都不会被允许。在链上,我该怎么办?如果有人在区块链上发布了交易 A->B,它会立即分叉,从而产生一个不包含该交易的区块,并且所有与 A 相关的交易都将不被允许。进去吧,这个方法和上面说的回滚双花的区别就是不需要等待接下来的六个确认区块,

在这里插入图片描述

这个块一上链就马上分叉,越快越好,因为希望别人挖你的交易。

总结

大型矿池具有一定的优势,可以减轻矿工的负担。矿工只负责挖矿和计算哈希值,其他一切都可以由这个来完成。一旦矿主完成,收益分配会更加稳定。

还有一定的危险,就是发动51%攻击变得更容易了。不一定他有这么大的算力,只要能调动算力就行。