主页 > 以太坊imtoken > 比特币(二)哈希函数和工作量证明

比特币(二)哈希函数和工作量证明

以太坊imtoken 2023-09-04 05:13:25

btc计算难度_btc-e_测验题目难度计算

测验题目难度计算_btc-e_btc计算难度

我们讲到:中本聪在设计比特币的时候,为了鼓励大家记账,他安排了“转账手续费”和“打包奖励”。 谁能将自己的账本打包链接到区块链上,谁就能获得那些奖励。 为了争夺打包权,每个用户必须进行一次“工作量证明”——计算一道复杂的数学题,谁先解决,谁就会得到奖励。 那么这次我们就来说说这个复杂的数学题是什么。

注:本课内容为上期视频的文字稿。 对应视频请见:

免责声明:本人从未持有过任何比特币或其他数字货币,也未接受过任何比特币投资机构的资金。 本文仅从技术角度探讨比特币原理,不构成任何投资建议。 我不鼓励购买任何虚拟货币。

01

哈希函数

以前我们说过,一个班有23个学生,两个学生生日在同一天的概率超过50%。 不管一个人的名字有多长,也不管这个人是什么国籍,他的生日总是由年、月、日组成,生日的长度是固定的。 在计算机科学中,有一种类似于查找某人生日的操作,那就是哈希函数——它可以将任意一串字符转换成固定位数的数字摘要。

测验题目难度计算_btc计算难度_btc-e

哈希函数有两个特点:

首先,无论输入字符串多长,输出字符串长度都是固定的。 例如,美国国家安全局发明了一种哈希算法SHA256,可以将任意字符串输出为256位的二进制码。 而且,如果输入的字符串稍有变化,哈希值就会变得无法识别。

其次,哈希函数的正向计算容易,反向计算非常困难。 例如,我们可以设计这样一个运算:将一个十进制数的每一位上的数的立方和除以256得到余数,然后将其转化为二进制。 这是一个 8 位哈希函数。 给定任何一个十进制数,不难找到哈希值; 相反,给定哈希值,就很难问出原来的数字是多少。

测验题目难度计算_btc-e_btc计算难度

由于哈希值的这一特性,它在计算机科学中得到了广泛的应用,例如,在验证和数字签名等领域。 中本聪在设计比特币时使用的工作量证明也是基于哈希函数。

btc计算难度_btc-e_测验题目难度计算

数字签名原理

02

工作证明

了解了哈希运算之后,我们就可以讲解挖矿的具体过程了。

首先,区块链上的每一个“区块”都有两部分:区块头和信息。 参与挖矿的矿工会读取上一个区块的头部,加上自己收集的账单、打包的时间戳、个人信息、随机数等内容,生成一个字符串。

btc-e_测验题目难度计算_btc计算难度

然后,用户将对这个字符串进行两次 SHA256 哈希运算,找到它的哈希值。

测验题目难度计算_btc计算难度_btc-e

中本聪在《白皮书》中设计:只有那些计算出的哈希值都小于某个值(从二进制数来看,即前几位都是的哈希值0) 符合条件。 如果你找到这个哈希值,你就有资格将你自己的包裹链接到区块链上。

btc-e_测验题目难度计算_btc计算难度

计算成功,顺利打包新区块

此时,你给一个字符串和对应的哈希值,广播给大家,其他人检查确认你的结果,这样你就可以把你的数据上链了。 而你刚刚计算出来的哈希值就是新的数据块头。 在下一轮的竞争中,全世界的矿工都会读取你的数据块头,加入到自己的字符串中,疯狂进行。 一轮散列。

但是,由于哈希值无法逆向计算,矿工如何得到一个前n位全为0的哈希值呢? 没有别的办法时,只有蛮力。 即:每个用户不断改变自己字符串中的随机数,0、1、2、3……每次改变随机数后,都会对字符串进行两次哈希运算和一次校验,直到尝试得到out 即合格的随机数和哈希值。 它与暴力破解密码的过程非常相似。

btc计算难度_测验题目难度计算_btc-e

需要指出的是,每个矿工在挖矿的时候,题目的难度是不一样的。 这是因为虽然每个矿工都读取了区块链上最后一个区块的头部,但是每个矿工记录的账单信息、时间戳、个人信息等都是不同的。 因此,要满足哈希值小于某个值的条件,需要给出的随机数的大小也是不同的。 有的人幸运,有的人不幸运btc计算难度,所以计算的时间也是有长有短。 但平均而言,谁的算力大,单位时间内尝试次数多,谁就更有可能找到正确的哈希值,成为幸运矿工。

测验题目难度计算_btc-e_btc计算难度

北美的一个比特币矿场

为了更高效地进行SHA256计算,人们设计了专用芯片ASIC矿机和GPU矿机。 与我们常用的CPU相比,它们更擅长这种低级、高重复性的计算。 又因为用电量大,所以大型矿山都建在水电站旁边等电价相对便宜的地方。

测验题目难度计算_btc计算难度_btc-e

CPU和GPU架构不同

03

难度设置

中本聪在设计比特币时,为了保证比特币不被垃圾邮件,要求每 10 分钟出现一个新区块。 但是,世界上的矿机越来越多,计算速度也越来越快。 如何保证这个时间不变? 这就涉及到难度设置的问题。

我们刚才说了:SHA256算法可以将任意字符串转换成二进制数,其中每一个不是0就是1,每个可能的概率都是50%。 那么,如果要求一个哈希值的前n位为0,则概率为:

btc-e_测验题目难度计算_btc计算难度

另一方面,需要2n次平均计算才能产生一个前n位全为0的hash值。我们可以根据全球矿机的算力来确定数学计算的难度,保证打包速度不会太快。快或太慢。 如果挖的人太少,这个n就小一点,这样计算起来更容易; 如果挖矿的人太多,n 就会增加,使问题变得更加困难。

btc-e_btc计算难度_测验题目难度计算

比特币平均算力趋势(来自QKL123)

例如,全球有10000台矿机,每台矿机的计算速度为14T/s——每秒可以进行14T(1T≈1012)次哈希运算。 那么,全球矿工在10分钟(600秒)内可以进行的哈希计算次数为:

btc-e_测验题目难度计算_btc计算难度

如果想让10000台矿机在十分钟左右计算出结果,难度n应该设置为满足:

测验题目难度计算_btc-e_btc计算难度

因此,此时挖矿难度应设置为n=66。 第一个改变随机数,使自己区块的哈希值前66位全为0的人,就可以成功挖矿。

测验题目难度计算_btc计算难度_btc-e

2020年1月2日,难度达到13.80T(来源BTC.com)

这一次,我将介绍比特币挖矿的具体过程。 它根据计算机的计算能力动态调整问题的难度。 每十分钟产生一个获胜者并打包一个区块。 但是,我们还有很多问题没有解决btc计算难度,比如:比特币交易中如何防止双重支付? 如何防止假冒? 关于这个问题,我们下次再为大家介绍,敬请关注比特币(三)比特币是如何防伪的?

btc计算难度_btc-e_测验题目难度计算

btc计算难度_btc-e_测验题目难度计算

1、

4.

7.

8,

9、

测验题目难度计算_btc-e_btc计算难度

btc计算难度_btc-e_测验题目难度计算

美体教室

美缇课堂致力于打造优质的中学理科课程(数理化生物),致力于让精品课程服务更多学生。 教师全部毕业于北京大学、清华大学、北京师范大学等名牌大学,并拥有十余年国内一流中学的教学经验。 目前,网校已累计上千课时的直播课、专题课、公开课、讲座。 只需轻轻一按,您与名师的距离就为0。点击此链接,了解更多资讯及电教课程:

btc计算难度_测验题目难度计算_btc-e