Hashcash

Hashcash

扯蛋

一年多没写Blog了,这一年多从备份大师做到WhatsCall,一亿用户,三千万日活,到最近的X万美金的日入,加班加班地做着后台的开发工作。年少轻狂啊,就喜欢敲代码,但是真的别再把爱好当作职业了,所以还是想着留一手不转金融。

忙到昨晚才抽空看了下区块链到底是什么东西,因为比特币又被炒起来了,2年多前买着0.1个比特币,买了几个莱特币亏得更厉害,都是小钱,现在去操作估计想着卖空了,应该还是亏损中吧,不过当时就是为了留个纪念,也没什么所谓了。

前言

区块链技术里面有个叫 Hashcash 的概念,好吧,直译就叫哈希现金,我更喜欢像 工作证明 这样的描述,至少他的含义就是为了证明自己为了发送这段信息给接收者而作出了无为的工作。

Google一下资料还是蛮多的,但是看完都是看得人一头雾水,可以读读wikipedia,还可以,不过是英文的,嗯。

是什么

所谓的Hashcash,其实就是你要证明自己做了多少运算,本质上是利用了单向信息摘要算法如SHA,去计算出一个带随机数的字符串的哈希值,并且指定哈希值符合一定规律,常规是以一些0开头。

例子:

我要向一个女同学示爱,直接给她说我爱你,这太容易了,

In [1]: import hashlib
In [2]: hashlib.md5('我爱你').hexdigest()
Out[2]: '4f2016c6b934d55bd7120e5d0e62cce3'

为了证明我爱她,我决定要经过一些运算,去证明我为了说出我爱你这三个字而工作过,就像,

In [3]: for i in xrange(100000000):
   ...:     if hashlib.md5('我爱你'+str(i)).hexdigest().startswith('000000'):
   ...:         print i, hashlib.md5('我爱你'+str(i)).hexdigest()
   ...:         break
   ...:     
49562527 000000805a11a6c6d2ea9d865c2b600c

这里经过了四千九百万次的运算,才找到一个带有六个 0 为前缀的哈希值,0是珍贵的,
需要我们经过长时间的运算才能得到6个0,真是上刀下油锅啊。

但是这并不够啊,我有6个0之后,可以把这个结果送给任意一个人,对她说我爱她,这其实也并不能体现我的真心,
所以,我把她的名字加进去运算,得到的000000只能送给她一个人,

In [4]: for i in xrange(100000000):
   ...:     if hashlib.md5('小太阳:我爱你'+str(i)).hexdigest().startswith('000000'):
   ...:         print i, hashlib.md5('小太阳:我爱你'+str(i)).hexdigest()
   ...:         break
   ...:     
17526439 00000089e4d32cd676e164054167310e

In [5]: for i in xrange(100000000):
   ...:     if hashlib.md5('大太阳:我爱你'+str(i)).hexdigest().startswith('000000'):
   ...:         print i, hashlib.md5('大太阳:我爱你'+str(i)).hexdigest()
   ...:         break
   ...:     
4294141 0000006b5c0636074b5482c7509cc811

当我对不同的人讲爱她的时候,我需要重新做大量的运算来获取这6个0,来证明我对她的爱是有努力过的,
如果我要对1000人都说这句话,我就要做1000倍的努力,当然土豪可以买一千台机器,这就是人与人的差距。

综述,所谓的Hashcash就是 工作量证明,证明为了打出这段话,我付出了多少的工作量。

再测试

以下测试消耗本机48秒时间计算。

In [9]: for i in xrange(1000000000):
    ...:    if hashlib.md5('为了打出这段话,我付出了多少的工作量。'+str(i)).hexdigest().startswith('000000'):
   ...:         print i, hashlib.md5('为了打出这段话,我付出了多少的工作量。'+str(i)).hexdigest()
   ...:         break
   ...:     

40541272 000000e8f6d9a36b2605eb88518549ad
发布了57 篇原创文章 · 获赞 13 · 访问量 7万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览