1. 小白如何秒懂区块链中的哈希计算
小白如何秒懂区块链中的哈希计算
当我在区块链的学习过程中,发现有一个词像幽灵一样反复出现,“哈希”,英文写作“HASH”。
那位说“拉稀”同学你给我出去!!
这个“哈希”据说是来源于密码学的一个函数,尝试搜一搜,论文出来一堆一堆的,不是横式就是竖式,不是表格就是图片,还有一堆看不懂得xyzabc。大哥,我就是想了解一下区块链的基础知识,给我弄那么难干啥呀?!我最长的密码就是123456,复杂一点的就是654321,最复杂的时候在最后加个a,你给我写的那么复杂明显感觉脑力被榨干,仅有的脑细胞成批成批的死亡!为了让和我一样的小白同学了解这点,我就勉为其难,努力用傻瓜式的语言讲解一下哈希计算,不求最准确但求最简单最易懂。下面我们开始:
# 一、什么是哈希算法
## 1、定义:哈希算法是将任意长度的字符串变换为固定长度的字符串。
从这里可以看出,可以理解为给**“哈希运算”输入一串数字,它会输出一串数字**。
如果我们自己定义 “增一算法”,那么输入1,就输出2;输入100就输出101。
如果我我们自己定义“变大写算法”,那么输入“abc”输出“ABC”。
呵呵,先别打我啊!这确实就只是一个函数的概念。
## 2、特点:
这个哈希算法和我的“增一算法”和“变大写算法”相比有什么特点呢?
1)**确定性,算得快**:咋算结果都一样,算起来效率高。
2)**不可逆**:就是知道输出推不出输入的值。
3)**结果不可测**:就是输入变一点,结果天翻地覆毫无规律。
总之,这个哈希运算就是个黑箱,是加密的好帮手!你说“11111”,它给你加密成“”,你说“11112”它给你弄成“”。反正输入和输出一个天上一个地下,即使输入相关但两个输出毫不相关。
# 二、哈希运算在区块链中的使用
## 1、数据加密
**交易数据是通过哈希运算进行加密,并把相应的哈希值写入区块头**。如下图所示,一个区块头包含了上一个区块的hash值,还包含下一个区块的hash值。
1)、**识别区块数据是否被篡改**:区块链的哈希值能够唯一而精准地标识一个区块,区块链中任意节点通过简单的哈希计算都可以获得这个区块的哈希值,计算出的哈希值没有变化也就意味着区块链中的信息没有被篡改。
2)、**把各个区块串联成区块链**:每个区块都包含上一个区块的哈希值和下一个区块的值,就相当于通过上一个区块的哈希值挂钩到上一个区块尾,通过下一个区块的哈希值挂钩到下一个区块链的头,就自然而然形成一个链式结构的区块链。
## 2、加密交易地址及哈希
在上图的区块头中,有一个Merkle root(默克尔根)的哈希值,它是用来做什么的呢?
首先了解啥叫Merkle root? 它就是个二叉树结构的根。啥叫二叉树?啥叫根?看看下面的图就知道了。一分二,二分四,四分八可以一直分下去就叫二叉树。根就是最上面的节点就叫 根。
这个根的数据是怎么来的呢?是把一个区块中的每笔交易的哈希值得出后,再两两哈希值再哈希,再哈希,再哈希,直到最顶层的数值。
这么哈希了半天,搞什么事情?有啥作用呢?
1)、**快速定位每笔交易**:由于交易在存储上是线性存储,定位到某笔交易会需要遍历,效率低时间慢,通过这样的二叉树可以快速定位到想要找的交易。
举个不恰当的例子:怎么找到0-100之间的一个任意整数?(假设答案是88)那比较好的一个方法就是问:1、比50大还是小?2、比75大还是小?3、比88大还是小? 仅仅通过几个问题就可以快速定位到答案。
2)、**核实交易数据是否被篡改**:从交易到每个二叉树的哈希值,有任何一个数字有变化都会导致Merkle root值的变化。同时,如果有错误发生的情况,也可以快速定位错误的地方。
## 3、挖矿
在我们的区块头中有个参数叫**随机数Nonce,寻找这个随机数的过程就叫做“挖矿”**!网络上任何一台机器只要找到一个合适的数字填到自己的这个区块的Nonce位置,使得区块头这6个字段(80个字节)的数据的哈希值的哈希值以18个以上的0开头,谁就找到了“挖到了那个金子”!既然我们没有办法事先写好一个满足18个0的数字然后反推Nounce,唯一的做法就是从0开始一个一个的尝试,看结果是不是满足要求,不满足就再试下一个,直到找到。
找这个数字是弄啥呢?做这个有什么作用呢?
1)、**公平的找到计算能力最强的计算机**:这个有点像我这里有个沙子,再告诉你它也那一个沙滩的中的一粒相同,你把相同的那粒找出来一样。那可行的办法就是把每一粒都拿起来都比较一下!那么比较速度最快的那个人是最有可能先早到那个沙子。这就是所谓的“工作量证明pow”,你先找到这个沙子,我就认为你比较的次数最多,干的工作最多。
2)、**动态调整难度**:比特币为了保证10分钟出一个区块,就会每2016个块(2周)的时间计算一下找到这个nonce数字的难度,如果这2016个块平均时间低于10分钟则调高难度,如高于十分钟则调低难度。这样,不管全网的挖矿算力是怎么变化,都可以保证10分钟的算出这个随机数nonce。
# 三、哈希运算有哪些?
说了这么多哈希运算,好像哈希运算就是一种似的,其实不是!作为密码学中的哈希运算在不断的发展中衍生出很多流派。我看了”满头包”还是觉得内在机理也太复杂了,暂时罗列如下,小白们有印象知道是怎么回事就好。
从下表中也可以看得出,哈希运算也在不断的发展中,有着各种各样的算法,各种不同的应用也在灵活应用着单个或者多个算法。比特币系统中,哈希运算基本都是使用的SHA256算法,而莱特币是使用SCRYPT算法,夸克币(Quark)达世币(DASH)是把很多算法一层层串联上使用,Heavycoin(HAV)却又是把一下算法并联起来,各取部分混起来使用。以太坊的POW阶段使用ETHASH算法,ZCASH使用EQUIHASH。
需要说明的是,哈希运算的各种算法都是在不断升级完善中,而各种币种使用的算法也并非一成不变,也在不断地优化中。
**总结**:哈希运算在区块链的各个项目中都有着广泛的应用,我们以比特币为例就能看到在**数据加密、交易数据定位、挖矿等等各个方面都有着极其重要的作用**。而哈希运算作为加密学的一门方向不断的发展和延伸,身为普通小白的我们,想理解区块链的一些基础概念,了解到这个层面也已经足够。
2. 每个月能挖出500元比特币的电脑(2021年)哈希值是多少,一般什么样的显卡能做到
目前比特币全网算力达到236万万亿次哈希碰撞每秒,相当于20多万个50米长的标准游泳池里面水滴的数目。但即便是这么大的算力,也需要10分钟左右才能碰撞到一个符合要求的哈希值。
2012年比特币进行了第一次产量减半,2016年7月,比特币进行了第二次产量减半,目前记一页账本获得的奖励是12.5个比特币。下一次减半会发生在2020年左右,而到2040年比特币总数不会再增加,总量是2100万枚。也就是说,挖比特币的难度在递增,而需要的时间在增加。
3. 算力是什么 关于算力的介绍
1、算力(也称哈希率)是比特币网络处理能力的度量单位。即为明茄计算机(CPU)计算哈希函数输出的速度。比特币网络必须为了安全目的而进行密集的数学和加密相关操作。 例如,当网络达到10Th/s的哈希率时,意味着它可以每秒进行10万亿次计算。
2、在通过备槐汪“挖矿”得到比特币的过程中,我们需要找到其相应的解m,而对于任何一个六十四位的哈希值,要找到其解m,都没有固定算法,只能靠计算仿仔机随机的hash碰撞,而一个挖矿机每秒钟能做多少次hash碰撞,就是其“算力”的代表,单位写成hash/s,这就是所谓工作量证明机制POW(Proof Of Work)。
4. 1th等于多少mh
比特币1T算力是一种衡量算力的单位,算力每隔千位划为一个单位,最小肢裤单位H=1次、1000H=1K、1000K=1M、1000M=1G、1000G=1T、1000T=1P、旁历1000P=1E。
算力(也称哈希率)是数字货币网络处理能力历启简的度量单位。即为计算机(CPU)计算哈希函数输出的速度。区块链网络必须为了安全目的而进行密集的数学和加密相关操作。例如,当网络达到10Th/s的哈希率时,意味着它可以每秒进行10万亿次计算。
5. 即使美国也“杀不死”比特币
这篇文章的题目只是为了“报复”。
报复,3年前,美国的彭博社发的一篇《即使中国也杀不死比特币》(Even China Can't Kill Bitcoin) 。那篇文章,把中国政府2017年规范金融市场、关闭加密货币交易的行为,看成是中国政府要“杀死”比特币;把中国与土耳其、委内瑞拉、俄罗斯相提并论,一道列为对比特币不友好的国家。但是,不友好与“杀死”是有天壤之别的,为什么要用“杀”(kill)这种字眼呢?
2017年2月24日,彭博社《即使中国也杀不死比特币》网络截图
很显然,这是在夸大其词。所以,为了表达中国民间的不满,我要用“即使美国也杀不死比特币”做标题,来进行报复。
上一篇《比特币“泡沫”11年不破的秘密!》,通过最新的学术研究,我们知道是因为比特币累积了足够的信任才走到今天的;我们还知道,这些 信任主要来自一种比特币的属性“不可更改”(immutability) 。一旦,比特币变得可以更改了,那么比特币也就完蛋了。也就是说,如果美国想杀死比特币,只需要杀死这个“属性”就够了。
问题一下子就变得简单了。因为,美国政府是有办法让比特币变得可以更改的,甚至完全不一样的;又因为,比特币有个重要前提:比特币区块链只认最长的那个区块链,谁挖出的链最长、又合法,谁就会成为合法的比特币。所以,如果, 美国政府,只要汇集足够的算力,生成了最长的比特币区块链,那么,美国政府也就完全控制了比特币,从而将比特币玩弄于股掌之间,让比特币生不如死。 而且,在控制了记账权后,美国政府 不但可以获得所有的区块奖励,而且还可以决定哪一笔交易记入区块链,哪一笔不记入 。
现在你知道了,美国政府要想控制比特币,唯一要做的就是——通过算力竞赛获得记账权。你可能再想,算力竞赛比的是什么呢?比较复杂,一句话、两句话说不清楚。你就当那个比赛,是地球上最公平的 游戏 ,大家机会均等,唯一比拼的,也就是算力,谁的算力大,谁就能赢,不会有例外。
当然,开展行动之前,美国政府会首先了解的是比特币全网当前的算力,到底有多大?
为了便于理解下面的内容,需要先讲一下什么是算力。算力,是用计算机每秒可以运算SHA256哈希函数的次数来表达的,英文是hashrate。当前的最大单位是EH/s,表示1*10^18,1后面有18个0。
2016年2月2日,比特币的全网算力,也就是所有矿池的运算能力加起来,达到了1EH/s,此后一直处于增长过程中。
这样的算力到底有多强大呢?在2017年的时候,有人将比特币的算力与全球前100的超级计算机进行了比较。答案是: 100台超级计算机的算力都达不到比特币网络算力的十万分之一 。 不过,你千万不要以为,我们可以不要超级计算机了,有矿机就可以了。因为,矿机是专门用于SHA-256运算的,是专门设计的专用计算机,只可以用来挖矿,其他的什么也干不了。而超级计算机是通用计算机,可以干各种事情。请记住SHA-256,它在比特币中的地位非同小可,后面我们专门讲。
2017年6月比特币网络与Top100台超级计算机算力比较
你也许会想,现在5年过去了,这样的状况是否会有所改变呢?很遗憾,没有。
超级计算机的算力,与比特币全网的算力之间的差距,不是缩小了,而是还在加大。2017年6月,最快的超级计算机的峰值浮点运算次数是125,435.9TFlop/s ;2019年11月,最快的是IBM的Summit,它的理论峰值是200,794.9TFlop/s ,增长2倍都不到。而比特币网络,2017年6月的时候,算力只有5EH/s;2019年11月达到90EH/s,其算力一下子增加了18倍。
SUMMIT,排名第一的超级计算机,理论峰值200,795 TFlop/s
你可能也注意到了,这里的单位不一样。一个是TFlop/s ,一个是 EH/s。他们之间存在一种换算关系。一次hash运算,需要12700次浮点运算。换算过程是这样的,一次哈希计算需要6350次的整点运算,一次整点运算相当于2次浮点运算,6350 乘以 2 等于 12700。 关于Hash运算,是算力竞赛找到正确答案的手段。你可以理解为,这是一种比较复杂的计算过程,详细的后面会专门讲。
2020年10月12日,比特币全网的算力已经达到了140EH/s。从2016年2月达到1EH/s,4年多的时间,比特币全网的算力居然增加了140倍。
2020年10月12日比特币全网算力140EH/s
看了上面这些,你还在想用家用电脑挖矿吗?我劝你彻底打消这样的念头。因为,理论上公平的事情,由于算力的悬殊,已经变成实际的不可能了。但是,美国政府不一样,有的是钱,实在不行就发债。140Eh/s的算力,对于美国政府来说,可能真不是什么大事。
我们来帮美国政府计算一下,要想实现140EH/s的算力,需要多少钱?下面这张图片 ,是比特大陆宣传所说的,当前全网最强的矿机,已经卖光了。其算力达到了110TH/s,价格是2万多一点。
蚂蚁矿机S19 Pro110T
我们先把比特币的全网算力——140EH/s——换算一下单位,也就是在后面加6个0变成TH/s——140,000,000TH/s。美国要想实现这样的算力,需要1272728台这种S19 Pro蚂蚁矿机,人民币25,874,560,240元,约259亿人民币,40亿美元不到。电费、厂房及其他散热设施所需要的费用暂时先不算。因为,比特币挖出来后,还可以换成钱,经济上问题不大。
不过让人奇怪的是,比特币社区对此好像并不紧张。而且,还有一个网站 ,专门把重新生成整个比特币区块链所需要的时间实时公布了。据他们估算,2020年12月8日早上7:20,谁拥有比特币全网的算力, 只需要552.65天就可以把比特币区块链重新生成一次 。另外一个加密货币,BCH,用的时间更短,只需要32.67天。看来,美国政府杀死比特币的可能性正在加大,而且不用500多天,增加矿机的数量就可以了。这样,让杀死比特币的时间,会变得尽可能的短。
实时重写比特币、BCH区块链所需天数
那么,现在,美国政府在有了足够的算力之后,是否就可以杀死区块链了呢?
答案是:不可能。
因为有 “假定有效块”( AssumeValid ), 这是比特币核心(Bitcoin Core)软件里面的一个默认参数。
AssumeValid参数有两个作用,第一个就是可以减少验证开销;另一个好处是,这个参数就像定海神针一样告诉所有人,所有这个块前面的区块,包括这个区块是可靠的,你们的账户上的比特币是安全的。
这个参数是从0.14版本的时候开始有的,以后每次主要版本更新的时候,这个参数会被默认设置成几个月前的、已经确认的有效块。
现在的比特币核心是0.21.0版本,2020年6月3日发布的 。在这个版本的源代码中,已经更新了AssumeValid参数:
Bitcoin core 0.21 版本更新AssumeValid默认参数的截图
上面一行,有“-”号的,是被替换掉的以前的程序代码。,这个字符串代表的是写在比特币软件里的一个区块的hash,这个区块2019年10月1日18点46分生成的,区块的高度是597379。
下面那个有“+”号的,代表的是在代码里增加的程序代码,主要改变的是新的AssumeValid参数。,所代表的623950这个区块,是2020年4月2日2点13分。
被Bitcoin core 0.20替换掉的默认AssumeValid参数所代表的区块截图。
Bitcoin core 0.20软件里面最新的默认AssumeValid参数所代表的区块截图。
也就是说,因为AssumeValid参数的存在。美国政府把比特币区块链重新算一遍也没有用,它最多可以对AssumeValid参数后面的区块产生影响。
我们来算算算看,如果美国从参数后面开始做最长的区块链,是否有足够的利益?
先算一下到目前为止的数据,从2020年4月2日零点到2020年12月12日零点,一共有365810分钟。 比特币区块链,平均10分钟产生一个区块,每个区块的比特币奖励从50开始,已经经历了3次减半,现在是6.25个比特币,比特币的价格我们按照2万美元一个计算。
365810 10 6.25 20000 = 45.72625亿美元
正好,到目前为止所产生的比特币差不多价值45亿美元。应该说,还是很划算的,不管怎么说,没有亏。而且,未来还有很多比特币可以赚啊。且慢,即使只是从AssumeValid后面的区块开始,即使有利可图,美国最终还是不能杀死比特币。
关键还是AssumeValid参数。刚才说了,这个参数的 默认值是新的主要版本发布的时候设定的 。它也完全可以不是默认值,当比特币社区发现美国想杀死比特币的企图时,会通知大家出现的问题,让大家设置成新的参数。只要,大家把参数一改,就会让美国的那个最长的链,因为没有人认可而失效。那条最长的链,就会只剩下美国一个矿工在记账,自娱自乐。
就是这样简单,一个参数,就阻止了美国企图通过算力杀死比特币的阴谋。结论很简单,即使是美国也杀不死比特币。
AssumeValid参数,只是比特币11年成长的缩影。比特币核心软件的版本,已经进行了21次重大更新,小修小补更是不计其数。11年来,不只是比特币的价格在涨,比特币社区的能力也在不断提高。
最后,请允许我解释一下,这篇文章与《即使中国也杀不死比特币》不同,只是假设。实际上美国政府对比特币的态度,是相当的友好,其友好程度不是第一、也有第二。当然,也有更合适的国家可以拿来举例,但是我不敢。你懂的。
拿美国来举例,还有另一种考虑。因为,美国——现在是地球上最强大的国家,如果它都杀不死比特币了,那么其他的国家、组织、机构也就更没有这个可能了。那样的话,比特币也就可以高枕无忧了。但是,我还是要反复、再次,不厌其烦地提醒你,这一切并不能构成你——现在——就买比特币的理由,请切记。详细的原因,请看以前的文章:《小心!别上当!比特币从来没有牛市!》,很重要。
简单说,这篇文章写到这里的时候,是2020年12月12日凌晨,比特币的价格是18486美元。3年前,2017年12月17日,比特币价格开始从 历史 高点19000多美元回落,直到现在又重新站回了 历史 高点附近。我是想通过 历史 数据告诉你,比特币,还是很有可能再次跌倒1万美元以下的。波动性是比特币的天然属性,所以,你应该等等看。
实际上,你和我都相信,美国政府是不可能干这种事情的。这样的预算,首先就不会在国会通过。但是,我们的假定还是有价值的,这至少可以让更多的人丢掉幻想,让更多的人安心入眠。
还记得开头提到的《即使中国杀不死比特币》,那篇彭博社的文章吗?我真心希望你能亲自看到那篇文章 ,可惜的是,你看不到。里面有句话,非常好,借用一下,作为结尾。
如果你想废除一种人们喜欢的东西,它就会在其他地方冒出来!( If you try to abolish something people like, it just pops up somewhere else. )
(待续,这是专题“比特币还能走多远”的第八篇)
6. 5690xt挖矿算力工耗
80 MH/s 左右.
80MH/s 是没有超频的原厂性能,功耗在 300W 左右。3080 在超频和70% 的功率限制下清基胡,哈希算力会在 87MH/s 左右,功耗为锋坦 225W。
所谓的挖矿,其实就是用计算机不断地解决一系列的复杂密码,来保证比特币网络分布记答拦账系统的一致性,整个求解并验证的过程就叫做挖矿,协助破解数字答案的设备就称为矿机。而我们其实可以把算力理解为通过计算机挖掘比特币的能力,你的算力越多产出的币就越多。在通过挖矿得到数字货币的过程中,一个节点每秒中能做多少次算力,就是其算力的代表。