《区块链开发指南》一一2.3 挖矿算法解析

简介:

本节书摘来自华章计算机《区块链开发指南》一书中的第2章,第2.3节,作者:申屠青春 主编 宋 波 张 鹏 汪晓明 季宙栋 左川民 编著更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.3 挖矿算法解析

2.3.1 PoW挖矿算法及分析
PoW(Proof of Work),即工作证明。也就是说,你获得多少货币,取决于你挖矿贡献的有效工作,比如,你的电脑性能越好,分给你的矿就会越多,即根据你的工作证明来执行货币的分配。大部分的虚拟货币,比如比特币、莱特币等,都是基于PoW模式的虚拟货币(算力越高、挖矿时间越长,你获得的货币就会越多)。
第1章已经说过挖矿算法其实就是通过一个Hash函数找到一个满足当前难度的Nonce(包含在区块头里面)的值,Hash函数输入数据的长度是任意的,将产生一个固定且绝不雷同的值,可将其视为输出的数字指纹。对于特定输入,Hash的结果每次都不一样,任何实现相同Hash函数的人都可以计算和验证。加密Hash函数的主要特征就是不同的输入几乎不可能出现相同的数字指纹。因此,相对于随机的选择输入,有意地选择输入去找一个特定的Hash值,这几乎是不可能的,否则就破解了所使用的Hash算法,如SHA-256等。
矿工用一些交易来构建候选区块,他会计算这个区块头Hash的值,看其是否小于当前目标值,如果这个值小于目标值,矿工就会修改这个Nonce的值,然后再试一次。通常来说一个矿工会做成千上万次Hash运算,从而得到一个合适的Nonce的值,使得区块头Hash满足当前难度。这也是PoW(工作量证明)算法的由来。
PoW要求出示一定的证明表明工作量,证明可以是直接记录也可以通过概率表示,其中对于由小概率事件累计而成的工作,出示结果等同于证明了工作量(因为不太可能直接得到小概率结果)。在比特币和其他类比特币的系统中,PoW系统是以合乎要求的Hash作为工作结果的。由于矿工需要一定量的计算才能取得合法的计算结果,因此得到合法的计算结果就可以证明完成了一定量的计算。
2.3.2 PoS股权证明算法及分析
PoS(Proof of Stake),即股权证明。它又是什么意思呢?简单来说,它是根据你持有货币的量和时间,给你发利息的一个制度。在股权证明模式下,有一个名词叫币龄,每个币每天产生1币龄,例如你持有100个币,总共持有了30天,那么,此时你的币龄就为3000,这个时候,如果你发现了一个PoS区块,你的币龄就会被清空为0。你每被清空365币龄,你将会从区块中获得0.05个币的利息(可以理解为年利率5%),那么在这个案例中,利息= 3000×5%/365 = 0.41个币。
以现有的比特币运行发展情况来看,比特币每年的挖矿产量都在不断减半,我们可以预计,随着比特币产量的不断降低,矿工人数也会越来越少,这样就会导致整个比特币网络的稳定性出现问题。PoS的解决方案是鼓励大家都去打开钱包客户端程序,因为只有这样才可以发现PoS区块,才会获得利息,这也增加了网络的健壮性。
其次还有一个担忧,就是当矿工人数降低时,比特币很可能会被一些高算力的人或团队进行51%攻击,如果采用PoS体系,你即便拥有了全网51%的算力,也未必能够进行51%攻击,因为这还要求攻击者持有全球51%的货币量,而这是很难达到的。
现在,我们知道比特币是一个永远不会膨胀的体系了,因为它的货币总量看起来貌似是固定的,但实际上比特币是一个货币紧缩的体系,因为总存在钱包永久丢失的可能,PoS采用类似年利率的方式在一定程度上是可以缓解这个问题的。
不过,到目前为止,PoS算法还没有被比特币采用的迹象。
2.3.3 DPoS股份授权证明算法及分析
股份授权证明机制(DPoS)是一种新的保障加密货币网络安全的算法,由比特股bitshares提出。它在尝试解决比特币采用的传统工作量证明机制(PoW)及点点币和NXT所采用的股份证明机制(PoS)的问题的同时,还能通过实施科技式的民主,来抵消中心化所带来的负面影响。
以比特股为例来说,DPoS机制是让每一个持有BTS(比特股发行的一种加密货币)的人对为整个系统资源当代表的人进行投票,而获得票数最多的101个代表将进行交易打包计算。对此,可以理解为有101个矿池,这101个矿池彼此的权利是完全对等的。那些握着BTS选票的人可以随时通过投票更换这些代表(矿池),但如果他们提供的算力不稳定,计算机宕机或试图利用手中的权力作恶,那将会立刻被愤怒的选民们踢出整个系统,而后备代表可以随时顶上去。从某种角度来看,DPoS有点像美国的议会制度,只不过不是四年一次选举,而是时刻都在选举中。

相关文章
|
22天前
|
机器学习/深度学习 存储 算法
如何评判算法好坏?复杂度深度解析
如何评判算法好坏?复杂度深度解析
24 0
|
25天前
|
机器学习/深度学习 算法 PyTorch
RPN(Region Proposal Networks)候选区域网络算法解析(附PyTorch代码)
RPN(Region Proposal Networks)候选区域网络算法解析(附PyTorch代码)
180 1
|
24天前
|
缓存 算法 C语言
【C++ 标准查找算法 】C++标准库查找算法深入解析(In-depth Analysis of C++ Standard Library Search Algorithms)
【C++ 标准查找算法 】C++标准库查找算法深入解析(In-depth Analysis of C++ Standard Library Search Algorithms)
45 0
|
11天前
|
存储 缓存 算法
深度解析JVM世界:垃圾判断和垃圾回收算法
深度解析JVM世界:垃圾判断和垃圾回收算法
|
12天前
|
存储 算法
【算法与数据结构】深入解析二叉树(二)之堆结构实现
【算法与数据结构】深入解析二叉树(二)之堆结构实现
|
16天前
|
存储 算法
从动态规划到贪心算法:最长递增子序列问题的方法全解析
从动态规划到贪心算法:最长递增子序列问题的方法全解析
16 2
|
1月前
|
机器学习/深度学习 数据采集 算法
Python基础算法解析:随机森林
Python基础算法解析:随机森林
34 0
|
1月前
|
机器学习/深度学习 数据采集 算法
Python基础算法解析:决策树
Python基础算法解析:决策树
34 8
|
1月前
|
机器学习/深度学习 数据采集 算法
Python基础算法解析:支持向量机(SVM)
Python基础算法解析:支持向量机(SVM)
35 0
Python基础算法解析:支持向量机(SVM)
|
1月前
|
算法 Python
Python基础算法解析:K最近邻算法
Python基础算法解析:K最近邻算法
20 2

热门文章

最新文章

推荐镜像

更多