比特币挖矿一定要用计算机嚒?我们为什么不能用纸和笔来计算呢?
比特币其实是一个毫无用处的一串数字,但是被大家公认为有用,它就像钻石、古董、字画、游戏皮肤等被赋予了价值。既不能吃,也不能用,但我们还是会认可它们的价值。
比特币是一种虚拟货币,基于区块链技术,区块链是一个人人都可以参与数据处理的数据库。通俗一些讲比特币系统就是一个大型的记账本,它不需要一个具体的地方去记录某个账户下有多少余额,只要知道所有账户之间的转账记录,就可以推算出某个账户下有多少余额。
举个例子:
A、B、C账户初始值分别为50、0、0
转账记录:
A转给B:10
B转给C:5
C转给A:2
B转给A:3
这时,就可以计算出A、B、C的余额分别为:
A:50-10+2+3=45
B:0+10-5-3=2
C:0+5-2=3
A转账给B时,A不光要自己记账,还要把这个账单广播给区块链上的所有人。
“挖矿”的过程实际上就是一个账单数据记录的过程,每隔10分钟左右就需要矿工将之前没有经过大家确认的交易数据收集起来进行处理。
但问题就来了,矿工那么多,到底用谁处理的数据?
系统就有了一个特殊的机制,所有参与的矿工把数据打包的时候必须加入一个叫做“哈希值”的东西,系统才会认可你处理的数据。
挖矿其实就是找Nonce随机数,通过生成区块头部的随机数来调整每次哈希的结果,使得计算出来的区块的哈希值符合一个特定的标准。
谁能最先完成这件事,并把自己的工作成果广播给其他的矿工确认,全网其他节点核对该区块记账的正确性,且大部分认为没问题,谁就能获得记录数据的权利,以及很多的比特币作为奖励。
最开始的时间,每次奖励50个比特币,每过4年时间奖励减半:
2009-2012年,每次奖励50btc;
2013-2016年,每次奖励25btc;
2017-2020年,每次奖励12.5btc;
按照这样的规划,到2140年左右,奖励会变为0,比特币总量约2100万个。
其实,矿工挖矿不仅仅是为了比特币,是维护整个区块链网络的重要环节:挖矿的人越多,参与数据确认的人也就越多,区块数据也就越安全。
比特币的区块哈希算法
比特币挖矿的算法,是对区块头做两次sha256哈希运算,得到的结果如果小于区块中规定的难度目标,即挖矿成功。
挖矿节点一旦筛选好交易数据,按照时间顺序,两两哈希,层层约减,就可以计算出一颗Merkle树,可以确定一个唯一的摘要,这就是Merkle树的根。Merkle树中,任何节点的变化,都会导致Merkle树的根发生变化,通过这个值,可以用来验证区块中的交易数据是否被改动过。
区块头是80字节,平均每个交易至少250字节,平均每个区块包含2000个交易。区块哈希值实际上并不包含在区块的数据结构里,区块打包时只有区块头被用于计算哈希。
交易数据都通过Merkle树固定了下来,不需要再包含进来。所以区块链是通过区块头链接在一起的。
随机数可以变化,而且要从0试到2的32次方。直到最后出现的hash结果其数字低于难度目标值。比如猜出来的值输入后得到hash值前面40个都是零,而要求是前面35个0,那么肯定符合要求。
在挖矿时,随机数是未知的,要从0试到2的32次方,就是4294967296种可能性。以现在的一台矿机的算力,全部算完也不需要一秒,所以还需要改变区块内部的创币交易中的附带消息,这样就让Merkle根发生了变化,从而有更多的可能去找符合要求的随机数。
挖矿中,第一笔交易是创币交易。创币交易可以附带一段文字消息,这段消息可以用来提供更多符合要求的随机数。比如中本聪在挖出创世区块时植入的信息:
The Times 03/Jan/2009 Chancellor on brink of second bailout for banks
综上所述
比特币是不可能用纸和笔计算出来。一个区块计算出来,使用普通的电脑,需要26年。一台比特大陆生产的S17(功率1470W)算力50TH/s,不间断运行挖比特币一个月可以获得0.03个比特币,挖一个比特币则需要33个月。S17运行一小时耗电量约为1.47度电,一天就需要耗电35.28度电,那么挖一个比特币就需要34927.2度电。
“挖矿”仅仅只是让更多的人参与进区块链网络的建设中来,这么多的电费用来“计算”一串虚拟的数值这样真的好吗?
比特币并不是一个保值的东西,价格浮动较大,炒比特币可能一夜暴富,也可能一夜变成穷光蛋。比特币也并非宣称那样安全,2014年全球最大的比特币交易网站MtGox被黑客入侵导致破产,价值4.67亿美元的比特币瞬间蒸发。犯罪分子用它来洗钱、逃税等等,政府想去调查也是相当困难的一件事。
以上个人浅见,欢迎批评指正。
认同我的看法,请点个赞再走,感谢!
喜欢我的,请关注我,再次感谢!