挖坑填坑系列之挖矿

2019-01-28  本文已影响26人  sydneywhatever

本文试图回答以下问题:区块链为什么要挖矿?在挖什么,怎么挖?


先看下区块链浏览器,可以看到,区块是一个个叠加起来的,平均每十分钟出一个块。

点某个区块的序号,可以看到里面包含了多笔交易,当前区块以及前后区块的哈希值,后一个块的值是后来补的,出块的时候没有的。

再往下第一笔交易是出块奖励,包括12.5的新币和0.27x的交易费。

再往下看单笔交易,有交易ID,输入、输出、交易费构成。

点击 输入,能追溯到这笔输入是哪笔交易的输出,一层层追溯上去,能找到当前的花的钱是哪个区块的出块奖励。

挖矿奖励,由两部分组成,一个是新币奖励,另一个是这个区块包含的所有交易的交易费。

挖矿不仅仅是记账验证交易,还是发行比特币的过程。

比特币总量是2100万枚,但不是一开始全部发行的,每出一个区块发行一笔比特币,2009年一个块50个币,每四年(每隔 210,000 个块)减半,目前是12.5个币。

出块获得比特币的过程,类似于贵重金属的挖矿过程,越挖越少,所以叫做挖矿。谁挖出这个区块,谁就获得这笔新发行的比特币,以及被打包交易的交易费。

比特币现在的价格是2w多人民币,高点的时候这个单位是美元,平均每十分钟2w多,这得抢啊,怎么抢呢,所有参与挖矿的计算机一起来做数学题,谁先做出来奖励归谁。

什么样的题呢?不是有前一个区块的哈希值么,再加点别的值(这里省略掉),就当只需要前一个区块的哈希值,再加上一个随机数,组成一个新的字符串。这个新字符串用SHA256运算一下,会得到另一个256位的二进制数。

•SHA256(前一个区块的哈希值等+随机数)=新256位数字

• 求解随机数

•要求新256位数字前N位为0

•N变动,以保证平均10分钟出一个块

比如N是72,需要做2的72次方(4722366482869645213696)次SHA256运算才会找到这个值,也有可能比较幸运地没做完就能匹配上。

刚开始挖矿没有这么难,普通笔记本都能挖,所以那会有程序员用1w个比特币换了2个披萨。

现在需要专业的矿机,并且集中大量的算力,才有可能挖到币。

价值2个亿的披萨

通过挖矿机制,将交易打包成区块,串成一条能够追本溯源的链,解决了去中心化的信任问题。

有没有可能出现两个节点同时算出难题的情况,有的,那就同时出现2个块,比如在高度100后,同时出现2个高度为101的区块,如下图的红绿,由于传输延迟等影响,这两个区块各自被不同的节点所接受,网络中存在两拨节点沿着不同的区块往下挖,出现了分叉,不过这个分叉是临时的。

因为比特币网络有个规则是只认最长链,如果绿军首先挖出高度102的区块,会吸引更多的矿工加入绿军的行列,红色区块因为没有延续而作废,相应和交易和挖矿奖励都无效,矿工们又继续回到最长链工作。

上一篇下一篇

猜你喜欢

热点阅读