风险提示:理性看待区块链,提高风险意识!

比特币挖矿算法是什么原理?

3个回答

征途车行-小伟8星评价

2020-09-21 21:20:54

比特币挖矿算法是什么原理?

比特币作为最早的区块链系统,其挖矿算法采用的是SHA256 散列函数,该函数属于SHA2系列。比特币的挖矿算法过程很简单:

(1)矿工收到用户的交易信息后,首先验证,然后构造交易的默 克尔树,得到一个默克尔树根哈希值,打包进区块头中。对于矿工来 说,最优的选择就是先打包手续费高的交易,这样才能保证其利益 最大化。

(2)填充区块头,组成80个字节的比特币区块头。

(3)将80个字节的区块头信息进行双SHA256运算,得到一个32 字节的哈希值。之后判断得到的结果是否小于当前区块的难度值, 如果已达到,则该区块就是合法的区块。矿工把它加入到主链中,之后开始计算下一个区块。如果不小于当前区块难度值,则继续更换 区块头中的随机数值,重新对区块头进行双哈希运算。

竹泓7星评价

2020-09-20 21:25:49

比特币采用POW算法进行挖矿,POW算法全称Proof of Work,工作证明。这就是说你的收益取决于你对区块链做出的贡献,也就是我们在挖矿时的有效工作,换句话来说,你的工作效率和效力越高,你的收益就越高。应用于挖矿的区块链技术来说,挖矿时的工作效率越高,所获得的数字货币就越多,不少的主流数字货币都是采用这种模式的。

有梦就去追10星评价

2020-09-11 21:31:05

如果你百度/谷歌搜索 比特币挖矿的原理的话,都会给你说是计算一个复杂的数学问题而已,但是这么说的话太笼统而且也太简单。

采矿引擎如何工作这是一个重要的知识点,所以我们需要了解一些密码学知识和哈希算法相关的知识,才能知道挖矿的基本原理。

哈希/散列介绍

单向加密人类能够理解的输入,例如 Hello World ,并将其扔到某个加密函数(即所谓的复杂的数学问题),加密函数的算法越复杂,逆向工程就越困难。

例如一个 SHA - 256 的例子,网站(http://tool.oschina.net/encrypt?type=2)可以很快的计算散列值,让我们来散列 “Hello World” 看看会得到什么结果:

image.png

不管你试验几次都会得到一样的散列值,在编程中这种被称之为幂等性。

加密算法的一个基本特性就是,它们很难通过逆向工程来得到明文结果,但是十分容易验证他们的加密结果,例如这里的 “Hello World” 很难通过逆向工程得到他的原明文结果,比特币采用的是 Double SHA-256 也就是将明文通过 SHA-256 计算过一次之后,再拿 SHA-256 针对散列值再次进行计算,在这里我们只使用 SHA-256 来进行加密。

工作证明

比特币通过让参与者散列随机的字母与数字的组合,直到计算出来的散列包含前导 0。

例如我们计算 886 的散列值可以得到如下结果:

000f21ac06aceb9cdd0575e82d0d85fc39bed0a7a1d71970ba1641666a44f530

它返回了 3 个 0 作为前缀的散列值,但是我们怎么知道 886 计算出来的散列结果产生了 3 个 0 呢?

答案是我并不需要知道。。。我需要知道矿工给我的散列值前导有几个零就好了,并不需要复杂的算法来验证整个散列值的有效性。

比特币则稍微复杂一点,它每隔 10 分钟生成一个新的区块,新区块的散列值的难度它可以动态调整,就类似于 CLR 的 GC 一样,它可以根据目前挖矿的人数来进行难度动态调整,如果挖矿的人多的话,则调高难度,少则调低。