币圈资讯
比特币挖矿原理:一文看懂矿工如何用算力维护区块链
你可能已经听说过加密货币比特币了, 可能也听说过一个和这种加密货币有关系的名词, 就是挖矿, 简单来说呢, 加密货币挖矿就是矿工或者个人利用自己手里的设备去做支持区块链网络的工作, 这个过程叫做获得加密货币奖励的过程。

Onenote上的小型P2P网络草图
区块链这种东西, 它实际上就是一种分布式的、记录在网络各个节点上的或者说是分布式账本的一种形式, 主要是用来把人那些在网络上面发生的行为全都给记下来。
所以呢, 如果是针对像加密货币那种基于区块链网络而言的话, 那么这个区块链所承担的功能作用, 说白了那就是要把网络上个人之间进行的交易情况全都记录下来。
在这篇文章里, 我会拿比特币当作例子, 来解释一下挖矿背后的那些意义。
我们来把话题重新拉回到关于矿工所从事的工作这个方面。如果要想让矿工能够获取到比特币的这种奖励性质的收益, 那么他们所需要去完成的、可以被简化称作工作的行为, 其实主要就是针对记录在比特币那个分布式账本或者说就是区块链上面发生的各类交易数据, 来执行检查以及确认的操作程序。
在验证的时候, 挖矿的工人会去执行好几个检查的动作, 这样做是为了确保分配来的交易是合法的, 还有交易的参与者不会支付相同数量的加密货币两次, 比如说当Joe给Brandon发送了12个比特币, 然后Brandon试图给Tony发送7个比特币和Max 8个比特币, 这种情况就会被认为是一笔欺诈交易, 因为数字上面的情况是7+8>12。
我这边刚刚提到的那个情形, 就是一个关于双花问题的例子, 具体来说吗, 是Brandon这个人, 他试图去花费同一个比特币两次。
矿工们已经对0-4兆字节之间数量的比特币交易完成了验证工作, 这个数据范围大致对应着1500到3000笔具体的交易数量, 它等同于一个区块近似最大尺寸的体量。
至此, 他们已经在获取比特币奖励这一过程中, 顺利完成了相对容易的那一半任务。不过从整体流程来看, 在正式进入上述验证环节之前的那些准备任务, 其复杂程度要高得多, 正是这些前期的工作使得矿工具备资格去开展后面的交易验证活动。
挖矿业的运气部分
咱们得先搞清楚怎么处理那串字符序列的计算, 这玩意儿就被人叫做创建工作证明(Proof of Work)。创建工作证明(Proof of Work)这个活儿, 最费算力的。创建工作证明(Proof of Work)为啥要叫这个名字呢? 等后面章节里我再来慢慢解释这个事儿。
你要想弄明白工作证明(Proof of Work)这个算法是怎么回事, 那你得先把区块链里面的那个“哈希”一词先搞熟悉。
在网络检测区块链中的区块篡改方式时, 主要依靠的是哈希值。所谓哈希值, 是由区块里面的信息所定义的那个数字和字符组成的长字符串。通过把数据放进哈希函数里面进行处理, 就能产生一个针对当前特定输入情况的序列。像比特币使用的SHA-256算法就是这样一种情况。
这意味着要是输入的數據哪怕只是改变了一个字符, 那么最终输出的那个哈希值也就完全变了。除此之外, 哈希是一种能够进行加密操作却不能进行解密操作的结果形式。所以, 它没办法用来还原出原始的原始数据内容。它只能作为一种手段, 用来验证作为哈希的输入数据是否和之前相同。
在完成工作证明也就是Proof of Work这个任务的时候, 需要让矿工去执行运行哈希算法的动作。这样做是为了去"猜测"出一个对于问题而言比较合适的正确答案。
对于比特币区块链网络来说, 矿工必须先去做一件事情, 那就是创建一个哈希值, 这个哈希值要是符合一定的要求才行, 然后这个符合要求的哈希值才会被称为“目标哈希”。
可以猜测到, 必要的信息就存在于新区块的区块头中, 以便了解目标哈希是什么。这些信息具体包含: 区块版本号, 时间戳, 前一个区块的哈希值, 以及目标哈希值。

onenote上的猜测过程草图
目标哈希这种答案, 它其实是由前一个区块的哈希值、还有现区块的交易数据, 再加上零到四千二百九十四万九千六百七十六这个整数(大家简称它为nonce), 然后把这些东西全部放入哈希算法里面, 最后生成就成了。
如果得出的结果和那个目标哈希对得上号的话, 这个区块就会被加到区块链里面去。谁要是第一个把交易验证完了, 还找到了那个需要添加到区块哈希里去的nonce值, 那么这个人就能拿到比特币的奖励了。不然的话, 他们就得一直不停地尝试, 好去找出一个符合要求的有效数值来。
因为哈希算法这个东西, 它具有随机性, 所以需要, 我们来不断地做一些随机的猜测工作, 目的就是, 把那个能够符合目标哈希条件的数值, 给它找出来。

来源:Investopedia
虽然现在的人想要找到那个叫做nonce的东西, 已经变得非常艰难了,而且在这同一个网络上面, 还有超过一百万元的其他的个体在跟你进行竞争, 所以导致的是一个设备去获得比特币奖励的这种几率, 就跟中彩票那种几率是非常相似一样的, 因此, 你是可以通过去提高处理的能力或者说是通过使用多台这样的设备这种措施, 来去获得更快的哈希速率的, 它的单位是包括有KH/s、MH/s、GH/s这些内容的。
我们可以把这个“Hash-rate”解释为一个东西, 或者一组设备, 来计算数字和验证交易的速度到底有多快, 它其实就是衡量计算能力的一个标准。
共识机制
在比特币区块链这类去中心化的点对点网络之中, 是不存在中心这个主要人物的存在的, 所以只能是通过依据不同的共识机制来进行决策的运作方式来进行操作, 而共识机制在实现交易验证这一功能的同时, 实际上也就确定了挖矿行为所指向的最终目的是什么。

来源:维基百科
众所周知, 共识机制存在多种不同的类型, 不过它们最终要完成的那一个相同的目标, 就是要核实一下, 并且要保证那些被记录下来的数据的真实性, 同时也要保证这些数据的完整性, 这个话是从Tech in Asia上面引用过来的意思。
当下社会里面主要存在着三种主要的机制, 一种是叫做工作证明, 英文是Proof of Work, 第二种叫权益证明, 还有一种叫权力证明, 至于这篇长篇幅的文章里头, 本人会把注意力集中在那个叫做工作证明也就是Proof of Work的操作方法方面去进行详细的讲解。
谈到挖矿, 这件事对工作证明(Proof of Work)模式的工作原理做出了总结。在第一步中, 个人必须先创建一个工作证明(Proof of Work)。
完成这一步之后, 他们通过验证比特币交易来确保区块链里的历史记录是真实的。不过, 在进行交易验证之前, 让我们先深入分析一下工作证明这种机制到底是为了什么目的才存在的。
工作证明(Proof of Work)的历史和目的
这种工作证明(Proof of Work)的想法, 早就在1993年那会儿, 就已经冒出来了。它是由Cynthia Dward和Moni Naor提出来的。他们在一篇论文里提到了这个事, 这篇论文的名字叫
在那篇论文之中, 详细地解释了怎么去阻止垃圾邮件的不同方法。这篇论文的核心重点在于提出一种全新的概念, 这种概念的运作方式是依赖于计算能力的使用, 其最终目的则是为了实现电子邮件的发送功能。
比如说, 你要是打算通过电子邮件这种途径给我递送一句话出去的话, 那你就得去拿出证据来, 表明你单单是为了给我发这一句话这一个行为, 是实实在在地花掉了相当于三十秒时长的这种计算资源的。
因为现在这个世道上的计算机跑得那叫一个飞快, 所以在这种情况下头, 像那些毫无用处的垃圾邮件、垃圾信息、还有那些没用的交易数据之类的东西, 它们就成了一个特别让人头疼的大麻烦了。
可是, 要是给每一个单独的操作过程都设置上一个所谓的用工价格钱的话, 那么上述提到的那些垃圾信息, 就能被大幅度地削减掉从而变成很少很少的。

在onenote上验证勤劳的门钥匙例子
说穿了, 就是那个叫作“prover”的家伙, 向那个叫作“vercker”的家伙去证明, 自己在一段特定的时间里面, 确实花了一定的算力。后来时代往前走了, 比特币的那个发明者, 就是大家常说的“中本聪”, 他去改了改那个让矿工去出块的想法, 把那个比较难搞的部分给调整了一下。
其他人在网上想要对它进行验证, 看它到底是不是真的符合那个目标哈希值, 这个过程是十分的简单的。因为他们所要做的仅仅是把所需的数据输入到SHA-256算法里面去进行处理就可以了。
通过这种工作量证明系统, 区块链这样的系统就可以得到安全保障, 并且建立起一套验证共识, 因为真正用来验证区块的, 是那些投入了巨大计算能力的设备, 这就为整个网络提供了一个去保持公平和诚信的经济理由。
我们要怎么样才能够完成这样的操作呢。
打个比方来讲, 一旦出现欺诈性交易, 并且该交易得到了批准, 用户就会表现出犹豫不决的态度, 进而转而去使用其他的加密货币, 同时导致价格降低。从经济学的角度来分析, 矿工们就是负责比特币生产的群体, 他们会因为价格的下跌而不感到满意。
与此同时, 只有那些控制了足够数量的矿工的节点, 才拥有足够的计算能力来触发这种欺诈性的验证过程。因此, 矿工们也就会把自身工作的动机转向于保护正常的交易行为之中去, 目的在于确保币种的价格不会发生大幅度的下跌情况。
工作证明(Proof of Work)机制的劣势
虽然, 一些规模最大的加密货币, 像比特币、以太坊这类, 在工作证明这个机制的采用上, 是有所使用的。但是, 这种情况的存在, 并不等于说这个工作证明系统, 它就是处于最效率的位置的, 更不意味着它就属于最安全的那个类型了。

