主页 > imtoken怎么退出账号 > 让我们谈谈区块链——比特币到底是什么挖矿?

让我们谈谈区块链——比特币到底是什么挖矿?

imtoken怎么退出账号 2023-07-15 05:08:20

在本文中,我想介绍比特币中最令人困惑的概念之一——挖矿。这个概念在之前的演讲中已经提到过。如果没有上面的基本伏笔,就很难判断出什么挖矿了。春节期间,有个玩麻将戏弄区块链的笑话1。它看起来真的很相似。今天,我们将分几篇文章详细讨论比特币挖矿。你可以判断麻将和区块链的关系。

 漫谈区块链——比特币里的挖矿到底是挖什么矿? 比特币

挖矿到底在做什么?

我们在谈到比特币的运行原理时说过,为了防止被某个节点垄断记账权(中心化),我们设计了一个竞赛项目来决定如何生成一个新区块,并让所有节点通过竞争来争夺发布新区块的权利,这在比特币中称为工作量证明(Proof-of-Work,PoW)。

如何理解工作量证明只是中本聪设计的一个节点选举规则,它以每个节点所拥有的计算能力作为是否获得发布新区块的权利的基本依据。这样,一方面可以在相对固定的时间段(十分钟)内不断产生新的区块,同时也让比特币网络能够保持足够的算力来验证交易和区块的合法性。唯一的释放方式。可见,工作量证明是比特币网络运行的核心环节,几乎所有需要解决的重要问题(安全问题、去中心化问题等)都通过这种方式解决了。

计算能力不是由每个节点的自报配置决定的,而是涉及到一个数学计算过程。自然,算力强的比算力弱的快,获胜的概率也更高。因此,站在旁观者的角度来看,这些参与竞争的节点都在拼命计算(工作),而节点越努力(工作越多),奖励就越多(新区块释放奖励),所以从形式上看就像淘金,付出的劳动越多,得到的就越多。因此,工作量证明被称为“挖矿”,参与这种工作的节点被称为“矿工”2。

 漫谈区块链——比特币里的挖矿到底是挖什么矿? 比特币

为什么是挖矿,而不是其他方法?

我们现在明白了,工作量证明是为了解决去中心化记账的问题,每个区块的释放都是由于节点的努力和竞争。那么有的朋友会问,为什么用这种方式使用工作量证明而不是其他方式呢?让我们帮助中本聪想想他有哪些选择?

一种方式是人类社会非常熟悉的一种方式是选举。但在历代各种文明的尝试中,要么效率低下,要么变得中心化(由权力控制)。当我们引入分布式系统达成共识时,有一个希腊城邦问题可以通过选举来解决。现在确实有算法在使用,这里就不详细介绍了。但在比特币网络的拜占庭将军问题中,选举方式无法满足需求。

另一种情况就像抽奖方式,每个人都参加婚宴或年会。当客人进入会场时,每个人都会得到一张彩票。当主持人开奖时(如果没有操纵),中奖将是一个随机过程。在这种情况下,如果有人冒充很多彩票,那么这个人中奖的概率就会更高。在比特币网络环境中,所有节点都是匿名的,任何人都可以设置任意数量的设备作为节点,那么谁部署的节点越多,被选中发布新比特币区块的概率就越高。这种情况是中本聪必须努力防止的,技术术语叫做“女巫攻击”。

Nakamoto 最终采用了类似彩票的方法,但增加了工作量证明作为防止“女巫攻击”的手段。工作量证明的核心思想是,我们将节点的随机选择改为根据某个节点占有某种资源的比例来选择节点,我们希望这个资源不能被任何人垄断。例如,如果这个资源是计算能力,这就是我们所说的工作量证明系统3。如果有人发起“女巫攻击”,那么他必须为他制造的每个节点分配足够的计算资源,那么机会主义显然会成为现实。

比特币全网算力_比特币算力总和_比特币全网算力k线图

工作证明不是中本聪的发明

正如我们前面提到的,区块链技术是多种技术的组合,每一种技术都不是中本聪发明的,在比特币出现之前的几十年里,中本聪似乎解决了这些问题。中本聪最神奇的地方就是结合了这些技术,加上奖励机制和历史巧合等,拼出了神奇的比特币。

工作量证明技术也是如此。早在 1992 年,密码学家 Cynthia Dwork 和 Moni Naor 就首先提出了这个方案来使用减少垃圾邮件问题 4。他们设想发送一封电子邮件需要几秒钟来解决一个数学问题,如果有,收件人会自动忽略电子邮件没有回答所附问题。这样对于普通用户来说,在发邮件频率不高的情况下,这样的开销不会造成太大的麻烦。但是对于想要一次发送数千封垃圾邮件的人来说,这样的计算量加起来几乎是不可能的。

1997 年,Adam Back 在他发明 Hashcash 的数字加密货币系统中使用了类似的设计。这里还有一件事,Adam Baker 似乎认为比特币没有技术突破,因为他认为比特币技术与他发明的哈希现金基本相似,他说得有点过头了:“比特币只是哈希现金的一种改造。 . 这只是通胀控制的延伸。”杰里米·克拉克(Jeremy Clarek)在普林斯顿的教科书《比特币与数字加密货币技术》中说这句话酸到说:“特斯拉只是在给轮子加电池而已。” 5

 漫谈区块链——比特币里的挖矿到底是挖什么矿? 比特币

Hash Cash 创始人 Adam Back

工作量证明的方式其实只是一个技术思路,让这些节点展现自己,可以说这是核心发明或者核心创新。

工作量证明的数列计算问题应该是怎样的?

对于比特币网络来说,一个巧妙的数学计算问题可以算是核心的天才发明。我们来看看这道数学题需要具备哪些特征。

1、无进展

拿一个我和朋友经常玩的小游戏,叫做“终极密码”。游戏是这样的,主持人偷偷记录一个1到100之间的任意数字,然后让其他人猜他记录的数字,然后猜的人也在1到100的范围内随机猜,猜错的主持人会告诉她是错的 6,然后她继续猜,直到猜对为止。从概率上看,第一次猜的概率是1%,第二次猜的概率是1/99。她每次猜测,只否定一种可能性,这样她下一次猜测的难度就会更高。略微降低。

比特币全网算力_比特币全网算力k线图_比特币算力总和

如果我们指定一个介于 1 到 1 万亿之间的数字,那么每次猜测都与上一次没有什么不同。这样一来,如果很多人都在偷偷地互相猜这个数字,猜的越多,猜到的概率就越高。如果这样一个长期的猜数字游戏继续下去,当我们计算总数时,我们肯定会知道,猜得最多的人显然是猜得最多的人,但猜得少的人也有机会“早点来不如偶然来”,这样的属性称为无关过程。因为这个属性可以保证最终节点选择的概率分布可以按照节点参与的计算资源的比例来分配。

2、无记忆进程

继续前面的例子,如果每次猜的都是1到1万亿之间的数字,那么猜的多的人会在长时间的无数轮竞争中积累越来越多的排除数,进而降低难度的问题。因此,这个问题不能总是通过猜测宿主的秘密来记录的数字。每一轮,主持人都会随机更改数字让大家猜,这样每一轮结束后,上一轮的积累全部作废,一切从零开始。此属性称为无记忆进程。

3、快速验证

我们的题目是让猜测者很难快速计算出答案,但是在计算出答案并发布区块后,其他节点应该降低验证时间的难度,让其他节点毫不费力地验证答案也是必要的功能这类问题。继续使用我们的“终极密码”游戏。猜对的人和主持人一起宣布两个数字,其他人一看就知道是不是对了。这是一个具有快速验证能力的计算问题。

4、难度可调

对于区块链的应用来说,由于区块记录的是某个时间段的数据,整个区块链实际上是一个时间的分布式数据库,所以每个区块之间存在一定的时间间隔,由最基本的原则。加密货币也不例外,但每个人对于间隔的长短并不一致。比特币是十分钟,而其他一些数字加密货币是秒,但无论如何,块之间的间隔是释放的。是的,如何控制这个时间也是这个挖矿难题需要具备的一个特性。

它仍然是“终极密码”。如果一开始有几个人猜,那么问题的难度在开始时会在 1 到 100 之间。随着猜的人越来越多,你越聪明,猜的时间就越短。这时候宿主根据人数和智力水平调整难度,从1到100,到1到1000,再到1到10000。如果人数突然减少,主人发现间隔时间更长,可以减少。范围以降低难度。因此,这个挖矿问题是一个难度可调的好问题。通过调整难度,设置每个区块释放的时间间隔。

“终极密码”游戏不是比特币的算术题,因为这样的P2P网络不可能有中心化的版主,我只是用这个来说明算术题所需要的基本特征的含义,一定不能误解了,因为比特币的算术形式很不一样。

比特币挖矿数学题

中本聪设计的比特币挖矿数学题,专业名称为“偏哈希函数原像解密”(partial hash-preimage puzzle),这个词的中文翻译估计没人能看懂。只是告诉大家这个名字。具体含义需要解释清楚。

比特币算力总和_比特币全网算力_比特币全网算力k线图

不知道还有谁记得,我在这个漫无边际的系列中介绍密码学基础的时候,专门介绍了哈希算法作为密码学的瑞士军刀。它具有三个有用的特性。当时我介绍了碰撞抗性和隐身,还有一个我当时没有说的解谜友好性。这个坑可以在这里填。哈希算法的解谜友好特性正是我们刚才所说的挖掘算术问题的能力。

(1)比特币选择的哈希函数算法SHA-256的输入是无限的,输出是一种可能性,几乎是无限的,所以每次猜到答案的概率几乎就是相同,且输入输出没有规律性,具有过程不相关的特点;区块和随机数的结合,所以每次区块计算竞赛的输入与过去的区块计算完全无关,具有没有记忆特征;

(3)哈希函数验证很简单,只要对发布的区块进行哈希一次,就可以判断对错,具有验证速度快的特点;

(4)哈希值其实是一个数字,中本聪的设计是让节点竞争计算小于目标值的哈希值,并设计了一个规则自动调整目标value来调整游戏的难度,具有难度可调的特点。(目标值是怎么来的?,难度是怎么调整的,以后会详细介绍,因为这是个大话题)

可以看出,中本聪使用SHA-256算法作为挖掘算术问题,需要满足工作量证明数学计算问题的所有特点。具体节点求解过程是这样的:

第一步:将自己收集到的交易整理出来,生成一个待发布的区块;

第二步:猜一个随机数,并与块组成输入字符串;

第 3 步:使用 SHA-256 计算输出值;

第四步:把输出的值与目标值进行比较;

第五步:如果小于目标值,则成功;如果大于目标值,则返回第二步循环。

可怕的比特币网络算力资源

比特币全网算力_比特币全网算力k线图_比特币算力总和

猜测成功的节点一般需要无限次循环计算。每秒可以进行的哈希计算次数是衡量计算能力(简称“算力”)的单位,用“h/s”表示。现在整个比特币网络的算力已经是一个非常恐怖的天文数字了。 2018年3月1日,整个比特币网络的算力已经达到24.8Eh/s,也就是说每一秒都可以进行一次子哈希计算。

 漫谈区块链——比特币里的挖矿到底是挖什么矿? 比特币

为什么现在比特币网络算力是一个可怕的数字,我们来看看世界500强超级计算机的算力这些计算机的算力单位是浮点计算的次数(f/s)可以每秒执行一次。浮点计算和哈希计算其实是没法比的,因为这两种计算的区别就相当于跳绳和跑步。不同之处。然而,现在许多数据都是在假设这两种计算是等价的情况下测量大小差异的。目前排名第一的是中国神威太湖之光计算机,浮点运算能力最高125Pf/s;其次是中国的天河二号计算机,最高浮点运算能力为54Pf/s7。

来自维基百科的数据

世界500强计算机的总算力接近1Ef/s比特币算力总和,比比特币网络的算力差20倍以上。五年前也有人计算过,比特币网络的计算能力是世界 500 强的综合计算能力的 8 倍。看来比特币网络的算力扩展远远超过了超级计算机。

 漫谈区块链——比特币里的挖矿到底是挖什么矿? 比特币

基于top500.org的对数图,y轴为每秒浮点计算量(单位Gf/s)。红线代表最快超级计算机的速度,黄线代表TOP500上第500台电脑的速度,深蓝色线代表TOP500上所有电脑速度之和。请注意,Y 轴是对数刻度。数据来自维基百科。

(因为挖矿是个大话题,里面有很多有趣的内容,考虑到篇幅限制,分几期讲)

注意:

段落是这样的:

麻将其实是最早的区块链项目:

比特币全网算力_比特币全网算力k线图_比特币算力总和

(1)四个矿工一组,先碰撞13个矿工的正确哈希值,即可获得记账权并获得奖励。

(2)不可篡改。因为说服其他三个人需要太多的算力和体力。

(3)典型的价值互联网。我口袋里的价值不到八圈就进入他们的口袋。

(4)去中心化,人人可壮,完全点对点。

比特币网络的节点并不都是矿工。事实上,大部分节点不参与比特币网络的验证工作,比如钱包节点,称为轻节点。它并不总是在线,它只关心验证自己的地址和交易。参与挖矿的节点称为矿工。

除了工作量证明之外,还有另一种权益证明,它是基于对某种数字加密货币的所有权,也是按所有权时间计算的,有点类似于股权。这种方法目前被普遍接受并与工作量证明一起应用。以后我们会专门讲权益证明的原理和应用。

这个方案后来没有实际应用,用其他方法处理垃圾邮件。

这一段其实出自《比特币与数字加密货币技术》,不过我重新- 只是改写了一些话。

其实,主持人会告诉她猜测是大还是小。相对而言,缩小了下一次猜测的范围。我在这里改变了游戏规则。

我查了网上资料,有人说天河二号的哈希算力是400Th/s,但我没有用。不过我的理解可能有误比特币算力总和,如有错误请指正。

由于微信个人订阅号的环境非常封闭,这几天建立了个人博客网站(geekszone.info)。未来,文章将在两个地方发表。朋友们可以根据自己的喜好选择方便的阅读方式。 Blog 提供消息功能,微信已明确。

 漫谈区块链——比特币里的挖矿到底是挖什么矿? 比特币