准备好纸和笔,人肉计算比特币:每天0.67哈希值

在这篇文章中,我们一起来看一看用纸和笔来人肉“挖”比特币的难度到底有多大。

实际上,用于挖矿的SHA-256算法其实还算是比较简单的了,而且可以手工计算出来。毫无疑问,这个过程肯定要比GPU或CPU的速度慢上N倍,而且还会让人感觉有些不切实际。但是自己拿纸和笔手工完成一次挖矿算法的计算,确实可以让你更加深入地了解整个算法的工作机制。

下图显示的是我们用纸和笔手工计算的一轮SHA-256:

挖矿过程

挖矿是比特币系统整体安全的一个关键部分,挖矿的思路如下:比特币矿工将一系列比特币交易组织到一个区块中,然后重复执行N次加密散列计算(哈希计算),直到发现了某个特殊的哈希值为止。此时,区块已经成功被“挖”出,并且成为了比特币区块链的一个部分。实际上,计算任务本身是没有什么意义的,但由于发现一个成功的区块非常困难,这样就可以确保他人无法接管比特币系统了。更多关于挖矿的内容,请参考这篇文章【阅读原文】。

一个加密散列函数可以接收大量输入数据,并输出一个不可预测的输出值。对于比特币来说,它所使用的哈希散列函数名叫SHA-256,为了提供额外的安全保护功能,比特币使用了两次SHA-256函数,也就是所谓的双重SHA-256。

在比特币系统中,一次成功的哈希是以足够多的0开始的。就像你在日常生活中很少会见到以多个0结尾的手机号或者身份证号一样,我们也很难找到哪个哈希值是以多个0起始的。但是在比特币系统中,一切都是以指数倍形式增加的。目前,一次成功的哈希必须以大约17个0起始,所以哈希计算的成功率大约为1/1.4x1020。换句话说,寻找到一个正确的哈希值其难度比大海捞针还要难。

下面这张图片显示了比特币区块链中的一个区块以及相应的哈希。下图中,黄色标注的哈希字节用于生成区块哈希。大家可以看到,计算出来的哈希是以足够多的0开始的,而现在就已经挖矿成功了。

比特币所使用的SHA-256哈希算法

SHA-256哈希算法的输入数据块为512位(64字节),结合加密数据,并生成一个长度为256位(32字节)的输出值。SHA-256算法由64次相对简单的重复计算组成,下图显示的是其中一轮计算,其中以8个4字节数据作为输入,从A到H,执行一系列计算之后,并生成新的A-H的值。

具体的计算过程请参考中本聪的比特币白皮书【阅读原文】。

人肉挖矿

我们在下面这个视频中给大家演示了如何使用纸和笔人肉计算刚才所描述的SHA-256哈希计算。我自己实现了挖矿过程中的一轮哈希计算,整个过程大约花费了16分钟左右的时间。视频地址【阅读原文】

下图显示的是比特币区块的最后一轮哈希计算,计算出来的结果用黄色部分标注出来了。末尾部分的多个0表示这是一次成功的哈希计算。

硬件挖矿

SHA-256散列计算中的每一个步骤都可以在数字逻辑(简单的布林运算和32位求和)中轻松实现,因此自定义的ASIC芯片可以在硬件上高效地实现SHA-256算法,并且能够在一块芯片上并行地进行数百轮哈希计算。下图显示的是一块挖矿芯片,它的计算速度为2-3 Ghash/秒:

相比之下,莱特比、狗币以及类似的山寨币所使用的是scrypt哈希算法,而这种哈希算法是很难在硬件上实现的。它需要在内存中存储1024个不同的哈希值,然后以一种不可预知的方式来进行组合计算,并生成最终的值。

因此,scrypt哈希算法跟SHA-256相比,它将需要更多的电路板以及存储器。你也可以从挖矿速度和硬件上了解到,毕竟挖这些山寨币的速度(scrypt)可比挖比特币(SHA-256)的速度要慢好几千倍。

总结

SHA-256算法其实是非常简单的,简单到足以手工计算出来。但是,用于对比特币交易进行签名的椭圆曲线算法却是很难手工进行计算的,因为它将会涉及到32字节整数的乘法运算。进行一轮SHA-256哈希计算用掉了我16分45秒的时间,根据这个速度来看,对一个完整的比特币区块(128轮)进行哈希计算将需要连续计算1.49天,即每天计算0.67哈希。相比之下,当前的比特币挖矿硬件每秒可以进行好几兆的哈希计算,这可比手动计算要快好多好多。毫无疑问,比特币人肉挖矿肯定是不切实际的。

后记

有一个Redit的读者问了我关于体能消耗的问题。其实整个过程并不需要消耗太多的体力,假设人体静息代谢率为1500大卡每天,手动计算哈希所消耗的能量大约为1000焦耳/hash。而硬件挖矿的平均消耗为1000兆哈希/焦耳。这也就意味着,人肉挖矿的能量成本是硬件挖矿成本的10^16倍左右。考虑到食物问题的话,一个普通的甜甜圈价格为0.23美金,能量为200卡路里。电费大概是0.15美金/千瓦时,因此每计算一个哈希的成本比硬件挖矿的成本要高出6.7x10^8倍。

很明显,我并不打算依靠人肉挖矿来赚钱,而且我还没把计算所需的纸和笔的成本算进去呢。

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2017-12-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏魏晓蕾的专栏

【区块链】An Overview of Blockchain Technology

区块链技术综述:体系结构,共识算法和未来趋势

77510
来自专栏KuPay

KuPay:保障数字钱包安全的神秘力量-图片哈希

几乎都知道,区块链的关键技术组成主要是:P2P网络协议、共识机制、密码学技术、账户与存储模型。而这些技术中,又以密码学与共识机制这两点为最核心。其中区块链的安全...

1432
来自专栏崔庆才的专栏

区块链入门教程

区块链(blockchain)是眼下的大热门,新闻媒体大量报道,宣称它将创造未来。可是,简单易懂的入门文章却很少。区块链到底是什么,有何特别之处,很少有解释。 ...

3374
来自专栏极客编程

比特币UTXO模型介绍 原

如果你曾上过BlockExplorer观察自己的比特币收入状况,你是否曾经被搞的一头雾水呢?这正是因为比特币所使用的交易模型并非我们直觉上以账户为基础的,而是一...

892
来自专栏华仔的技术笔记

POW共识机制及演化

2966
来自专栏程序员宝库

区块链入门教程

文章作者:阮一峰(http://www.ruanyifeng.com/) 原文链接:http://www.ruanyifeng.com/blog/2017/12...

3206
来自专栏区块之恋

区块链学堂——闪电网络是个什么鬼(技术篇)?

3304
来自专栏奇点大数据

[区块链]入门教程

区块链(blockchain)是眼下的大热门,新闻媒体大量报道,宣称它将创造未来。 可是,简单易懂的入门文章却很少。区块链到底是什么,有何特别之处,很少有解释。...

3487
来自专栏IT技术精选文摘

区块链入门教程

现在市面上文必提区块链,这玩意有人说这是骗子的新伎俩,有人说这是未来的颠覆性技术,更有人说基于区块链技术的IM社交产品可以干倒某信和鹅厂(哈哈)。虽然现在各种...

1253
来自专栏Renderbus云渲染农场

GPU挖矿和GPU渲染农场有多大区别? -Renderbus云渲染

区块链是一个由基于比特币协议的所有参与节点所组成的系统的共享交易记录数据库,也就是公有账本。挖矿就是添加交易记录到该公有账本这一过程,挖矿由矿机通过运算完成。一...

1752

扫码关注云+社区

领取腾讯云代金券