币圈资讯
比特币挖矿原理详解:看懂SHA256与哈希算法入门
大家一起来讨论挖矿的话题, 在市场上有非常多的数字货币是能够进行挖矿这种操作的, 在目前的时间里面, 参与挖矿人数最多的那种数字资产就是比特币, 咱们都比较清楚, 想要去开发一个挖矿程序是需要熟悉中央处理器的指令集、图形处理器的指令集以及图形处理器驱动程序等相关的知识内容的, 各种不同的数字资产它们各自拥有不同的算法形式。
在现在这个时期, 绝大多数的数字货币的开发团队, 他们的主流工作重心, 都主要是在那些应用的开发方面, 而针对挖矿算法本身进行深度开发的情况, 就少得可怜了。通常见到的主流币种, 都会直接拿来市面上已经现成的挖矿算法, 然后仅仅是把内部的参数稍微做一点简单的修改, 紧接着就直接投入使用。
面对这种状况, 非常多从事挖掘工作的矿工群体, 他们至今为止, 依旧并不清楚关于挖矿算法究竟有着什么样的运作原理。接下来, 就让币圈子平台下面的小编这一群人, 来给大家做一个详细的介绍, 去讲讲挖矿算法到底存在些什么样的基本原理。

关于挖矿算法的原理, 这是一个需要我们去了解的具体问题。
比特币的总体实现方式, 实际上是将那些在计算机科学领域里已经存在了好多年的、现有的技术或者概念汇总在一起形成的。在这些整合出来的元素里面, 哈希算法被用得非常广泛, 它几乎涉及到了比特币的方方面面。主要被用到的哈希算法是SHA256和RIPEMD160这两种。
比特币把这两个哈希算法的具体应用结合起来, 弄出了两个专用的函数, 第一个函数的名字叫做hash256, 它是对输入的数据d调用两次sha256来处理, 写法是hash256(d)=sha256(sha256(d))。
第二个函数叫hash160, 它的作用是对数据d先用sha256处理一下, 然后再对这个中间结果使用ripemd160, 整个操作标记为hash160(d)=ripemd160(sha256(d))。在这两个公式当中, 那个字母d就是指代需要进行哈希处理的字节数组。
经过这两套处理流程之后, 分别会生成对应的输出结果, 一种是长度为256位的数值, 也就是等于32个字节大小;另一种是长度为160位的数值, 等于20字节大小。它们表现出来的形式都是16进制的数字。hash256主要用于生成标识符, 比如区块ID和交易ID这些。
而在另一方面, hash160则主要是用来生成比特币地址的。
关于hash160, 目前大家普遍都比较认可这样的答案, 说是ripemd160这个方法能够让最终生成的地址变得更短一些, 可是如果大家仅仅是单独地去跑一遍ripemd160这个哈希的话, 是极有可能存在一些安全上的漏洞的, 所以大家才会选择同时再去用一下sha256这码子事, 以此来起到一个安全加固的作用, 再来说说那个hash256, 它之所以要使用两次sha256这种哈希算法, 其根源其实是来自于对sha1算法的一个考量, 大家晓得, 如果只是单纯地做一次sha1哈希运算的话, 那是存在着被所谓生日攻击这一风险的可能性, 因此当人们要去使用sha1来做运算的时候, 一种相当有效的应对方式就不得不去做两次sha1哈希, 当然了, 其实现在的sha256本身在理论上是不存在那种生日攻击漏洞的, 但是为了防御起见而去特意地使用两次sha256哈希来运算是咋回事?
这纯粹是因为借鉴了一下之前使用sha1时候的那一套思路罢了。
挖矿算法的重要性
开发挖矿程序这事儿, 得把CPU指令集、显卡指令集还有那个显卡驱动全都弄明白。用C++搞开发的时候, 关键的地方还得用上汇编来优化一下。
大多数的虚拟货币的开发团队, 主要是去搞应用的开发, 对于挖矿算法本身的开发, 他们很少去碰, 基本上是拿着现成的挖矿算法过来, 稍微改改里面的参数就行。但是, 如果把挖矿算法开发得好, 这个虚拟货币也不一定就能成功;不过, 要是挖矿算法开发得一塌糊涂, 那这个虚拟货币铁定是要失败的。
很多虚拟货币都是由它们的开发团队发布了相应的钱包软件的, 在最初的那个阶段, 其实只能够依靠使用这种钱包来进行挖矿操作的。可是仅仅过了几天时间, 就有第三方的机构制作出了可以支持CPU进行挖矿的程序了, 当然, 这种做法是需要收取一点手续费的。
再过去了一段时间以后, 又有第三方的人弄出了专门供显卡来使用的挖掘矿程序, 这样的程序同样是会被收取一定比例的手续费的, 甚至有一些开发者是专门把优化这些挖矿程序当作自己的主要工作来的。
挖矿算法主要被分成两类。一类是POW算法, 它需要使用大量的各种硬件资源来支撑计算流程。另一类是POS算法, 它不需要使用大量的各种硬件资源去搞计算, 可是却需要用某种币来参与挖矿活动。每当有新型的新币种出现的时候, 只要是POW算法的, 它们都会宣称自己身上是POW。
凡是涉及POS算法领域的那些操作, 它们的行事作风特别喜欢标新立异, 不管推出什么样的新式算法方案, 只要给弄出来一个新名字, 统统都表示自己不是采用POS这一套机制的。
各种类型的pow算法之间其差异是非常巨大的, 而各种类型的pos算法之间它们的差异却是非常微小的, 这些差异主要只是体现在名字的差别上面。
现在很多人觉得POW算法会比POS更加安全一些, 可是大家要想让网络安全并且稳定下来, 那么全网确认的时间最少都得是90秒才行。
当然了, 其实你也可以把一个数据块给拆分开来, 比如说在出来区块的时候, 你先去把这个块头给弄出来, 等到块头出来了以后, 你再把这块的内容也弄出来, 这样一来呢, 就可以减少全网确认所需要的时间了。
上述内容, 即为币圈子的小编针对挖矿算法到底是个什么原理这一问题, 所作出的具体讲解和说明。目前进行的比特币挖矿业务, 普遍采用的是Sha256d这样的算法机制, 中本聪在当初设计这一套算法的时候, 就已经提出了人人可以参与的挖矿理念。
实际上, Bitcoin的挖矿行为, 最初阶段确实是用钱包来完成挖掘操作的, 后来才逐渐转变为使用CPU挖矿程序, 再接着发展到有了专门用于提取利益的显卡挖矿程序这个环节, 而在二零一二年,还出现了专门的ASIC这种类型的挖矿硬件产品。
其实, 在早期的阶段, 有非常多的山寨币都使用了Sha256d这一种算法, 不过, 自从比特币矿机出现了后, 这些山寨币就因为全网的算力比较低的原因, 所以经常会被攻击到, 这样一来, 这些山寨币就根本无法存活下去了。
