首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

区块君带你了解区块链-之再谈哈希

大家好~我是区块君,上一章给大家讲了下区块链和去中心化的关系,这篇和大家分享一下哈希函数的特性

如果说区块链的数据结构是一棵树的树干的话,那“去中心化”就是培育这颗树的土壤。树干有了,土也有了,接下来就要画树枝了。所以今天我就来给大家介绍区块链里面最重要的一棵树枝——哈希函数(hash function)。

第二篇我在介绍数据结构的时候(链接在文末),我们提到了哈希表的概念。哈希表的目的就是为了提高搜索效率,他的原理相当于给每个区块设了标签,并且用一个小本子记录下每个区块的位置。但是请大家记住,区块链的去中心化本来就是去除人为的干涉,所以人为地设定标签是不可取的。但是我们如何让计算机自动给区块分配标签呢?答案就是用一个函数。我们知道函数的目的就是给输入和输出建立一组映射关系。

我们可以把当前区块里面存放地数据打包起来作为函数的输入x,它的输出f(x)就可以用来作为标签,而这个标签直接指向了这个区块在计算机里存储的地址。这个函数在计算机里就叫哈希(hash).

举个简单的例子,我这里有100个箱子,并列排成一排。现在我有1,2,3,4这四个数字,我想存放在这100个箱子里。假设我们的哈希函数为f(x)=x. 这就相当于这四个数字的标签就是我们要存放的数字本身,即1,2,3,4。于是1就是放在第一个箱子里,2就放在第二个箱子依次类推。

如果我现在有个请求要查找数字4,那根据我们设定的哈希函数,就立马可以知道数字4一定在第4个箱子里面。那如果现在要查找数字5呢?那我们就去第5个箱子里面去翻,一打开一看发现什么也没有,我们就知道5是找不到的。乍一看这个函数是可以实现我们的快速查询的需求,但其实这里有两个很致命的问题:

第一,如果我们要存放数字101根据设定的函数,我们就要吧它放在第101个箱子里,可是在场场地有限,只能存放100个箱子。所以这个函数是没有办法满足我们的要求的。

第二,如果我们要查找数字0.5这个世界上可不存在第0.5个箱子的说法,所以这个要求也没法实现。

总结下来,要成为一个合格的哈希函数,必须要满足这两个条件: 1. 输出必须为整数;2. 输出必须控制在一个有限范围内。

其实哈希函数你也可以看做是一种编码方式,你无论把什么数据放进去,它都能转译成一个整数。我们真实的区块链应用里,这个哈希函数叫做SHA256。这是一个很吊的函数,曾经被用于军方的编码。这个函数除了满足上述的两大条件以外,它还具备以下几点特征:

第一,不可逆

SHA256这个函数找不到逆函数,也就是说跟具体它的输出,我没法根据一个公式把对应 的输入算出来。除了一个个数字去试别无他法。而这个函数的输出范围是在1到2^256范围内,数量级相当于宇宙中所有粒子的总数。可以想想如果要把它破译出来,工作量该有多大。

第二,“一一对应“的映射关系

这相当于,我们给定一个输入,无论用这个函数运行多少次,输出都是恒定的。相反,如果我改变了输入,它的输出必然会改变。但是这里我加了双引号,是因为从理论上来讲,输入的改变还是有可能无法改变输出,只是这个可能性极低,几乎可以忽略不计。这个特性很重要,因为它保证了区块里的数据很难被篡改。如果黑客一旦去篡改,这个函数输出的标签值就会改变。根据我第一章讲的链表特性,这个标签作为区块地址需要和上一个区块连接在一起的,在这种情况下明显就连接不上了。所以网络里的每个计算机显然会否定这种恶意的篡改请求。

关于区块链的技术章节就讲到这里。根据一些反馈,关于希望区块君开个脑洞来谈谈区块链的未来。不如我们思考一下:

未来有一天人脑是可以直接连上网的,等到那一天计算机的人工智能也许已经达到了跟人类匹敌的智慧。这时候现实生活中做的决策也许不仅仅是人类来完成,我们可能需要高度智能化的计算机也参与进来。但是同时我们对这种计算机也是非常警惕的,因为按照这个趋势人工智能超过人类的智力是早晚的事。如何在利用计算机智能的同时又可以去限制它呢?区块链技术就是最好的制衡工具。通过物联网,计算机和人脑可以同时连接到去区块链中心化的网络里。计算机和人脑作为等同的个体都可以对某个重大决策进行投票。真正因为这个去中心的特性,我们才不需要把这个投票机制交给第三方来托管,全世界的每台矿机都会对投票进行验证,从而达到人类与人工智能之间的相互约束与制衡。

区块君:现从事某著名数字货币联合创始人,之前为花旗集团信用衍生品交易部门,负责CVA,CCAR项目的技术总监.

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180219G0B22W00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券