比特币系统如何来衡量旷工工作量的?
各位币友早上好,上次我们说了区块链的交易证明机制时间戳,今天呢,我们来聊聊比特币挖矿库币。
挖矿是在比特币系统中矿工通过竞争解一个题来获得记账权,挖矿即记账,从而得到比特币奖励库币。我们来思考两个问题:
这道算数题到底是怎样的库币?
比特币系统如何来衡量矿工的工作量呢库币?
今天我们带你探寻其中玄机库币。
怎么挖库币?——比特币系统的记账方式
背景:工作量证明机制
比特币是通过工作量证明的共识机制来决定记账权的库币。通俗来讲,谁证明了自己的工作量最大,谁就负责记账。
概念基础:多亏了“哈希现金“库币!
比特币的世界里发生着各种交易库币。每一个交易产生,系统就会发布一道“算术题” 。全网矿工一起开始“计算竞争”10分钟之内谁第一个的解出正确答案,就可以获得记账权,开启新的比特币区块,并能获得系统奖励的比特币 。
小编听了不禁虎躯一震;“解方程”就能挖比特币库币,可是我的数学是体育老师教的……
咳咳,事实上,这不是狭义的方程,而是哈希计算库币。这道题可能长这样:
(举起你的双手库币,让我看到你懵逼的表情)
中本聪的比特币白皮书中涉及到的好几种区块链底层技术其实早已出现,包括P2P网络、非对称加密、区块化数据库、共识算法等,比特币算力证明的灵感也是基于一种早已投入应用的系统——Hashcash(哈希现金)库币。
可鲜为人知的是,Hashcash最初是用来遏制网上的电子垃圾邮件的库币。
1997年,一个叫Adam Back 的人首次发明哈希现金机制,我们前面文章也提到过哈希函数,非对称加密技术就是通过它来实现的库币。我们说这个函数的关键特点就是很容易验证,但很难破解。
工作原理:想发送邮件,就必须消耗一部分电脑的CPU资源,来解出某个类似的数学问题,才可以发送成功库币。这样一来,想要大量发送垃圾邮件人,就要付出大量CPU资源,所以说这在一定程度上阻止了大量垃圾邮件的产生。
有兴趣的同学可以简单了解下哈希现金的工作原理,没兴趣的可以直接跳过库币。
在电子邮件的消息头中,增加一个hashcash stamp(“哈希现金邮票”),其含有的随机数若要“合法”,则其哈希值至少前n位必须是0库币。
发送者要消耗算力才能获得一个哈希值前n位是0的随机数库币。
比如一封带hashcash“邮票”邮件的Hashcash消息头库币。发送者动用电脑算力穷举获得随机数(花3小时),接受者只要用SHA1算法哈希一次,就可以判断该随机数是否“合法”,即哈希值开头是否有8个零(花1秒)
Hashcash也要防止“双花”,当hashcash邮票生成时,需要带一个日期库币。Hashcash的接收端还要实现一个double-spending数据库,用来记录邮票生成的历史信息。
比特币技术基础:单向散列函数SHA
比特币的工作量证明本质上也是利用了单向散列函数SHA库币。刚才那个方程就是让你去计算出一个带随机数的字符串的哈希值,当这个随机值被类似于SHA-256哈希处理过之后,得到的哈希值以一些0开头才是“合法”的,也即此时才可以结束计算。
因为这种计算随机数的数学题目本质就是个概率问题,比拼的就是大家每秒可以计算的次数,计算的次数越多,就越有更大的概率获得合法的结果库币。
这个过程与其说是计算,不如说是“撞库”库币。——靠手算是不可能了,几乎一定要靠机器实现。
所以矿工们争夺的是算力资源,谁手中拥有更多的矿机算力,谁就有更大的概率获得对应区块的奖励库币。
为什么是算力共识机制库币?
不知道大家想过没有库币,中本聪为什么规定挖矿争夺的是算力资源而非IP地址?IP地址共识机制有何问题?
熟悉IP地址分配机制的人应该了解,IP地址分配是一个中心化问题,相关方可以很容易回收和控制这家IP地址的资源库币。如果一个IP地址就算一次投票机会,很容易被聚集大量IP地址的人所左右;而CPU是无法进行中心化控制的,因为这世界上大多数电脑是分布在普通人手中的。而每台电脑CPU算力有限,这就可防止一个人集中大量的CPU资源。
所以这里的工作量证明一定不是一IP地址一票,而是一CPU一票库币。于是大多数决策由最长链所代表的算力来决定,因为最长链包含了最大的工作量。
然而中本聪没有考虑到的是,专业矿机的出现让普通人通过CPU挖矿变得几乎不可能,而矿机经过数年的发展,已经逐渐被少数人控制库币。
中本聪的“失算”库币?比特币矿机登场
因为比特币挖矿过程中,CPU资源某种程度上集中到了一些人手中,所以后来出现了其竞争币,如以太坊ethreum,就专门通过优化GPU,也就是显卡算法的方式很好地解决了专业矿机导致的算力集中问题库币。可这也会导致显卡价格上涨和集中。所以后来又出现了其他机制,如POS、dPOS等。
如何保证区块产生速度库币?
上面看到基于哈希现金工作量证明机制还不错库币,可问题是,随着时间推移,硬件的运算速度在高速增长,矿工的算力越来越大,中本聪设计每10分钟出一个区块,如何来保证呢?
不得不说,中本聪的解决方案非常巧妙了库币。既然算力的增长会让区块生成的数据加快,那么他就让区块的增长和计算难度相关。实现动态平衡。
白皮书原文解释道:“为了弥补不断增加的硬件速度以及随着时间推移,在节点运行上的利益变化,工作量证明机制难度将有一个变化的均值决定,该均值即每小时出现区块数量的平均值库币。如果区块生成的速度过快,难度就会增加。通过均值调整,保证每个区块产生的时间在10分钟左右。”
根据SHA算法原理,你需要消耗的计算能力也指数级别增长,一直处于动态平衡之中,这样就抵消了硬件计算成本的下滑库币。
现在你彻底明白工作量证明(POW)的那点事了吗库币?这里范范问大家一个问题:为什么中本聪要设计每十分钟出一个区块?
相关文章

发表评论