小编:记得
来源:IPFS原力区
散列(hash)函数是区块链所利用的技术中的最为基础的部分了,也是非常重要的部分之一。一个好的散列函数在一个密码体系中的地位也十分重要。Filecoin在散列函数的采用上也十分大胆。其中Posaidon就是比较新的散列算法。
散列的基本概念
IT人士对于散列(Hash)再熟悉不过了。Hash表是一种基本的数据结构,而这种数据结构是依靠hash函数来进行索引和访问的。由于Hash函数在寻址上具有很高的效率上的优势,算法复杂度基本上是O(1)。因此,Hash函数被广泛应用与数据库和其他数据处理系统中。
简单来说,散列函数就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值。通常输入的数据长度要大于运算得出的散列值,同时因为这个散列值一定程度上可以代表原数据,因此也被成为摘要。工程师比较熟悉的md5就是使用最为广泛的hash函数,一般用来验证数据的完整性。
因为散列值是一个固定长度,比如说md5sum的输出是128位,也就是16字节,那么这个散列值的所有可能性就是2^128。这个范围和IPv6的地址范围差不多。
一个hash函数可以由以下特性来进行评估:
均匀度(Uniformity):前面提到了一个散列值的空间,那么一个hash函数对于一个输入的运算结果落到这个散列值空间中的概率最好是均等的。这样可以降低碰撞率(不同的输入得出相同结果的比率)
效率(Efficiency):hash函数本身的计算复杂度也是一个考量因素。在很多场合,要求快速响应,因此最好计算简单。但是太简单的hash函数在均匀性上可能不理想,因此这里需要考虑一些权衡
确定性(Deterministic):对于固定的输入,输出固定。这也是一般函数的特征
用于密码学的散列函数
对于区块链从业者而言,很多时候使用hash函数的场合并不是用于索引或检索数据(尽管这种情况也很普遍),通常可以看见的是用来进行单向计算和验证。比如说在比特币中采用SHA256来进行选举运算获得出块权,以及采用SHA256和RIPEMD-160来从私钥计算公钥和地址。
除了hash函数的一般性特性只要,用于密码学的hash函数有更严格的要求:
单向性:从数据求散列值很容易,但不能倒推。或者倒推十分困难,理论上不可行
无相关性:要求在输入有一点点改变的情况下,要产生完全不同的输出。这样,从散列值完全不能看出数据之间的相关性
唯
最开始的数据互换协议当属BitTorrent,这也是大部分区块链技术节点中间完成沟通交流的基本协议,自然IPFS也务必必须能完成p2p的数据互换协议,IPFS在BitTorrent的根基上完成了自身BitSwap协议,该...
NFT作为区块链异构经济通证概念的鼻祖,经历了多年的沉寂,20年后终于开始接受众多应用,迄今为止,NFT已经接待了众多互联网科技巨头和文化界,众多布局应用正式启动积极发展区块链加密金融。随着NFT作品的陆续上线和交易,N...
2018年,IPFS该协议风靡矿区,掀起了疯狂的采矿浪潮,各种IPFS矿机到处遍地开花。由于主网上线的一再延迟,挖掘算法已经很久没有公布了。矿机和代币只是期货,不能真正挖掘。模仿和冒充他们项目的门槛很低,市场投资者很难。...
Axie Infinity是在以太坊区块链技术上搭建的,受神奇宝贝启迪的数据宠物世界,所有人都能够根据娴熟的游戏游戏玩法和对生态体系的奉献来得到代币奖赏。为了更好地建立更强的客户体验并提升可扩展性,Axie Infini...