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



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


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

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


        一个加密散列函数可以接收大量输入数据,并输出一个不可预测的输出值。对于比特币来说,它所使用的哈希散列函数名叫SHA-256,为了提供额外的安全保护功能,比特币使用了两次SHA-256函数,也就是所谓的双重SHA-256。
       在比特币系统中,一次成功的哈希是以足够多的0开始的。就像你在日常生活中很少会见到以多个0结尾的手机号或者身份证号一样,我们也很难找到哪个哈希值是以多个0起始的。但是在比特币系统中,一切都是以指数倍形式增加的。目前,一次成功的哈希必须以大约17个0起始,所以哈希计算的成功率大约为1/1.4×1020。换句话说,寻找到一个正确的哈希值其难度比大海捞针还要难。
       下面这张图片显示了比特币区块链中的一个区块以及相应的哈希。下图中,黄色标注的哈希字节用于生成区块哈希。大家可以看到,计算出来的哈希是以足够多的0开始的,而现在就已经挖矿成功了。
比特币所使用的SHA-256哈希算法
       SHA-256哈希算法的输入数据块为512位(64字节),结合加密数据,并生成一个长度为256位(32字节)的输出值。SHA-256算法由64次相对简单的重复计算组成,下图显示的是其中一轮计算,其中以8个4字节数据作为输入,从A到H,执行一系列计算之后,并生成新的A-H的值。
总结
       SHA-256算法其实是非常简单的,简单到足以手工计算出来。但是,用于对比特币交易进行签名的椭圆曲线算法却是很难手工进行计算的,因为它将会涉及到32字节整数的乘法运算。进行一轮SHA-256哈希计算用掉了我16分45秒的时间,根据这个速度来看,对一个完整的比特币区块(128轮)进行哈希计算将需要连续计算1.49天,即每天计算0.67哈希。相比之下,当前的比特币挖矿硬件每秒可以进行好几兆的哈希计算,这可比手动计算要快好多好多。毫无疑问,比特币人肉挖矿肯定是不切实际的。


本文转载于 freebuf.com
转载请注明本文链接: http://www.mayidui.net/t1596.html

白衣红客 蚁侯 沙发

2018-01-12 15:25

太高深,还是不懂
转载请注明本文链接: http://www.mayidui.net/t1596.html

mrx 蚁神 板凳

2018-01-14 13:12

厉害了,人脑计算比特币
转载请注明本文链接: http://www.mayidui.net/t1596.html

l5768622 蚁神 地板

2018-01-14 14:07

66666666
转载请注明本文链接: http://www.mayidui.net/t1596.html

xiaoyingkm 蚁神 4楼

2018-01-26 23:28

厉害了
转载请注明本文链接: http://www.mayidui.net/t1596.html

5555599999 蚁阔 5楼

2018-04-11 20:53

看不懂
转载请注明本文链接: http://www.mayidui.net/t1596.html

夜雨生倾 大版主 6楼

2018-12-24 21:22

当然了,比特币挖矿解方程不一定要用到计算机也可以能用纸笔算一个解出来的
转载请注明本文链接: http://www.mayidui.net/t1596.html
游客
登录后才可以回帖,登录 或者 注册