美文网首页【写作时间】成果专栏
《精通比特币》-挖矿浅析

《精通比特币》-挖矿浅析

作者: 程序员在深圳 | 来源:发表于2017-10-01 00:44 被阅读480次

    今天我们再来谈一下挖矿。对于挖矿,有个很好的类比:

    挖矿就像很多人一起来玩一个大型的数独游戏,最先完成的那个人获胜,一旦有人获胜,游戏会重新开始,参与游戏的人数越多,游戏就越难,人数越少,游戏就越简单,通过这种动态调整来确保每10分钟开展一轮游戏。

    比特币的安全性从何而来

    矿工在比特币网络中扮演两个角色

    1. 他们为整个p2p网络提供了安全性的保证
    2. 他们产生新的比特币

    比特币网络中的算力非常巨大,所以矿工获得胜利是一个随机事件,同时这个随机概率非常之小,这就让想恶意篡改数据的人很难“下手”,第二个,胜利的矿工需要验证每一笔交易,这就确保了每个人账上的比特币不会减少。有人可能会问,如果这个矿工自己篡改数据,然后再“谎报军情”怎么办?没关系,他验证完了,其他的节点还要再验证一遍他的结果,给最终的结果再加一层保险。验证涉及到的计算量也相当巨大。

    所以比特币中的信任建立在计算的行为之上。

    矿工的工作非常“辛苦”,所以这个获胜的矿工才会得到丰厚的奖励,奖励分两部分,一是新产生的比特币,二是每笔交易中的手续费,产生新币的过程就像中央银行在发行货币,结合安全性来考虑,

    挖矿这种设计让比特币无需中央授权,却仍然具备极高的安全性。

    在读书的过程中,我脑子里突然冒出了一个问题:都说是解决一个数学难题,但这个难题是谁出的呢?是不是出题的这个节点,也和大家一样,对这个题一无所知呢?这个问题先放在这里,我想书的后面一定会给出解答。

    挖矿的演变

    不知道多少人真的动手挖过矿,上周末我在家里体验了一番,作为一名“新矿工”,其实我还是有很多疑问的,因为真实的挖矿和理论上的挖矿有很大的差距,主要差距来源于现在挖矿不需要你拥有一个全节点了,你只需要下载一个提供算力的挖矿程序,填好你的地址,连接一个矿池就可以了,而看了前面文章的同学都知道,矿工是需要运行一个全节点的,这让我很上脑经,因为我不能一下算出是加入矿池收益高,还是自己做全节点收益高。

    后面仔细想了下,矿池是有它存在的价值的,毕竟现在挖矿难度越来越高,而要想在其中胜出,就像是中彩票一样困难,同时挖矿是要消耗成本的,所以为了能让大家有一个稳定的收入,矿池会把大家的算力收集起来,一旦矿池通过这些算力赢得胜利,最终的奖励是根据每个人提供算力的比例平分的,即只要你的算力是稳定的,你的收入就是稳定的,当然矿池提供了这样的服务,他理所当然要收取一定的手续费。由于这种模式的普及,我们甚至可以把比特币网络按照矿池来划分,如下图

    书中说的挖矿是最初的情况,随着时间的发展,挖矿行业也在不断演进,比特币挖矿方式最初是CPU挖矿,然后是高端显卡(GPU)提供算力挖矿,接着就是现在的ASIC矿机(application-specific integrated circuits)

    交易的确认

    交易要写到block中,也是需要胜利的矿工来完成,其实这个说法还不全面,因为对于整个网络的全节点来说,除了胜利的矿工要创建这个新block,其他的矿工也要做同样的事情,这样才能保证每个节点的数据是一致的,所以真正的过程是,在数学题做出来之前,每个节点都维护了一个一致的临时block,一旦有人获胜,且他完成了验证后,同时他的成果被其他人验证后,临时block会加入到正式blockchain中,然后大家会马上展开下一个block的竞争。

    在传输比特币的过程中,我们经常会看到一笔交易被确认n次的数字,这个确认数怎么理解,下面我们就来谈一下这个话题,要理解确认数,就需要先引入两个其他的概念

    1. 区块深度(Block Depth)
    2. 区块高度(Block Height)

    先看一下这张图:

    区块深度和区块高度都是基于某一笔交易而言,我们先来看区块高度,区块高度很像计算机中数组的索引,索引从0开始计数,即第一个被创建的区块——创世纪区块(genesis block),所以,在创世纪区块中的交易,它们的区块高度为0。而在图中,Alice的交易的区块高度为277316,它是第277317个区块。

    一笔交易被写入区块后,它就被确认了1次,接着一个新的区块被写入,压在了刚才那个区块的上方,那么刚才那笔交易就被确认了2次,以此类推,某个交易的区块之后的区块数被称为交易深度,用公式来表示,如下

    确认次数 = 区块深度 + 1

    那么上图中Alice的交易被确认了3次。

    你可能会问,交易确认次数有什么作用?因为每加入一个区块,就等同于加入了一定的计算量,随着block的增加,修改某一条交易的难度会呈指数级别的增长,一般来说,6个以上的确认就被视为不可能被改变的交易了。

    总结

    今天我们全面的描述了挖矿在比特币中的地位,是不是比以前的认识更深了呢,但学的越多,却发现还有更多细节需要去探索,不用急,这是迟早的事情,反正我们有耐心。

    相关文章

      网友评论

      本文标题:《精通比特币》-挖矿浅析

      本文链接:https://www.haomeiwen.com/subject/snunextx.html